Entwickler-Ecke
Datenbanken - DBEdit aktualisiert bei Eintrag die Datenbank
Xong - Mo 14.01.08 14:52
Titel: DBEdit aktualisiert bei Eintrag die Datenbank
Hallo,
ich habe mit ADO eine DB-Verbindung aufgestellt. Ein mit einer Tabelle und darin enthaltenden Feld verbundenes DBEdit-Feld speichert bei einem Eintrag sofort den geänderten Wert.
Wie kann ich das verhindern?
Wie kann ich also realisieren, dass die Datenbank nur auf Knopfdruck aktualisiert wird? (Wollen Sie den Eintrag wirklich ändern? JA | NEIN)
Danke für eure Hilfe,
Robert
Mike19 - Mo 14.01.08 15:34
Hallo,
nimm doch einfach nur ein Edit Feld. Das ist nicht direkt mit der Datenbank verbunden. Änderungen werden dann erst auf die Anweisung Post vollzogen und das lässt sich steuern.
Gruß Micha
Xong - Mo 14.01.08 16:16
Okay,
das ist wahrscheinlich sowieso die beste Lösung. Das mit dem Editieren habe ich auch hinbekommen.
Wie kann ich aber den Rückgabewert einer SELECT-Anweisung in solch einem Edit-Feld anzeigen?
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| with StartForm.ADOQuery1 do begin with SQL do begin Clear; Add('SELECT *'); Add('FROM foo'); Add(Format('WHERE ID=''%d''',[bar]); end; Open; end; |
Wie komme ich an das Resultat einer SELECT-Anweisung?
Mit welchen Komponenten kann ich arbeiten?
Danke, Robert
Mike19 - Mo 14.01.08 17:03
Hallo,
wie das in SQL geht kann ich Dir nicht sagen, ich hätte es mit einer Table gemacht.
Xong - Mo 14.01.08 17:19
Ich habe es jetzt folgendermaßen hinbekommen:
Ich habe ein neues ADODataSet mit dem Namen AbfrageDataSet angelegt.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| with StartForm.AbfrageDataSet do begin Active := False; CommandText := Format('SELECT * FROM foo WHERE ID=''%d''',[bar]); Active := True; with Recordset.Fields do begin // Über Item['Spaltenname'] kann ich jetzt auf die einzelnen Felder zugreifen. // (Und sie ggf. einem Editfeld zuordnen.) // Natürlich geht das nur, wenn nur ein Datensatz existiert. // Bei mehreren Datensätzen muss man den Cursor weitersetzen (Next) end; end; |
Kennst du eine elegantere Methode?
Wie löst man das mit einer Tabelle?
Mike19 - Mo 14.01.08 17:24
Hallo,
bei einer Table würde ich mit Locate oder Find genau den Datensatz auswählen, den ich brauche und dann das entsprechende Feld mit
z.B.
Edit1.Text:= Table1.FieldByName('...').As String
anzeigen lassen.
Gruß Micha
raiguen - Mo 14.01.08 20:51
Ob nun Table oder Query, in beiden Fällen kann man EditFelder (vorzugsweise) im AfterScroll mit den entsprechenden Feldwerten befüllen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure Query1AfterSroll(DataSet: TDataSet);
begin Edit1.Text := DataSet.FieldByName('Bla').Text; Edit2.Text := DataSet.FieldValues['dumdidum']; EditXYZ.Text := DataSet.FieldByName('irgendwas').Value; ... end; |
Xong - Di 15.01.08 09:48
Danke!
Ihr habt mir sehr weiter geholfen!
Bis bald,
Robert =)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!