[Teilw. Erledigt] Merkwürdiges Verhalten mit TZQuery

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

[Teilw. Erledigt] Merkwürdiges Verhalten mit TZQuery

Beitragvon MacWomble » 17. Sep 2017, 16:26 [Teilw. Erledigt] Merkwürdiges Verhalten mit TZQuery

Hallo, ich habe mal wieder ein komisches Problem: :oops:

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 :shock: 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;       
Zuletzt geändert von MacWomble am 19. Sep 2017, 18:01, insgesamt 2-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon af0815 » 18. Sep 2017, 08:14 Re: Merkwürdiges Refresh TZQuery

Wenn du mit ZeOS arbeitest, so verwende den SQLMONITOR damit du siehst was den Unterschied ausmacht. Vor allen was wirklich an Statements an den Server geschickt werden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3499
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MacWomble » 18. Sep 2017, 22:40 Re: Merkwürdiges Refresh TZQuery

Danke für den Tipp, werde ich versuchen.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon MacWomble » 19. Sep 2017, 11:12 Re: Merkwürdiges Refresh TZQuery

Der SQL-Monitor zeigt keinerlei Unterschiede.

Inzwischen habe ich ein neues Problem auf einer anderen frame. Hier lässt sich überhaupt nichts editieren.
Die Verbindung zur Datenbank steht, der query ist offen und die Datensätze werden richtig angezigt - allerdings gibt es keinerlei Möglichkeit, diese über die angebundenen Controls (ein dbedit, ein dbmemo) zu editieren. Er reagiert einfach nicht auf Eingaben, aber der blinkende Cursor ist da. :(

dtmBasis ist ein DataModul

Code: Alles auswählen
 
Suchtext := 'Select * from Textbausteine where bst_control "Test" order by bst_textkurz'; // wird gefunden, ist OK
dtmBasis.qryBsp.Close;
dtmBasis.qryBsp.SQL.Clear;
dtmBasis.qryBsp.SQL.Text:=Suchtext;
dtmBasis.qryBsp.Open;
 


bst_textkurz wird in einer DBGrid aufgelistet - funktioniert
Der in der Grid selektierte bst_textkurz wir in einem dbEdit angezeigt, kann aber nicht editiert werden - DBFeld ist varchar(25)

Nirgends ist readonly eingestellt, autoedit ist true. Benutzerrechte der DB stimmen definitiv auch.

An anderer Stelle im Programm habe ich bei einem Datensatz das Problem, dass ich alles ausser einem Memofeld editieren kann.

Ich bin am Verzweifeln ... :oops: :| :o
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon TraumTaenzerDieter » 19. Sep 2017, 12:49 Re: Merkwürdiges Verhalten mit TZQuery

Wie wär's mit dtmBasis.qryBsp.Edit
TraumTaenzerDieter
 
Beiträge: 19
Registriert: 14. Aug 2011, 08:11

Beitragvon MacWomble » 19. Sep 2017, 15:47 Re: Merkwürdiges Verhalten mit TZQuery

Das habe ich natürlich auch versucht, obwohl alles auf autoedit steht - keine Veränderung


:shock: Huch, das zweite Problem konnte ich finden !

Da ich in den Querys die Feldlisten eingelesen hatte, konnte das Programm nach einer DB-Anpassung mit dem geänderten Feld (varchar > Mediumtext) nichts mehr anfangen. Das Neu-Einlesen der Feldliste im Query brachte nun die Lösung ! :D
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon af0815 » 20. Sep 2017, 11:37 Re: [Teilw. Erledigt] Merkwürdiges Verhalten mit TZQuery

Ist der PK in der SQL Menge drinnen ? Weil wenn die "Automatic" versagt, wird die Query automatisch RO. Man sieht es leider nur am Ergebnis - Datenmenge ist nicht editierbar.

Ein zweites Problem habe ich schon gehabt - Ein Frame ist kein Form. In seltenen Fällen habe ich beobachtet das es Komponenten gibt, die unbedingt ein TForm im Vorfahren haben müssen um richtig zu agieren. Das wird es hier aber nicht sein.

ZEOS, ich hoffe du hast den Stand aus dem SVN/Git genommen, mit dem reinen Download habe ich auch so meine Probleme gehabt. Einige Sachen sind im SVN gefixt, besonders falls man mit MS-SQL arbeitet.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3499
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried