![]() |
Datenbank: Access • Zugriff über: ADO
Werte in Datenbank eingeben
Wie kann ich in meine Access-Datenbank Werte eingeben ????
Ich bekomm immer ne Fehlermeldung Ich find keinen Fehler :wall:
Delphi-Quellcode:
so hab ich die Felder definiert :arrow:
procedure TForm3.Button1Click(Sender: TObject);
var commando:string; begin commando := 'INSERT INTO Emails (Nr,Email,Herkunft) VALUES('+inttostr(1)+','+memo1.lines.strings[1]+','+Form2.edit1.text+')'; ADOCommand1.CommandText := commando; ADOCommand1.Execute; end;
Delphi-Quellcode:
ADOConnection1.Execute('CREATE TABLE Emails (Nr COUNTER NOT NULL PRIMARY KEY,Email varchar(40),Herkunft varchar(40),Datum DATE,Bemerkung varchar(40))');
|
Re: Werte in Datenbank eingeben
Hallo,
wenn COUNTER gleichbedeutend mit Auto-Increment ist, brauchst du das Feld "Nr" nicht zu belegen, das geschieht dann automatisch in der Datenbank. Wie lautet denn die Fehlermeldung? Übrigens statt
Delphi-Quellcode:
kannst Du auch
commando := 'INSERT INTO Emails (Nr,Email,Herkunft) VALUES('+inttostr(1)+','+memo1.lines.strings[1]+','+Form2.edit1.text+')';
ADOCommand1.CommandText := commando;
Delphi-Quellcode:
schreiben.
ADOCommand1.CommandText := 'INSERT INTO Emails (Nr,Email,Herkunft) VALUES('+inttostr(1)+','+memo1.lines.strings[1] +','+Form2.edit1.text+')';
Gruß Frank |
Re: Werte in Datenbank eingeben
Fehlermeldung:
__________________________________________________ _____________________________________ Im Project ......ist eine Exception der Klasse EOleException mit der Meldung 'Ein Parameterobjekt ist nicht ordnungsgemäß definiert.Inkonsistente oder unvollständige Informationen wurde abgegeben' aufgetreten. __________________________________________________ ________________________________________ Das Feld 'Nr' hab ich diesmal weggelassen
Delphi-Quellcode:
ADOCommand1.CommandText := 'INSERT INTO Emails (Email,Herkunft) VALUES('+memo1.lines.strings[1] +','+Form2.edit1.text+')';
ADOCommand1.Execute; |
Re: Werte in Datenbank eingeben
Strings müssen in SQL in Hochkommas gesetzt werden.
Dazu kann man die Funktion QuotedStr() verwenden.
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var commando:string; begin commando := 'INSERT INTO Emails (Nr,Email,Herkunft) VALUES('+inttostr(1)+','+QuotedStr(memo1.lines.strings[1])+','+QutotedStr(Form2.edit1.text)+')'; // ein ganz einfacher Trick: man lässt sich eine SQL-Anweisung vorher anzeigen // dann sieht man ganz leicht, ob daran noch etwas falsch ist ShowMessage(commando); ADOCommand1.CommandText := commando; ADOCommand1.Execute; end; |
Re: Werte in Datenbank eingeben
Ja, Danke
Ich probier das mal aus ! |
Re: Werte in Datenbank eingeben
Zitat:
Benutze für variable Inhalte eines SQL-Befehls niemals String-Verknüpfung, sondern immer Parameter! Mit der Forumssuche nach "Parameter" bekommst Du viele Hinweise dazu. Jürgen |
Re: Werte in Datenbank eingeben
Zitat:
Ich glaube mit UPDATE ist besser, weil die neuen Daten gleich in der Tabelle angezeigt werden, oder ? Nimmt man da auch Parameter ??? |
Re: Werte in Datenbank eingeben
Zitat:
|
Re: Werte in Datenbank eingeben
Mal ne andere Frage
Wenn ich einen Datensatz lösche , dann wird der Datensatz zwar in der Tabelle gelöscht, aber der Counter (Zähler=Feld1) hat immer noch denselben Wert. wenn ich z.B. 30 Einträge in der Datenbank habe, und lösche dann 10 Datensätze, dann sind zwar nur noch 20 Sätze sichtbar, aber die haben die Nummern 10-30 , komischerweise ????? :shock: :shock:
Delphi-Quellcode:
Form1.DBGrid1.DataSource.Dataset.Delete;
|
Re: Werte in Datenbank eingeben
Das ist völlig normal, die Schlüssel werden beim Löschen ja nicht aktualisiert (es handelt sich ja anscheinend um ein AutoInc-Feld).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz