TSQLQuery

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
twbonn
Beiträge: 6
Registriert: Do 23. Mai 2019, 10:23

TSQLQuery

Beitrag von twbonn »

Kennt jemand dies Verhalten ?

Ich habe in ein bestehendes TDataModule1 eine zusätzliche SQLQuery aus der Komponentenleiste gezogen, mit der database und transaction verbunden.
Beim Auftruf von DataModule1 .SQLQuery gibt es ene sigsegv - Exception; SQLQuery ist NIL. ???
Als funktionierendes workaround habe ich in

TDataModule1.DataModuleCreate
SQLQuery := TSQLQuery.create (self);

eingefügt.
Die schon vorher vorhandenen TSQLQuery-Komponenten brauchten kein explizites create ???



fragt ein verwirrter
Thomas

Lazarus-Vers. 2.0.2; FPC-Vers. 3.0.4 ; SVN-Rev: 60954

wp_xyz
Beiträge: 3462
Registriert: Fr 8. Apr 2011, 09:01

Re: TSQLQuery

Beitrag von wp_xyz »

Natürlich braucht eine von der Komponentenpalette auf dem Formular abgelegte Komponente KEIN explizites Create. Aber mich wundert, dass du immer von 'SQLQuery' redest. Denn wenn du eine TSQLQuery auf Formular klickst, dann heißt die Instanz standardmäßig 'SQLQuery1' - mit angehängter '1'. Hast du die Komponente umbenannt?

twbonn
Beiträge: 6
Registriert: Do 23. Mai 2019, 10:23

Re: TSQLQuery

Beitrag von twbonn »

meine Komponente heißt "query_PMV". und ist zusätzlich zu anderen Komponnten vom Typ TSQLQuery ins TDataModule1 eingefügt.
Wenn ich sie angesprochen habe , zeigt sich im Debuger, dass query_PMV = NIL ist.

Deswegen habe ich in

procedure TDataModule1.DataModuleCreate(Sender: TObject);
...
//workaround ???
if not assigned(query_PMV) then query_PMV := TSQLQuery.create (self);
...

eingefügt und ess klappt. Aber verstehen kann ich es nicht .

twbonn
Beiträge: 6
Registriert: Do 23. Mai 2019, 10:23

Re: TSQLQuery

Beitrag von twbonn »

p.s. kann es vielleicht daran liegen, dass das Datamodule ursprünglich mit Lazarus 1.8 erstellt wurde ??

wp_xyz
Beiträge: 3462
Registriert: Fr 8. Apr 2011, 09:01

Re: TSQLQuery

Beitrag von wp_xyz »

Seltsam. Von der Logik her ist die Zeile, in der du die Query explizit erzeugst, unnötig und eine Speicherverwendung, weil die Query zweimal erzeugt wird. Auch die Lazarusversion, mit der das Datenmodul erstellt wurde, sollte unerheblich sein, solange das Datenmodul überhaupt geöffnet wird.

Kannst du versuchen, diesen Teil deines Programms zu extrahieren und hier als compilierbares Projekt zu posten, wobei der Fehler natürlich noch auftreten soll?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4373
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: TSQLQuery

Beitrag von af0815 »

Ist Query die LFM auch an der korrekten Stelle und mit richtigen Namen vorhanden ? Ich kenne so Erscheinungen wenn nicht über den Objektinspektor umbenannt wurde, sondern das direkt im Quelltext gemacht wird. Dann stimmen lfm und pas nicht mehr zusammen. Auch mit F2 umbenennen ist nicht erlaubt und bringt auch lfm und pas out of sync.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 3462
Registriert: Fr 8. Apr 2011, 09:01

Re: TSQLQuery

Beitrag von wp_xyz »

Ach ja, das fällt mir nach Andreas' Beitrag noch ein: Ist im implementation-Teil des Datenmoduls die Directive {$R *.lfm} vorhanden? Wenn dies nicht der Fall ist, kann das Formular (hier Datenmodul) nicht richtig geladen werden (leider ohne Fehlermeldung).

twbonn
Beiträge: 6
Registriert: Do 23. Mai 2019, 10:23

Re: TSQLQuery

Beitrag von twbonn »

{$R *.lfm} ist vorhanden.
z:zt. glaube ich an Fehler in der lfm-Datei; dort sind eigenartige Einträge , z,B.

object dsSQLPnr: TDataSource
left = 280
top = 112
end
OHNE DataSet ?? :shock:

in einer ruhigen Stunde werde ich das mal analysieren, aber ärgerlicherweise ist es eine ziemlich große Datei...

ich bedanke mich jedenfalls für die Hinweise

Antworten