ich beschäftige mich neu mit Lazarus (Version 3.2) und bin in Verbindung mit Datenbanken (ich nutze SQL-Lite) auf ein Problem gestoßen.
Aus meinem Hauptmenü (Hauptformular) möchte ich die Datenbankverbindung an ein weiteres Formular übergeben, damit dort über ein Formular ein Datensatz hinzugefügt werden kann.
Alles wird richtig ausgeführt und kompiliert.
Allerdings stoße ich leider immer wieder auf den Fehler "Access Violation", der die Anwendung komplett crasht, sobald ein INSERT auf die Datenbank ausgeführt werden soll.
Genau bei der Ausführung dieses Codes:
Code: Alles auswählen
procedure TFormDatenEinlesen.btnOKClick(Sender: TObject);
var
DataSetID: Integer;
Value: String;
begin
try
ExternalSQLQuery.SQL.Text := 'INSERT INTO DataSet (CreationDate, Name, Comment) VALUES (:CreationDate, :Name, :Comment)';
ExternalSQLQuery.ParamByName('CreationDate').AsString := FormatDateTime('yyyy-mm-dd', Now);
ExternalSQLQuery.ParamByName('Name').AsString := EditName.Text;
ExternalSQLQuery.ParamByName('Comment').AsString := MemoComment.Text;
ExternalSQLQuery.ExecSQL;
ExternalSQLQuery.SQL.Text := 'SELECT last_insert_rowid() AS LastID';
ExternalSQLQuery.Open;
DataSetID := ExternalSQLQuery.Fields[0].AsInteger;
ExternalSQLQuery.Close;
for Value in MemoDaten.Lines do
begin
ExternalSQLQuery.SQL.Text := 'INSERT INTO UnsortedValues (DataSetID, Value) VALUES (:DataSetID, :Value)';
ExternalSQLQuery.ParamByName('DataSetID').AsInteger := DataSetID;
ExternalSQLQuery.ParamByName('Value').AsString := Value;
ExternalSQLQuery.ExecSQL;
end;
ModalResult := mrOk;
except
on E: Exception do
begin
ShowMessage('Fehler bei der Datenverarbeitung: ' + E.Message);
end;
end;
end;
Ich habe die entsprechenden *.pas Dateien angehängt.
Vielleicht hat jemand eine Idee oder findet den Fehler?
ich glaube es liegt an den Parametern (:CreationDate, :Name, :Comment)... Aber keine Ahnung was ich ändern soll.
Ich danke Euch und bin für jede Hilfe dankbar!
Viele Grüße
Dave