Autor Beitrag
Xong
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: Mo 14.01.08 14:52 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 256

Win XP, Vista, Win 7
Delphi 2005, Turbo Delphi
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: 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?

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 256

Win XP, Vista, Win 7
Delphi 2005, Turbo Delphi
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: Mo 14.01.08 17:19 
Ich habe es jetzt folgendermaßen hinbekommen:
Ich habe ein neues ADODataSet mit dem Namen AbfrageDataSet angelegt.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 256

Win XP, Vista, Win 7
Delphi 2005, Turbo Delphi
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure Query1AfterSroll(DataSet: TDataSet);
{bzw procedure Table1AfterSroll(DataSet: TDataSet);}
begin
  Edit1.Text := DataSet.FieldByName('Bla').Text;
  Edit2.Text := DataSet.FieldValues['dumdidum'];
  EditXYZ.Text := DataSet.FieldByName('irgendwas').Value;
  ...
end;
Xong Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: Di 15.01.08 09:48 
Danke!
Ihr habt mir sehr weiter geholfen!

Bis bald,
Robert =)