AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ADO Insert Into

Offene Frage von "Delphi Code Anfänger"
Ein Thema von Delphi Code Anfänger · begonnen am 3. Mär 2008 · letzter Beitrag vom 3. Mär 2008
Antwort Antwort
Delphi Code Anfänger

Registriert seit: 30. Jan 2008
72 Beiträge
 
#1

ADO Insert Into

  Alt 3. Mär 2008, 20:28
Datenbank: access • Zugriff über: ado
Hallo,

ich habe ein kleines Problem. Ich möchte mit ADO etwas in eine Datenbank schreiben und habe dazu folgenden Code. Aber er sagt immer zu viele Parameter...

Delphi-Quellcode:
Form1.ADOQuery1.Active:=false;
Form1.ADOQuery1.Sql.Clear;
Form1.ADOQuery1.Sql.Add('INSERT INTO datenbank (Name, Name2, Name3, Name4, Name5, Name6, Name7, Name8) Values '+ QuotedStr(Edit1.Text, Edit2.Text, Edit3.Text, Edit4.Text, Edit5.Text, Memo1.Text, Memo2.Text, Memo3.Text));
Form1.ADOQuery1.Active:=true;
Woran liegt das? Was klappt nicht?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ADO Insert Into

  Alt 3. Mär 2008, 20:32
Stand da vorher eine andere Abfrage drin?
Markus Kinzler
  Mit Zitat antworten Zitat
Delphi Code Anfänger

Registriert seit: 30. Jan 2008
72 Beiträge
 
#3

Re: ADO Insert Into

  Alt 3. Mär 2008, 20:40
Nein. Wieso? Habe die gerade eben erst geschrieben.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: ADO Insert Into

  Alt 3. Mär 2008, 20:42
Es fehlt eine Klammer nach values
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: ADO Insert Into

  Alt 3. Mär 2008, 20:43
Hallo,

nicht nur die Namen, auch die Werte müssen in runden Klammern angegeben werden. Die Werte müssen einzeln mit QuotedStr() behandelt werden, wenn es sich um CHAR-Typen handelt. Memo-Texte lassen sich in der Regel nicht auf diese Weise einfügen.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: ADO Insert Into

  Alt 3. Mär 2008, 20:43
In deinem Quelltext mußt du jedes einzelne Eingabefeld in QuotedStr packen und händisch mit einem Komma trennen. Viel Aufwand und fehlerträchtig.

Benutze in deinem Fall lieber Parameter:

Delphi-Quellcode:
Form1.ADOQuery1.Sql.Add('INSERT INTO datenbank (Name, Name2, Name3, Name4, Name5, Name6, Name7, Name8) Values :P_1, :P_2, :P3, :P_4, :P_5, :P_6, :P_7, :P_8)');
AdoQuery1.Prepared := True;
AdoQuery1.Parameters.FindParam('P_1').Value := Edit1.Text;
...
AdoQuery1.Parameters.FindParam('P_8').Value := Memo3.Text;
AdoQuery1.ExecSQL;
Da du hier einen DML-Befehl verwendest, darfst du nicht Active bzw Open verwenden, sondern mußt nit ExecSQL das Statement ausführen.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ADO Insert Into

  Alt 3. Mär 2008, 20:45
Hallo Michael, leider hast du seinen Fehler der fehlenden Klanner per CP mitkopiert
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: ADO Insert Into

  Alt 3. Mär 2008, 20:50
Stimmt

Korrekterweise:
Form1.ADOQuery1.Sql.Add('INSERT INTO datenbank (Name, Name2, Name3, Name4, Name5, Name6, Name7, Name8) Values (:P_1, :P_2, :P_3, :P_4, :P_5, :P_6, :P_7, :P_8)');
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr.
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