AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi INSERT INTO in Tabelle mit Beziehungen über SQL?
Thema durchsuchen
Ansicht
Themen-Optionen

INSERT INTO in Tabelle mit Beziehungen über SQL?

Ein Thema von unitedlb · begonnen am 14. Jul 2005 · letzter Beitrag vom 15. Jul 2005
Antwort Antwort
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#1

INSERT INTO in Tabelle mit Beziehungen über SQL?

  Alt 14. Jul 2005, 17:28
Datenbank: MDB • Zugriff über: ADO/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
  Mit Zitat antworten Zitat
shmia

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

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

  Alt 14. Jul 2005, 17:57
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:
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.
Andreas
  Mit Zitat antworten Zitat
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#3

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

  Alt 14. Jul 2005, 18:02
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;
  Mit Zitat antworten Zitat
shmia

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

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

  Alt 14. Jul 2005, 18:18
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.
Andreas
  Mit Zitat antworten Zitat
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#5

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

  Alt 15. Jul 2005, 14:28
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
  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 18:38 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