AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO: ein simples INSERT
Thema durchsuchen
Ansicht
Themen-Optionen

ADO: ein simples INSERT

Ein Thema von Ajin · begonnen am 6. Dez 2006 · letzter Beitrag vom 7. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#1

ADO: ein simples INSERT

  Alt 6. Dez 2006, 15:30
Datenbank: MS ACCESS • Version: 2003 • Zugriff über: ADO Komponenten
Hallo DP!

Eine klitzekleine test.mdb hat nur 2 Felder: ID und text. Das ID Feld ist der PK und hat einen auto-inkrement.

Gebastelt hab ich folgende Funktion:

Delphi-Quellcode:
function insert_test(wert1: string):boolean;
begin
 insert_test := true;
 try
  Fmain.ADOCommand1.CommandType := cmdText;
  Fmain.ADOCommand1.CommandText := 'INSERT INTO test VALUES (' + '' + ', ' + wert1 + ');';
  Fmain.ADOCommand1.Execute;
 Except
  insert_test := FALSE;
 end;
End;
Der Aufruf der Funktion soll so aussehen:

insert_test('Hallo Welt'); Dann müsste bei jedem Aufruf das ID Feld hochgezählt werden und im Text Feld steht immer Hallo Welt.

Ich habe schon ettliche Beispiele durch die Suchfunktion gefunden, aber ich werd einfach nicht aus den vielen Klammern und Hochkommatas schlau. Ich bekomme durch meine experimente verschiedene Fehlermeldungen.

Wie lautet denn nun die richtige Syntax zu

Fmain.ADOCommand1.CommandText := 'INSERT INTO test VALUES (' + '' + ', ' + wert1 + ');';
  Mit Zitat antworten Zitat
Maja Jessica

Registriert seit: 16. Apr 2005
Ort: Dortmund
95 Beiträge
 
Delphi 4 Standard
 
#2

Re: ADO: ein simples INSERT

  Alt 6. Dez 2006, 15:45
Hi,

meine Meinung:

Delphi-Quellcode:

Fmain.ADOCommand1.CommandText := 'INSERT INTO test VALUES ("",
                                  + QuotedStr(wert1) + ')';
Bei dem AutoID-Feld bin ich mir nicht sicher, könnte daher auch so:

Delphi-Quellcode:

Fmain.ADOCommand1.CommandText := 'INSERT INTO test (text) VALUES ('
                                  + QuotedStr(wert1) + ')';
Soviel zu meinem Halbwissen, kann ich im Moment nicht testen ...

MJ
  Mit Zitat antworten Zitat
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#3

Re: ADO: ein simples INSERT

  Alt 6. Dez 2006, 15:50
Hallo Maja Jessica!

Beim Test deiner 1. Variante bekomm ich den Fehler: Datentypen in Kriterienausdruck unverträglich
und bei der 2. Variante ein Syntaxfehler in der INSERT INTO Anweisung

Ich danke dir trotzdem für deine Antwort !
  Mit Zitat antworten Zitat
Maja Jessica

Registriert seit: 16. Apr 2005
Ort: Dortmund
95 Beiträge
 
Delphi 4 Standard
 
#4

Re: ADO: ein simples INSERT

  Alt 6. Dez 2006, 16:23
Zitat von Ajin:
Hallo Maja Jessica!

Beim Test deiner 1. Variante bekomm ich den Fehler: Datentypen in Kriterienausdruck unverträglich
und bei der 2. Variante ein Syntaxfehler in der INSERT INTO Anweisung

Ich danke dir trotzdem für deine Antwort !
grrr (daher auch meine Warnung "Halbwissen")

Ich benutze kein ADO sondern mache alles mit AbsoluteDB. Sollte aber von SQL-Syntax her etwa gleich sein.
Wie war das noch bei einem Insert und Auto-ID ... ich komm' jetzt nicht darauf...
Schliesslich füllt die DB das Feld ja selbst mit einem Wert. Muss ich den jetzt angeben oder nicht?
Schonmal mit einer Übergabe von 0 an das AutoID-Feld versucht?

Oder warten auf die Profis im Forum


MJ
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: ADO: ein simples INSERT

  Alt 6. Dez 2006, 16:23
[quote="Ajin"]Eine klitzekleine test.mdb hat nur 2 Felder: ID und text. [delphi]
Das ist schon mal schlecht: "text" ist ein reserviertes Wort und kann einen Syntaxfehler verursachen!
Ich würde beide Feldnamen ändern, denn "ID" ist auch sehr allgemein.
Andreas
  Mit Zitat antworten Zitat
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#6

Re: ADO: ein simples INSERT

  Alt 6. Dez 2006, 16:27
Also den Wert für das ID (autoinkrement) Feld kann man mit leer angeben, das Hochzählen macht die DB dann selbst. Dennoch kann ich keinen einzigen Datensatz anlegen.
  Mit Zitat antworten Zitat
Maja Jessica

Registriert seit: 16. Apr 2005
Ort: Dortmund
95 Beiträge
 
Delphi 4 Standard
 
#7

Re: ADO: ein simples INSERT

  Alt 6. Dez 2006, 16:41
Ein wenig googlen auf SwissDeplhi ergab

Delphi-Quellcode:
// Insert a new Record...
var
  LastID: Integer;
// Query: TADOQuery;
// oder
// Query: TQuery;
begin
  Query.Active := False;
  Query.SQL.Clear;
  Query.SQL.Append('INSERT INTO Table (Spalte) VALUES (Value)');
  Query.ExecSQL;
end;
Ist also so, daß man die ID-Spalte links liegen lässt. Punkt.
Du bekommst keine Fehlermeldung?

  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#8

Re: ADO: ein simples INSERT

  Alt 6. Dez 2006, 16:46
warum nicht

Delphi-Quellcode:
  Query.sql.Text := 'INSERT INTO Tabelle (Feld) VALUES (:Feld)';
  Query.ParamByName('Feld').Value := 'Hallo DB';
  Query.Execute; // oder ExecSQL?? Die Code-Vervollständigung weiß es
oder

Delphi-Quellcode:
  Query.sql.Text := 'SELECT * FROM Tabelle WHERE id=0';
  Query.Open;
  Query.Append;
  Query.FieldByName('Feld').Value := 'Hallo DB';
  Query.Post;
  Query.Close;
  Mit Zitat antworten Zitat
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#9

Re: ADO: ein simples INSERT

  Alt 7. Dez 2006, 12:34
Moin Ihr!

Ich hab die Lösung nun:

Delphi-Quellcode:
procedure TFmain.Button1Click(Sender: TObject);
var wert1, wert2: string;
begin
  Fmain.ado_query.Active:= FALSE;
  Fmain.ado_query.SQL.Clear;
  wert1:='Hallo Du';
  Fmain.ado_query.SQL.Append('INSERT INTO test (w1,w2) VALUES ("' + wert1 + '",'+
                                                              '"' + Wert1 + '")');
  try
    Fmain.ado_query.ExecSQL;
  except
    Messagebox(handle,'Duplikat?','',0);
  end;
end;
Mfg

Ajin
  Mit Zitat antworten Zitat
Maja Jessica

Registriert seit: 16. Apr 2005
Ort: Dortmund
95 Beiträge
 
Delphi 4 Standard
 
#10

Re: ADO: ein simples INSERT

  Alt 7. Dez 2006, 12:42
Hi,
schön das es jetzt klappt!
Du hast nun aber in Spalte w1 und w2 den gleichen Eintrag 'Hallo Du'.
Funktioniert auch die AutoID?

MJ
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:42 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