Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi INSERT INTO in Tabelle mit Beziehungen über SQL? (https://www.delphipraxis.net/49694-insert-into-tabelle-mit-beziehungen-ueber-sql.html)

unitedlb 14. Jul 2005 17:28

Datenbank: MDB • Zugriff über: ADO/SQL

INSERT INTO in Tabelle mit Beziehungen über SQL?
 
Versuche in eine Tabelle einer Access DB einen Datensatz
mit INSERT INTO Tabelle () Values() einzufügen und
erhalte immer einen Syntax-Fehler.
Syntax ist aber richtig.
Wie füge ich per SQL einen Datensatz in eine Tabelle
mit Beziehungen ein?

Vielen Dank

shmia 14. Jul 2005 17:57

Re: INSERT INTO in Tabelle mit Beziehungen über SQL?
 
Zitat:

Zitat von unitedlb
Versuche in eine Tabelle einer Access DB einen Datensatz
mit INSERT INTO Tabelle () Values() einzufügen und
erhalte immer einen Syntax-Fehler.
Syntax ist aber richtig.
Wie füge ich per SQL einen Datensatz in eine Tabelle
mit Beziehungen ein?

Jetzt müsste man halt die genaue Fehlermeldung sowie das Insert-Statement, das die Fehlermeldung verursacht wissen!!
Die Syntax ist so:
SQL-Code:
INSERT INTO tabellennamen(feld1, feld2, ...) VALUES(wert1, wert2, ...)
  • Stringwerte müssen in einfache Anführungszeichen eingeschlossen sein.
  • Zahlen müssen gültig sein (Dezimaltrenner ist der Punkt, nur ein Vorzeichen am Anfang erlaubt)
  • Datums- und Zeitwerte sind problematisch, da keine einheitliche Syntax existiert
  • Booleanwerte gibt man am Besten mit 0 und 1 an (anstatt False und True)
  • Es dürfen keine reservierte Wörter als Tabellen- oder Feldnamen verwendet werden!!!
  • keine Sonderzeichen in Tabellen- oder Feldnamen verwenden
Bei Tabellen mit Beziehungen muss zuerst in die Master- und dann erst in die Detailtabelle(n) eingefügt werden.

unitedlb 14. Jul 2005 18:02

Re: INSERT INTO in Tabelle mit Beziehungen über SQL?
 
Delphi-Quellcode:
 sqlfield := 'Act-Journal-ID,SN,Company,Name,Adresse,PLZ,Telefon,Bemerkung';

                sqldata := cases[r].journalid+','+
                           quotedstr(cases[r].sn)+','+
                           quotedstr(cases[r].company)+','+
                           quotedstr(cases[r].name)+','+
                           quotedstr(cases[r].adresse)+','+
                           quotedstr(cases[r].plz)+','+
                           quotedstr(cases[r].ort)+','+
                           quotedstr(cases[r].telefon)+','+
                           quotedstr(cases[r].bemerkung);

                with form1.ADOQuery1.SQL do begin
                        Clear;
                        add('INSERT INTO Aufträge ('+sqlfield+') VALUES('+sqldata+')');
                        end;
                form1.ADOQuery1.ExecSQL;

shmia 14. Jul 2005 18:18

Re: INSERT INTO in Tabelle mit Beziehungen über SQL?
 
Zitat:

Zitat von unitedlb
Delphi-Quellcode:
 sqlfield := 'Act-Journal-ID,SN,Company,Name,Adresse,PLZ,Telefon,Bemerkung';

                sqldata := cases[r].journalid+','+
                           quotedstr(cases[r].sn)+','+
                           quotedstr(cases[r].company)+','+
                           quotedstr(cases[r].name)+','+
                           quotedstr(cases[r].adresse)+','+
                           quotedstr(cases[r].plz)+','+
                           quotedstr(cases[r].ort)+','+
                           quotedstr(cases[r].telefon)+','+
                           quotedstr(cases[r].bemerkung);

                with form1.ADOQuery1.SQL do begin
                        Clear;
                        add('INSERT INTO Aufträge ('+sqlfield+') VALUES('+sqldata+')');
                        end;
                form1.ADOQuery1.ExecSQL;

1.) Sonderzeichen in Tabellenname (das ä), nicht gut, ein Drama, wenn du auf ne andere DB portieren möchtest/musst
2.) Sonderzeichen im Feldnamen "Act-Journal-ID", die Minuszeichen könnten als Subtraktion interpretiert werden -> Feld umbenennen
3.) "Name" ist ein reserviertes Wort -> Feld umbenennen.
4.) du hast immer noch nicht das produzierte SQL-Statement gezeigt.
das geht ganz einfach:
Delphi-Quellcode:
   with form1.ADOQuery1.SQL do begin
     Clear;
     add('INSERT INTO Aufträge ('+sqlfield+') VALUES('+sqldata+')');
     SaveToFile('C:\insert.txt'); // <======
   end;
Und dann schau dir mal die Datei C:\insert.txt an. Und poste dann den Inhalt, falls es nach Änderung von
1.) bis 3.) immer noch Probleme gibt.

unitedlb 15. Jul 2005 14:28

Re: INSERT INTO in Tabelle mit Beziehungen über SQL?
 
danke für die antwort:

zu 3.) dabei handelt es sich um ein record. "name" ist eine variable
des records und wird natürlich nicht als sql-befehl übergeben...

da ich mit einer vorhandenen db arbeiten muss, kann ich die
feldnamen nicht mehr ändern. aber es lag tatsächlich an dem
minus im feldnamen. habe nun insert into ohne fieldnames
verwendet.

danke&grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 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