zu vorhanden Datensatz etwas hinzufügen
-
Hallo,
ich hab ein kleines Problem in Bezug auf das schreiben in eine Datenbank.
Kurz geschildert:
Ich hab in meiner Anwendung ein DBGrid, verbunden mit einer gefilterten Tabelle. Der Anwender kann da auch Daten hinzufügen, so wenn er einen Datensatz hizugefügt hat, betätigt er den den Speichernbutton den Navigators, dieses Ereignis fang ich ab. Und dann will ich meinem Program beibringen, das es zu diesem Datensatz, blind in eine Spalte die nicht angezeigt wird den Wert '0' speichert.
Ich habs jetzt so versucht:if(Button == nbPost) { TQuery *query = new TQuery(Application); query->DatabaseName = "IM7_1"; query->SQL->Add("INSERT INTO Auftragsdaten (Aufterledigt) VALUES('0')"); query->ExecSQL(); delete query; }
aber da speichert er die '0' in eine neuen Datensatz( ist ja auch irgendiwe logisch) aber wie mach ich das, wenn die '0' dazu soll?
-
Soll da jetzt '00' drin stehen oder was? Verstehe das Problem nicht ganz. Zudem es auch nach einem SQL Problem mehr aussieht!
-
Hallo
das Zauberwort heisst UPDATE
(zB UPDATE auftragsdaten SET feld = 'XXX' WHERE feld2 = 'YYY')- ohne WHERE werden alle Datensaetze ueberschrieben
MfG
Klaus
-
Hallo,
also mit UPDATE hab ich es auch versucht, wie kann ich das aber inbekommen?
Meine Abfrage sieht so aus:query->SQL->Add("UPDATE Auftragsdaten SET Aufterledigt = '0' where Aufterledigt = NULL");
zu besseren Verständnis: '0' ist der Int-Wert
und NULL ist das was vom SQL reingeschrieben wird wenn man für die Salte nichts angibt. Eigentlich steht da ja <NULL>, aber das will er granicht.Ja kann sein, das das ein SQL Problem ist, aber vielleicht könnt Ihr ja trotdem helfen?
-
Habs hinbekommen, danke.
-
Hallo
normalerweise sollte man allen mitteilen wie man es geschafft hat
MfG
Klaus
-
KlausB schrieb:
<snip>
So laßt sich das mit der NULL lösen:
query->SQL->Add("UPDATE Auftragsdaten SET Aufterledigt = '0' where Aufterledigt is NULL");
Mfg Burkhard
Edit:
Zitate bitte auf das Notwendigste beschränken. Danke!
-
Genau so hab ich es auch gelöst.
Danke Burkih für den Code, den eigentlich ich posten sollt.
Bin aber ein wenig im Stress.
-
Dir ist aber hoffentlich klar, daß das update-Statement nicht nur den
gerade eingefügten Datensatz ändert, sondern alle, für die die Bedingung
(is NULL) zutrifft.
Zum einen kann es da passieren, daß Du ungewollt andere Datensätze änderst.
Zum anderen kann es dadurch auch irgendwann zu Performance-Problemen kommen.
Wenn Du sehr viele Datensätze in der Tabelle gespeichert hast und über eine
Bedingung darauf zugreifst, die durch keinen Schlüssel abgedeckt wird, werden
die Datensätze sequentiell durchsucht, was z.B. bei einer Million schon
ein paar Momente dauern kann.Gruß,
Alexander