KoBraSoft hat geschrieben: So 20. Nov 2022, 13:35
Ich wollte den Report gerade wieder öffnen. Dabei habe ich festgestellt dass der Report von Werner Pamler bereits wieder geöffnet wurde.
Ja, das bin ich. Ich wollte mich der Sache annehmen, nachdem sich seit 4 Wochen offenbar keiner drum gekümmert hat. Ich bin jetzt zwar nicht DER Datenbank-Experte, aber eine logische Verknüpfung werde ich schon richtig beurteilen können... Das Problem ist, dass die Zahl der aktiven Entwickler im Lazarus-Projekt zur Zeit nicht sehr hoch ist, und viele der Leute, die diese Komponenten ursprünglich geschrieben haben, sieht man nicht mehr.
Ich muss sagen: Mit dieser Funktion im Kontextmenü von TSQLQuery habe ich noch nie gearbeitet... Kannst du mir die Schritte sagen, damit ich den Fehler reproduzieren kann? Ich habe mir ein Projekt mit IBConnection, SQLTransaction, SQLQuery, Datasource und DBGrid gemacht, als Datenbank nehme ich die "employee.fdb" aus der Firebird-Installation. Mit "Select * from employee" (ja, af0815, ich weiß...) wird die Tabelle angezeigt. Wie geht's weiter? Ich nehme an, ich brauche eine Verbindung zur Designzeit, daher im OI IBConnection1.Connect = true und SQLQuery1.Active = true - das zeigt die Tabelle im Grid an und erzeugt mir auch die FieldDefs. Rechtsklick auf der SQLQuery --> "Generate update sql" --> Fehler: "Error in TSQLQueryEditor; The component editor of class "TSQLQueryEditor" invoked with verb #6 "Generate update SQL" has created the error: "Operation cannot be performed on an active dataset"". OK, klar, die Query ist offen, also auf Active = false gesetzt. Nochmals Rechtsklick auf der Query, "Generate update sql". Nun kommt "The component editor of class "TSQLQueryEditor" invoked with verb #6 "Generate update SQL" has created the error: "IBConnection1 : No update query specified and failed to generate one. (No fields for insert- or update-statement found)"". Da bin ich nun am Ende - wie komme ich an die gewünschten Felder?
Das sind so die Irrwege eines Lazarus-Entwickler, der mit der Materie nicht 100% vertraut ist, aber einen Fehler im Bugtracker nachvollziehen möchte, wenn nur eine dürftige Beschreibung vorhanden ist... Wir sind alle nur Menschen.
[EDIT]
Zweiter Versuch, nachdem ich den Report nochmals gelesen habe: da ist ja die Rede von "Edit all SQL Statements" (nicht "Generate update sql", wie oben angenommen). Also: Fields erzeugt, Rechtsklick auf der Query > "Edit all SQL statements", Tabelle "EMPLOYEE" auswählen, in Listbox "Key fields" das Feld "EMP_NO" auswählen, in Listbox "Select/Update/Insert fields" alle Felder ausgewählt lassen. dann "Generate SQL" --> auf dem Tab "Insert" ist die richtige SQL-Anweisung angezeigt, aber auf den Tabs "Update" und "Refresh" fehlt das letzt Feld - du hast recht. Die von dir und Don Siders vorgeschlagene Änderung eingebaut, IDE neu übersetzt --> alles ok. Committet. Du kannst nun, wie im 1. Post geschrieben, dir die aktuelle Version holen, und der Fehler sollte behoben sein.