ich habe zwei TZQuery (qryListe, qryEintrag)
qryListe greift auf mehrere Tabellen zu und ist readonly (in einem DBGrid)
qryEintrag greift auf eine, in der ersten Query enthaltene, Tabelle (tblDaten mit key idDaten) zu und ist editierbar. (In DBEdits)
Ich erzeuge in der qryListe einen neuen Eintrag mit Insert Into ... das funktioniert einwandfrei, Datensatz wird gespeichert und angezeigt
Über einen Select_Last_Record() Hole ich mir die neue idDaten auch das funktioniert
mit qryListe.Refresh; sollte ja nun die Liste mit dem neuen Datensatz angezeigt werden - was aber nicht funktioniert, obwohl der Befehl wohl ausgeführt wird.
verwende ich anstelle von
qryListe.Refresh;
aber:
qryListe.Close;
qryListe.Open;
geht alles und ich kann den aktuellen Record mit locate anspringen.
In einem vergleichbaren Programmmodul funktioniert das aber mit Refresh - woran könnte das liegen?
Code: Alles auswählen
procedure TfraAkte.acVorgangNeuExecute(Sender: TObject);
var
Suchtext: string;
LastRec: integer;
begin
with dtmAkte do
begin
Suchtext := 'Insert Into Historien (fk_akte, fk_adresse) Values (' + qryAktenliste.FieldByName('idakte').AsString + ',0)';
if ExecInsertSQL(dtmBasis.qrySQL, Suchtext, LastRec) then
begin
WriteLn('refresh Historienliste idhistorie=' + IntToStr(LastRec));
qryHistorienliste.Refresh;
//Workaround
qryHistorienliste.Close;
qryHistorienliste.Open;
qryHistorienliste.Locate('idhistorie', LastRec, []);
end;
pcAkten.ActivePage := SeiteVorgang;
pcAkten.Page[pcAkten.ActivePageIndex].TabVisible := True;
end;
end;
Obiger Code hat das Problem, der untere funktioniert
Code: Alles auswählen
procedure TfraArtikel.acArtikelNeuExecute(Sender: TObject);
var
Suchtext: string;
LastRec: integer;
begin
with dtmArtikel do
begin
Suchtext := 'Insert Into Artikel (fk_artikelgruppe, fk_steuersatz) Values (0,1)';
if ExecInsertSQL(dtmBasis.qrySQL, Suchtext, LastRec) then
begin
qryArtikelliste.Refresh;
qryArtikelliste.Locate('idartikel', LastRec, []);
end;
end;
pcArtikel.ActivePage := SeiteArtikel;
end;