Entwickler-Ecke
Datenbanken - Datensatz in TTable aktualisieren?
mi-frank - Fr 04.11.05 16:16
Titel: Datensatz in TTable aktualisieren?
Hallo,
programmiere erst seit einigen Tage mit Delpbi und komm' einfach nicht weiter!!
Problem: Möchte meine TTable aktualisieren, aber es funktioniert einfach nicht!!
Delphi-Quelltext
1: 2: 3: 4: 5:
| Sql := 'Select* From Bogen.DB where SYS = '+ frmAzubiBeurteilungsbogen.TableAzubis.FieldByName('SYS').AsString;
frmAzubiBeurteilungsbogen.SQLBogen.Sql.Clear; frmAzubiBeurteilungsbogen.SQLBogen.Sql.Add(Sql); frmAzubiBeurteilungsbogen.SQLBogen.Active := True; |
Der SQL funktioniert!
Hoff, ihr könnt mir weiterhelfen??
Moderiert von
raziel: Delphi-Tags hinzugefügt.
jasocul - Fr 04.11.05 18:21
Dann erkläre jetzt bitte mal ganz genau, was du mit Aktualisieren meinst.
Ich werde aus deiner Formulierung nämlich nicht schlau.
mi-frank - So 06.11.05 23:38
Versuch 2:
ich habe eine TQuery-, eine TDatasource und eine TTable-Komponenten in meinem Formular!
Mittels der TQuery-Komponenten lass ich mir mittels einer SQl-Anweisung, z.B select * from Tabelle; einen Datensatz auslesen, den ich dann an meine TTable weitergebe!
Wie kann ich nun zur laufzeit meiner TTable einen neuen Datensatz zuweisen, z.B. select* from Tabelle where Nachname='Mustermann';???
Ich hoff, dass diesmal klar ist, wo mein Problem genau liegt!!
jasocul - Mo 07.11.05 09:29
Ja, ich glaube, ich weiß jetzt, was du meinst.
Mir entzieht sich im Moment zwar der Sinn deines Vorgehens, aber ich habe da eine kleine Routine für dich:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| Function DBEmpty(dts : TDataSet) : Boolean; begin Result := not dts.Active; if not Result then begin Result := dts.eof and dts.bof; end; end;
procedure KopiereAktuellenDatensatzMitAppend(qQuelle, qZiel : TDataset; Speichern : Boolean); var cnt : Integer; arr : array of variant; begin if qQuelle.Active and (not DBEmpty(qQuelle)) then begin SetLength(arr, qQuelle.FieldCount); for cnt := 0 to qQuelle.FieldCount - 1 do begin arr[cnt] := qQuelle.Fields[cnt].AsVariant; end; qZiel.Append; for cnt := 0 to qZiel.FieldCount - 1 do begin qZiel.Fields[cnt].AsVariant := arr[cnt]; end; if Speichern then begin qZiel.Post; end; end; end; |
Voraussetzungen für diese Prozedur:
- Die Ziel-Tabelle darf nicht ReadOnly sein.
- In qZiel müssen mindestens soviele Felder sein, wie in qQuelle.
- Die Felder sollten vom selben Typ sein. (Variant prüft den Typ nicht)
mi-frank - Mo 07.11.05 11:30
ich glaub, du hast mich wieder falsch Verstanden!
Ich möchte doch einfach nur zur Laufzeit meiner TTable einen neuen DS zuordnen, indem ich in meiner TQuery-Komponenten einen neuen SQL-Befehl eingebe:
Delphi-Quelltext
1: 2: 3: 4:
| frmMain.QueryBogen.Close; frmMain.QueryBogen.Sql.Clear; frmMain.QueryBogen.Sql.Add(Sql); frmMain.QueryBogen.Open; |
SQL ist hier mein neuer SQL-Befehl!!
Moderiert von
raziel: Delphi-Tags hinzugefügt.
jasocul - Mo 07.11.05 11:39
Scheinbar verstehe ich dich wirklich nicht.
Irgendwo einen neuen Datensatz zuweisen heißt für mich den Datensatz in irgendeiner Form erfassen.
Wenn du mit TQuery und TTable auf die selbe DB-Tabelle zugreifst, dann würde ein Aufruf der Methode Refresh bei TTable genügen. Abr ich glaube nicht wirklich, dass du das meinst.
Da du mit Delphi (und vrmtl. auch Datenbanken) gerade erste angefangen hast, denke ich, das du einen konzeptionellen Fehler im Programm hast.
Bitte erkläre doch mal ein bisschen von dem, was du erreichen willst. Unabhängig vom aktuellen Problem.
mi-frank - Mo 07.11.05 12:22
Hi,
bin jetzt selbst drauf gekommen!
War echt dumm von mir! Musste einfach nur zur Laufzeit einen neuen Filter-Wert eingeben!
Delphi-Quelltext
1: 2: 3: 4: 5:
| TTable.Active := False; TTable.Filtered := False; TTable.Filter := 'Feldname = Wert' TTable.Filtered := True; TTable.Open; |
Trotzdem vielen Dank für deine Hilfe!
Hab bestimmt bald wieder ein anderes Problem
Moderiert von
raziel: Delphi-Tags hinzugefügt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!