Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Werte in Datenbank eingeben (https://www.delphipraxis.net/128613-werte-datenbank-eingeben.html)

Thomas F 2. Feb 2009 21:55

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:
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;
so hab ich die Felder definiert :arrow:
Delphi-Quellcode:
ADOConnection1.Execute('CREATE TABLE Emails (Nr COUNTER NOT NULL PRIMARY KEY,Email varchar(40),Herkunft varchar(40),Datum DATE,Bemerkung varchar(40))');

FBrust 2. Feb 2009 22:10

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:
commando := 'INSERT INTO Emails (Nr,Email,Herkunft) VALUES('+inttostr(1)+','+memo1.lines.strings[1]+','+Form2.edit1.text+')';
ADOCommand1.CommandText := commando;
kannst Du auch

Delphi-Quellcode:
ADOCommand1.CommandText := 'INSERT INTO Emails (Nr,Email,Herkunft) VALUES('+inttostr(1)+','+memo1.lines.strings[1] +','+Form2.edit1.text+')';
schreiben.

Gruß
Frank

Thomas F 3. Feb 2009 06:10

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;

sx2008 3. Feb 2009 08:34

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;

Thomas F 3. Feb 2009 08:37

Re: Werte in Datenbank eingeben
 
Ja, Danke

Ich probier das mal aus !

Jürgen Thomas 3. Feb 2009 08:45

Re: Werte in Datenbank eingeben
 
Zitat:

Zitat von sx2008
Strings müssen in SQL in Hochkommas gesetzt werden.
Dazu kann man die Funktion QuotedStr() verwenden.

Das ist zwar möglich, aber davon ist abzuraten.

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

Thomas F 3. Feb 2009 09:51

Re: Werte in Datenbank eingeben
 
Zitat:

Zitat von Jürgen Thomas
Zitat:

Zitat von sx2008
Strings müssen in SQL in Hochkommas gesetzt werden.
Dazu kann man die Funktion QuotedStr() verwenden.

Das ist zwar möglich, aber davon ist abzuraten.

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

Ja, Danke

Ich glaube mit UPDATE ist besser, weil die neuen Daten gleich in der Tabelle angezeigt werden, oder ?

Nimmt man da auch Parameter ???

Jürgen Thomas 3. Feb 2009 09:56

Re: Werte in Datenbank eingeben
 
Zitat:

Zitat von Thomas F
Zitat:

Zitat von Jürgen Thomas
Benutze für variable Inhalte eines SQL-Befehls niemals String-Verknüpfung, sondern immer Parameter!

Ich glaube mit UPDATE ist besser ... Nimmt man da auch Parameter ???

Ich habe bewusst "immer" geschrieben. Das gilt für alle SQL-Befehle, in die variable Inhalte eingefügt werden sollen. Jürgen

Thomas F 3. Feb 2009 11:31

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;

DeddyH 3. Feb 2009 12:18

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 00:58 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz