AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi INSERT INTO Probleme.
Thema durchsuchen
Ansicht
Themen-Optionen

INSERT INTO Probleme.

Ein Thema von anarkids · begonnen am 7. Apr 2006 · letzter Beitrag vom 7. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
anarkids

Registriert seit: 7. Apr 2006
Ort: Braunschweig
22 Beiträge
 
Delphi 2006 Architect
 
#1

INSERT INTO Probleme.

  Alt 7. Apr 2006, 08:19
Datenbank: ACCESS • Version: 2003 • Zugriff über: ADO/JET
hi erstmal.

Ich habe gestern mit Delphi eine Verbindung zu meiner ACCESS 2003 Datenbank erstellt. Nun soll Delphi der ADO/JET Datensätze in diese Datenbank einfügen und auch wieder auslesen können. Dabei stellt sich mir aber wenn ich Datensätze per Klick auf "Button2CLick" in die Datenbank einfügen will folgende Fehlermeldung in den Weg:

Unzulässige SQL-Anweisung; 'DELETE, 'INSERT', 'SELECT' oder 'UPDATE erwartet.

Daraus schließe ich, dass sich im SQL-Befehl irgendein Schreibfehler versteckt, welchen ich noch nicht finden konnte (benutze Delphi seit 2 Wochen).

Noch der Code:
Delphi-Quellcode:
procedure TForm4.Button2Click(Sender: TObject);
begin
 ado_q.active := true; //Das ist mein TADOQuery
 try
   ado_q.SQL.Clear;
   ado_q.SQL.Add('INSERT INTO Serverdaten([Servername],[URL],[IPAdresse],[ServiceLevel]) values("'+S_Edit1.text'","'+S_Edit2.text'","'+S_Edit3.text'","'+S_Edit5.text'")');
   ado_Q.SQL.ExecSQL;
 finally
   ADO_Q.Active := false;
 end;
end;
Und um nochmal etwas vorwegzunehmen: JA ich habe natürlich vorher die Suchfunktion benutzt und auch dazu gegoogelt. Leider hab ich nix gefunden, was passen würde

mfg, anarkids
Mr.D
Change begins with you - today!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: INSERT INTO Probleme.

  Alt 7. Apr 2006, 08:33
Was steht VORHER (vor der 1.Zeile) im ado_q.SQL drin? Wieso setzt Du Active auf True/False? Schmeiss das raus.

Verwende außerdem die TADOConnection.Execute - Methode, um SQL-Befehle abzusetzen. Die TADOQuery-Komponente dient zum laden von Recordsets, die verändert werden können.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
marabu

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

Re: INSERT INTO Probleme.

  Alt 7. Apr 2006, 08:38
Herzlich willkommen in der Delphi-PRAXiS, anarkids.

Die Fehlermeldung erhältst du, weil du bei Aktivierung der Query (Active := true) noch kein SQL-Statement zugewiesen hast.

Delphi-Quellcode:
procedure TForm4.Button2Click(Sender: TObject);
begin
  with ADOCommand do
  begin
    CommandText := 'INSERT INTO Serverdaten('
                 + 'Servername, URL, IPAdresse, ServiceLevel'
                 + ') VALUES('
                 + ':servername, :url, :ipadresse, :servicelevel'
                 + ')';
    Parameters.ParamByName('servername').Value := S_Edit1.Text;
    // ...
    ExecSQL;
 end;
end;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
anarkids

Registriert seit: 7. Apr 2006
Ort: Braunschweig
22 Beiträge
 
Delphi 2006 Architect
 
#4

Re: INSERT INTO Probleme.

  Alt 7. Apr 2006, 08:44
danke ihr beiden.

endlich mal jemand, der mir seriöse-antworten auf meine frage geben konnte. hat alles geklappt und bin total zufrieden

dankeschön!!!!
Mr.D
Change begins with you - today!
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: INSERT INTO Probleme.

  Alt 7. Apr 2006, 08:47
Hallo,

@anarkids:

Wie alzaimir bereits geschrieben hat, nimm die Active-Anweisung weg. Wenn du einem Query-Object ein SQL-Statement zuweist, darf die Query nicht aktiv sein.
Ausserdem könntest Du dir angewöhnen, Deinen SQL-String übersichtlicher zu gestalten und Parameters zu benutzen:
Delphi-Quellcode:
with ado_q do
begin
  Close;
  SQL.Text:=
    'INSERT INTO Serverdaten '+#13#10+
    '([Servername], [URL], [IPAdresse], [ServiceLevel])'+#13#10+
    'VALUES (:server, :url, :ip, :service)';
  with Parameters do
  begin
    ParamByName('server').Value:=S_Edit1.text;
    ParamByName('url').Value:=S_Edit2.text;
    ParamByName('ip').Value:=S_Edit3.text;
    ParamByName('service').Value:=S_Edit4.text;
  end; // with Parameters
  try
    ExecSQL;
  except
    on E: Exception do ShowMessage(E.Message);
  end; // try
end; // with ado_q
Zitat von alzaimar:
... Die TADOQuery-Komponente dient zum laden von Recordsets, die verändert werden können.
  Mit Zitat antworten Zitat
anarkids

Registriert seit: 7. Apr 2006
Ort: Braunschweig
22 Beiträge
 
Delphi 2006 Architect
 
#6

Re: INSERT INTO Probleme.

  Alt 7. Apr 2006, 08:55
also das es an der active anweisung lag. darauf wär ich nie gekommen . aber danke für die wirklich nützlichen infos.

in dem sinne:
wer nicht fragt, der nicht gewinnt

liebe grüße
anarkids
Mr.D
Change begins with you - today!
  Mit Zitat antworten Zitat
anarkids

Registriert seit: 7. Apr 2006
Ort: Braunschweig
22 Beiträge
 
Delphi 2006 Architect
 
#7

Re: INSERT INTO Probleme.

  Alt 7. Apr 2006, 10:40
neuer fehler, neues pech

hi.

habe meine probleme mit dem insert into jetzt anders gelöst:
Delphi-Quellcode:
server_A := 'select * from Personen';
ado_q.close;
ado_q.sql.text := server_a;
ado_q.insert;
ado_q.fieldbyname('Name').asstring := A_Edit1.text;
ado_q.fieldbyname('Vorname').asstring := A_Edit2.text;
ado_q.fieldbyname('Strasse').asstring := A_Edit3.text;
ado_q.fieldbyname('Hausnummer').asstring := A_Edit4.text;
ado_q.fieldbyname('PLZ').asstring := A_Edit5.text;
ado_q.fieldbyname('Ort').asstring := A_Edit6.text;
ado_q.fieldbyname('TelFirma').asstring := A_Edit7.text;
ado_q.fieldbyname('TelPrivat').asstring := A_Edit8.text;
ado_q.fieldbyname('TelHandy').asstring := A_Edit9.text;
ado_q.fieldbyname('EMailW').asstring := A_Edit10.text;
ado_q.fieldbyname('EMailS').asstring := A_Edit11.text;
ado_q.Post;

server_k := 'select * from Kunden';
ado_q.close;
ado_q.sql.text := server_k;
ado_q.insert;
ado_q.fieldbyname('Firmenname').asstring := K_Edit12.text; //hier sitzt meine fehlermeldung!
ado_q.fieldbyname('Firmenname2').asstring := K_Edit13.text;
//das geht noch bis K_Edit20.text weiter (...)
ado_q.post;
Also in die ersten beiden Tabellen (Serverdaten, Personen) schreibt das Programm alle Datensätze super schnell rein, doch wenn er in die Tabelle Kunden etwas schreiben soll sagt er mir:
Feld 'Firmenname' wurde nicht gefunden.

Und ich verstehe absolut nicht warum. Habe schon seit 2 Tagen völligen Denk-Blackout

Für einen kleinen Anstoß wär ich sehr dankbar
Mr.D
Change begins with you - today!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: INSERT INTO Probleme.

  Alt 7. Apr 2006, 10:46
Hat die atbelle eien Feld mit diesem Namen (Groß/Kleinschreibung)?
Markus Kinzler
  Mit Zitat antworten Zitat
anarkids

Registriert seit: 7. Apr 2006
Ort: Braunschweig
22 Beiträge
 
Delphi 2006 Architect
 
#9

Re: INSERT INTO Probleme.

  Alt 7. Apr 2006, 10:48
also sie wird genauso geschrieben wie oben angegeben...wenn du das meintest!
Mr.D
Change begins with you - today!
  Mit Zitat antworten Zitat
marabu

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

Re: INSERT INTO Probleme.

  Alt 7. Apr 2006, 10:50
Hi.

Du solltest nicht immer alle Sätze vom Server holen, wenn du nur einen einzigen Satz hinzufügen willst. Das Setzen von SQL.Text schließt eine offene Query. ADOCommand magst du wohl nicht. Felder die nicht gefunden werden existieren meistens auch nicht - Hallo Markus.

Delphi-Quellcode:
begin
  with ADO_Q do
  begin
    SQL.Text := 'select * from Personen where 1 = 0';
    Open
    try
      Insert;
      Fieldbyname('Name').AsString := A_Edit1.Text;
      // ...
      Post;
    finally
      Close;
    end;
  end;

// ...
end;
marabu
  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 21:30 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