ich habe eine MSAccess DB die ich als Datengrundlage verwende. Ich habe die DB richtig angebunden und das Ändern in der DB erfolgt Problemlos.
Für das Ändern verwende ich "TSQLQuery.edit". Für das Einfügen eines Datensatzes würde ich den Befehl "SQLQueryPosition.append" oder "SQLQueryPosition.insert" verwenden.
Leider funktionieren diese beide Befehle nicht. Immer wenn ich versuche diese Befehle zu verwenden erscheint folgende Fehlermeldung:
'Index based on unknown field "="'
Die Tabelle hat "ID" als Index und Autowert. Ich habe auch versucht diesen Index zu löschen und dann auf die DB zu zugreifen, aber leider ohne erfolg.
Folgende Einstellungen habe ich auch versucht:
Code: Alles auswählen
SQLQueryPosition.fieldbyname('ID').providerflags:= [pfInUpdate,pfInWhere,pfInKey];
SQLQueryPosition.FieldByName('ID').Required:=false;
SQLQueryPosition.Fields.Fields[0].ProviderFlags:=[pfInkey];
Für die Anbindung an die DB habe ich folgende Einstellung:
Code: Alles auswählen
ODBCConnection.Driver:= 'Microsoft Access Driver (*.mdb)';
ODBCConnection.Params.Add('DBQ=' + ExtractFilePath(Application.ExeName) + 'Apparate_Daten.mdb');
ODBCConnection.Connected:= True;
ODBCConnection.KeepConnection := True;
SQLTransaction.DataBase := ODBCConnection;
SQLTransaction.Action := caCommit;
SQLTransaction.Active := false; //not applied to ms access(false) bei true kommt fehler das die transaktion schon aktiv ist
SQLTransaction.StartTransaction;
SQLQueryPosition.DataBase := ODBCConnection;
SQLQueryPosition.UsePrimaryKeyAsKey := False;
SQLQueryPosition.Filtered:=True; //Jetzt kann ein Filter gesetzt werden ID=1
SQLQueryPosition.SQL.Text := 'SELECT * FROM tbPosition';
SQLQueryPosition.Open;
DatasourcePosition.DataSet := SQLQueryPosition;
DBGrid_Position.DataSource := DatasourcePosition;
Danke im voraus.
Gruß