AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL-String zu lang ?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-String zu lang ?

Ein Thema von Smiley · begonnen am 24. Feb 2008 · letzter Beitrag vom 27. Feb 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#1

SQL-String zu lang ?

  Alt 24. Feb 2008, 21:50
Datenbank: Access • Zugriff über: ADO
Ich habe einen sehr langen SQL-String, wegen den vielen Feldern, die ich zweimal aufzählen muss.
Gibt es bei der länge des SQL-Textes Probleme ?
Folgender Befehl bringt die Fehlermeldung "Syntaxfehler in der Insert Into-Anweisung".
Wenn ich weniger Felder nehme funktioniert die Anweisung.

Delphi-Quellcode:
  DM.QKat.SQL.text := 'Insert Into Kataloge (PreisDatum,NeuPreisDM,PreisEuro,Kaufdatum,Bildbeschreibung,' +
    'Spur,alteNr,Hersteller,VerpEinh,AbrechnungsEinheit,Land,Artikel,Achsen,WagenTyp,Masse,FahrzeugNr,' +
    'HerkunftFzNr,Verwaltung,System,Epoche,Farbe,Beschriftung,Kupplung,Licht,Raeder,Extras,Zusatz,Ausfuehrung,';
   DM.QKat.SQL.Add(
    'Bildrecht,BaujahrVon,BaujahrBis,Gehaeuse,Fahrgestell,PreisFirma,PreisHerkunft,Limitiert,Quelle,KatDatum,' +
    'Seite,Faktor,Lagermenge,Packung,ohne,Zustand,Erfasst,Fach,Herkunft,Ort,Gluehbirne,Haftstreifen,');
   DM.QKat.SQL.Add(
    'Buegelkupplung,Kupplung-v,Hakenkupplung,Kurzkupplung,Motor,ATMotor,Buersten,Umschalter,Zahnrad1,' +
    'Zahnrad2,Stomabnehmer,Schleifer,Drehgestell,Innenbeleuchtung,GS-Achse,WS-Achse,NEM-Radsatz,RP25-Radsatz,' +
    'Puffer,Zuruestteile,Digital-Decoder)');
   DM.QKat.SQL.Add(
    ' Select PreisDatum,NeuPreisDM,PreisEuro,Kaufdatum,Bildbeschreibung,Spur,alteNr,Hersteller,VerpEinh,' +
    'AbrechnungsEinheit,Land,Artikel,Achsen,WagenTyp,Masse,FahrzeugNr' +
    'HerkunftFzNr,Verwaltung,System,Epoche,Farbe,Beschriftung,Kupplung,Licht,Raeder,Extras,Zusatz,Ausfuehrung,');
   DM.QKat.SQL.Add(
    'Bildrecht,BaujahrVon,BaujahrBis,Gehaeuse,Fahrgestell,PreisFirma,PreisHerkunft,Limitiert,Quelle,KatDatum,' +
    'Seite,Faktor,Lagermenge,Packung,ohne,Zustand,Erfasst,Fach,Herkunft,Ort,Gluehbirne,Haftstreifen,');
   DM.QKat.SQL.Add(
    'Buegelkupplung,Kupplung-v,Hakenkupplung,Kurzkupplung,Motor,ATMotor,Buersten,Umschalter,Zahnrad1,' +
    'Zahnrad2,Stomabnehmer,Schleifer,Drehgestell,Innenbeleuchtung,GS-Achse,WS-Achse,NEM-Radsatz,RP25-Radsatz,' +
    'Puffer,Zuruestteile,Digital-Decoder)' +
    ' From Kataloge' +
    ' Where BestellNr=' + QuotedStr(AktBestNr));

  DM.QKat.ExecSQL;
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: SQL-String zu lang ?

  Alt 24. Feb 2008, 21:55
Zitat:
'AbrechnungsEinheit,Land,Artikel,Achsen,WagenTyp,M asse,FahrzeugNr' +
'HerkunftFzNr,Verwaltung,Sy

da fehlt das ","
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: SQL-String zu lang ?

  Alt 24. Feb 2008, 22:02
Rücke deinen Quellcode mal ordentlich und konsequent ein, dann würdest du auch die eigentlichen Fehler sehen...

Delphi-Quellcode:
DM.QKat.SQL.text :=
  'INSERT INTO Kataloge (PreisDatum, NeuPreisDM, PreisEuro, Kaufdatum, Bildbeschreibung, ' +
  ' Spur, alteNr, Hersteller, VerpEinh, AbrechnungsEinheit, Land, ' +
  ' Artikel, Achsen, WagenTyp, Masse, FahrzeugNr, HerkunftFzNr, ' +
  ' Verwaltung, System, Epoche, Farbe, Beschriftung, Kupplung, Licht, ' +
  ' Raeder, Extras, Zusatz, Ausfuehrung, Bildrecht, BaujahrVon, BaujahrBis, ' +
  ' Gehaeuse, Fahrgestell, PreisFirma, PreisHerkunft, Limitiert, Quelle, KatDatum, ' +
  ' Seite, Faktor, Lagermenge, Packung, ohne, Zustand, Erfasst, Fach, Herkunft, ' +
  ' Ort, Gluehbirne, Haftstreifen, Buegelkupplung, Kupplung-v, Hakenkupplung, ' +
  ' Kurzkupplung, Motor, ATMotor, Buersten, Umschalter, Zahnrad1, Zahnrad2, ' +
  ' Stomabnehmer, Schleifer, Drehgestell, Innenbeleuchtung, GS-Achse, WS-Achse, ' +
  ' NEM-Radsatz, RP25-Radsatz, Puffer, Zuruestteile, Digital-Decoder) ' +
  'SELECT PreisDatum, NeuPreisDM, PreisEuro, Kaufdatum, Bildbeschreibung, ' +
  ' Spur, alteNr, Hersteller, VerpEinh, AbrechnungsEinheit, Land, ' +
  ' Artikel, Achsen, WagenTyp, Masse, FahrzeugNr, HerkunftFzNr, ' +
  ' Verwaltung, System, Epoche, Farbe, Beschriftung, Kupplung, Licht, ' +
  ' Raeder, Extras, Zusatz, Ausfuehrung, Bildrecht, BaujahrVon, BaujahrBis, ' +
  ' Gehaeuse, Fahrgestell, PreisFirma, PreisHerkunft, Limitiert, Quelle, KatDatum, ' +
  ' Seite, Faktor, Lagermenge, Packung, ohne, Zustand, Erfasst, Fach, Herkunft, ' +
  ' Ort, Gluehbirne, Haftstreifen, Buegelkupplung, Kupplung-v, Hakenkupplung, ' +
  ' Kurzkupplung, Motor, ATMotor, Buersten, Umschalter, Zahnrad1, Zahnrad2, ' +
  ' Stomabnehmer, Schleifer, Drehgestell, Innenbeleuchtung, GS-Achse, WS-Achse, ' +
  ' NEM-Radsatz, RP25-Radsatz, Puffer, Zuruestteile, Digital-Decoder ' +
  'FROM Kataloge' +
  'WHERE BestellNr = ' + QuotedStr(AktBestNr);

DM.QKat.ExecSQL;
Edit:
Zitat von Smiley:
...Zuruestteile,Digital-Decoder)...
Das Komma ist nur einer der Fehler...

Gruss
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: SQL-String zu lang ?

  Alt 24. Feb 2008, 22:19
Tut mir leid, dass da soviel Text und so wenig geordnet ist.
Die zwei Fehler habe ich auch gerade gefunden.
Es muss aber noch was drin sein.
Es ging mir vorrangig erst mal darum zu wissen, ob der SQL-Text nicht auf 255 Zeichen oder was anderes begrenzt ist
und ob die CR/LF Zeichen die durch das SQL.ADD mit reinkommen, da auch nicht stören.
Dürfen "-" Zeichen in den Feldnamen drin sein?

Ich werde das ganze noch mal weiter formatieren, dann finde ich den Fehler wohl schon noch.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: SQL-String zu lang ?

  Alt 24. Feb 2008, 22:21
Also ich würde in einem Spaltenname niemals ein Minuszeichen einbauen. Wenns unbedingt sein muss dann lieber einen Unterstrich. Aber vielleicht hilft es ja diese Spaltennamen in eckige Klammern zu setzen.

Edit: Hab noch einen Fehler gefunden...
Delphi-Quellcode:
DM.QKat.SQL.text :=
  'INSERT INTO Kataloge (PreisDatum, NeuPreisDM, PreisEuro, Kaufdatum, Bildbeschreibung, ' +
  ' Spur, alteNr, Hersteller, VerpEinh, AbrechnungsEinheit, Land, ' +
  ' Artikel, Achsen, WagenTyp, Masse, FahrzeugNr, HerkunftFzNr, ' +
  ' Verwaltung, System, Epoche, Farbe, Beschriftung, Kupplung, Licht, ' +
  ' Raeder, Extras, Zusatz, Ausfuehrung, Bildrecht, BaujahrVon, BaujahrBis, ' +
  ' Gehaeuse, Fahrgestell, PreisFirma, PreisHerkunft, Limitiert, Quelle, KatDatum, ' +
  ' Seite, Faktor, Lagermenge, Packung, ohne, Zustand, Erfasst, Fach, Herkunft, ' +
  ' Ort, Gluehbirne, Haftstreifen, Buegelkupplung, Kupplung-v, Hakenkupplung, ' +
  ' Kurzkupplung, Motor, ATMotor, Buersten, Umschalter, Zahnrad1, Zahnrad2, ' +
  ' Stomabnehmer, Schleifer, Drehgestell, Innenbeleuchtung, GS-Achse, WS-Achse, ' +
  ' NEM-Radsatz, RP25-Radsatz, Puffer, Zuruestteile, Digital-Decoder) ' +
  'SELECT PreisDatum, NeuPreisDM, PreisEuro, Kaufdatum, Bildbeschreibung, ' +
  ' Spur, alteNr, Hersteller, VerpEinh, AbrechnungsEinheit, Land, ' +
  ' Artikel, Achsen, WagenTyp, Masse, FahrzeugNr, HerkunftFzNr, ' +
  ' Verwaltung, System, Epoche, Farbe, Beschriftung, Kupplung, Licht, ' +
  ' Raeder, Extras, Zusatz, Ausfuehrung, Bildrecht, BaujahrVon, BaujahrBis, ' +
  ' Gehaeuse, Fahrgestell, PreisFirma, PreisHerkunft, Limitiert, Quelle, KatDatum, ' +
  ' Seite, Faktor, Lagermenge, Packung, ohne, Zustand, Erfasst, Fach, Herkunft, ' +
  ' Ort, Gluehbirne, Haftstreifen, Buegelkupplung, Kupplung-v, Hakenkupplung, ' +
  ' Kurzkupplung, Motor, ATMotor, Buersten, Umschalter, Zahnrad1, Zahnrad2, ' +
  ' Stomabnehmer, Schleifer, Drehgestell, Innenbeleuchtung, GS-Achse, WS-Achse, ' +
  ' NEM-Radsatz, RP25-Radsatz, Puffer, Zuruestteile, Digital-Decoder ' +
  'FROM Kataloge ' +
  'WHERE BestellNr = ' + QuotedStr(AktBestNr);

DM.QKat.ExecSQL;
Gruss
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: SQL-String zu lang ?

  Alt 24. Feb 2008, 22:31
Meintest Du den Fehler des fehlenden Leerzeichens bei Kataloge am ende ? (Das wars nicht, hab ich gleich probiert)
Sonst hab ich noch nichts neues entdeckt.

Meinst Du mit "Spaltennamen in Eckige Klammern setzen", die kritischen Namen oder alle ?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: SQL-String zu lang ?

  Alt 24. Feb 2008, 22:37
Ja das Leerzeichen meinte ich.
Ja nur die Spaltennamen, die ein Minuszeichen enthalten.

Edit: Ist der Spaltenname (Stomabnehmer) richtig? Oder soll das vielleicht Stromabnehmer heissen?

Gruss
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: SQL-String zu lang ?

  Alt 24. Feb 2008, 22:42
Ja, es sind tatsächlich die Spalten mit dem minuszeichen drin (z.B. Kupplung-v,).
Ich werde das mit den eckigen Klammern jetzt mal versuchen.
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: SQL-String zu lang ?

  Alt 24. Feb 2008, 22:51
Ja, richtig Thorsten (Luchsauge), das mit dem St(r)omabnehmer habe ich glatt übersehen.

Jetzt funktioniert es.

Vielen Dank für Eure Hilfe, das war sehr nett von Euch bei diesem dicken Wust an Feldern.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: SQL-String zu lang ?

  Alt 24. Feb 2008, 23:21
Ist das da dein Ernst ? Jo, der Name Smiley passt.

Ich würde mal nach ParamByName -> F1 suchen ! Da dies wohl nicht geht, sonst wäre die Frage überflüssig : die SQL-Statements sind TStrings, insofern steht Add, Clear usw. zur Verfügung. Wieso steht der ganze Kram eigentlich im Programm drin ? Das gehört als grundlegende Eigenschaft in das Dataset -> SQL-Generator etc.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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