AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zufallszahl mit Kommerstellen

Ein Thema von daNiii · begonnen am 7. Mär 2009 · letzter Beitrag vom 9. Mär 2009
Antwort Antwort
Seite 2 von 4     12 34      
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:44
Vielen Dank!
ihr müsst wissen ich bin der totale Anfänger auf diesen Gebiet.
Ich muss leider peichten: ich habe schon wieder ein problem: mit meinem SQLSTR

ich möchte meiner Datenbank einen bereits vorhandenen Wert durch meinen Zufallswert ersetzen.
Hier mein Ansatz.

Delphi-Quellcode:
procedure Form1.Zufallszahl_bilden();
var
Zufallszahl: extended;
Wert: string;
begin
randomize;
Zufallszahl:= (random(1));

form1.adoquery1.close;
form1.adoquery1.sql.clear;
form1.adoquery1.sql.add('update Tabelle Set Wert = '+Zufallszahl;
form1.adoquery1.open
while not form1.adoquery1.eof do begin
form1.adoquery1.next;
end;
form1.adoquery1.close;


end;

Fehlermeldung: Syntaxfehler in Update-anweisung.

Bitte helft mir!
  Mit Zitat antworten Zitat
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#12

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 15:03
Extended <-> String. Du musst also Zufallszahl erst per FloatToStr in einen String umwandeln (denn ein String wird intern ganz anders als eine Zahl gespeichert). ABER: random(1) liefert einen Integer- also Ganzzahlwert.
Jakob
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 15:04
Zitat:
Extended <-> String.
was meinst du?
  Mit Zitat antworten Zitat
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#14

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 15:05
Sry, habs editiert nachdem du geschrieben hast.

edit: Es könnte hilfreich sein, wenn du sagst, was du genau erreichen möchtest.
Jakob
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 15:13
Bei meinem Programm handelt es sich um einen Vokabeltrainer!
Jedes Vokabel in meiner Datenbank hat einen anderen Wert.
Dieser Wert soll sich nach jeder Vokabelüberprüfung in der Datenbank geändern und zwar zufällig.
Die Zufallszahl habe ich bereits erstellen können.
Jedoch hat mein "update" code irgendeinen Fehler den ich nicht finden kann.
Siehe oben.
DANKE
  Mit Zitat antworten Zitat
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#16

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 15:47
Wenn du dir 100% sicher bist, dass deine Zufallszahl richtig generiert wird (ich verstehe immernoch nicht, warum du eine Dezimalzahl haben willst), ist dein Problem eigentlich geklärt. Aber ich schreibe es gerne auch noch einmal verständlicher auf:

form1.adoquery1.sql.add('update Tabelle Set Wert = '+Zufallszahl; Den Operator + gibt es ja in zwei Ausführungen, zum Addieren von Zahlen (also Integer, Single, ..., Extended) oder zum Verketten von Strings (Zeichenketten).

Delphi hat eine starke Typisierung, im Gegensatz zu z. B. PHP. Und zwar möchstest du ja, wenn Zufallszahl = 0, dass dann update Tabelle Set Wert = 0 da steht. Dazu müsstest du aber Zufallszahl in einen String umwandeln (wie gesagt, Delphi nimmt dir das nicht ab). Das würde dann so aussehen:

form1.adoquery1.sql.add('update Tabelle Set Wert = ' + FloatToStr(Zufallszahl); Im Übrigen: Falls du dich in einer zu TForm1 gehörigen Methode befindest, reicht es, ADOQuery1 anstatt Form1.ADOQuery1 zu schreiben.
Jakob
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#17

Re: Zufallszahl mit Kommerstellen

  Alt 8. Mär 2009, 07:50
HI,

zuerst mal die Syntax einer Update-Anweisung. Die sieht nämlich so aus:
SQL-Code:
UPDATE "Tabellen_Name"
SET "Spalte1" = [Wert]
WHERE {Bedingung}
Mit deiner Anweseiung, die ohne Bedingung daherkommt, wirst du in der Tabelle in der Spalte Wert bei jedem Datensatz den gleichen Wert haben. Jetzt ist immernoch nicht geklärt, ob es sich dabei um Ganzzahlen (0, 1, 2, 3, 4, ...) oder Gleitkommazahlen (0.1, 0.2, 0.3, 0.4, ...) handelt. Dementsprechen ist eine Typenumwandlungsfunktion zu wählen. Zahlen sind nun mal keine Zeichenketten. Sonst könntest du ja auch mit Buchstaben rechnen a la A + A = B ODER A + A = AA. Da weis Delphi dann nicht mehr, was jetzt gefragt ist.
Des Weiteren gibts noch einen Syntax-Fehler:
form1.adoquery1.sql.add('update Tabelle Set Wert = '+Zufallszahl; Nachdem du die Klammer geöffnet hast, solltest du diese vor dem Semikolon wieder schließen.

Bernhard

PS: SQL-Syntax von hier
Falls es sich nun doch um Gelitkommazahlen handelt, könnte dich das interessieren.
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Zufallszahl mit Kommerstellen

  Alt 8. Mär 2009, 09:58
Vielen Dank für eure Antworten. Mein Problem ist trotzdem noch nicht gelöst.
hier mein derzeitiger Code:
Delphi-Quellcode:
procedure TPool.FormClose(sender: Tobject; var Action: TCloseAction);
begin
Zufallszahl_bilden(); // in dieser procedure wird die Zufallszahl gebildet, var Zufallszahl: extended;
form1.Adoquery1.close;
form1.adoquery1.sql.add('update Tabelle set Wert = '+floattostr(Zufallszahl));
form1.adoquery1.exesql;

while not form1.adoquery1.eof do begin
form1.adoquery1.next;
end;
form1.adoquery1.close;
end;

ich hoffe mir kann jemand helfen
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Zufallszahl mit Kommerstellen

  Alt 8. Mär 2009, 10:00
Da beim Schließen des Fensters die Fehlermeldung kommt. Syntaxfehler. gehe ich davon aus, dass der Fehler bei SQL update liegt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Zufallszahl mit Kommerstellen

  Alt 8. Mär 2009, 10:07
Und dies ist völlig überflüssig
Delphi-Quellcode:
while not form1.adoquery1.eof do begin
  form1.adoquery1.next;
end;
Wenn du zum letzen willst einfach
form1.adoquery1.Last;
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz