![]() |
Datenbank: TurboDB • Version: 5.16 • Zugriff über: TDBQuery
TurboDB - INSERT mit mehr als 14 Parametern geht nicht
Hallo zusammen,
ich habe ein Problem mit meinem INSERT-Befehl den ich über eine TDBQuery-Komponente auf eine TurboDB ausführen möchte. Der Code sieht folgendermaßen aus:
Delphi-Quellcode:
Das klappt alles super. Sobald ich das um z.B. ",column16" und einen weiteren Wert erweitere, tritt beim ausführen eine Exception auf: 'TdbQuery1: The SQL statement contains no text'.
Tdbquery1.Close;
Tdbquery1.SQL.Text := 'INSERT INTO welddata (column2,column3,column4,column5,column6,column7,column8,column9, column10,column11,column12,column13,column14,column15) VALUES (''0'',''3243'',''3243'',''3243'',''3243'',''3243'', ''3243'',''3243'',''3243'',''5454'',''3243'',''3243'',''3243'',''324'');'; Tdbquery1.ExecSQL; Die Datenbank-Tabelle hat definitiv das Feld "column16" und der Datentyp / erlaubte Länge ist auch alles ok. Ist das ein Bug? Ich müsste bis zu 50 Columns befüllen. Danke schonmal! [edit=Matze]2 Leerzeichen eingefügt, damit bei geringerer Auflösung umgebrochen wird. MfG, Matze[/edit] |
Re: TurboDB - INSERT mit mehr als 14 Parametern geht nicht
Lass dir mal .Text anzeigen, ob alles drinnen steht. Wenn nicht versuch es mal mit .Add()
|
Re: TurboDB - INSERT mit mehr als 14 Parametern geht nicht
Danke für die Tipps!
Also ab 15 Werten ist die Tdbquery1.sql.text plötzlich leer. Gleiches passiert auch mit .ADD(). Ich glaub jetzt hab ich ein Problem :/ - aber irgendwie kann doch nicht schon bei 14 Werten Schluss sein? |
Re: TurboDB - INSERT mit mehr als 14 Parametern geht nicht
Wenn Du SQL-Parameter verwendest, wie sieht es dann aus?
|
Re: TurboDB - INSERT mit mehr als 14 Parametern geht nicht
Auch wenn ein ein glühender Beführworter der parametrisierten Abfrage bin würde ich dieses Problem an den Hersteller melden. Schaut mir nach einen Bug aus.
|
Re: TurboDB - INSERT mit mehr als 14 Parametern geht nicht
Hallo,
ist Text so auch noch leer?
Delphi-Quellcode:
Eventuell gibt es da ja intern irgendwo eine Stringbegrenzung auf 255 Zeichen und Dein "Einzeiler" ist ein bisserl zu lang geworden?
Tdbquery1.Close;
Tdbquery1.SQL.Clear; Tdbquery1.SQL.Add('INSERT INTO welddata ('); Tdbquery1.SQL.Add('column2,'); Tdbquery1.SQL.Add('column3,'); Tdbquery1.SQL.Add('column4,'); Tdbquery1.SQL.Add('column5,'); Tdbquery1.SQL.Add('column6,'); Tdbquery1.SQL.Add('column7,'); Tdbquery1.SQL.Add('column8,'); Tdbquery1.SQL.Add('column9,'); Tdbquery1.SQL.Add('column10,'); Tdbquery1.SQL.Add('column11,'); Tdbquery1.SQL.Add('column12,'); Tdbquery1.SQL.Add('column13,'); Tdbquery1.SQL.Add('column14,'); Tdbquery1.SQL.Add('column15),'); Tdbquery1.SQL.Add('VALUES (,'); Tdbquery1.SQL.Add(QuotedStr('0') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('5454') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('324') + ';'); Tdbquery1.ExecSQL; Bis column14 sind's unter 255 Zeichen, darüber wird's dann ein bisserl mehr. Auf jeden Fall mal mit Parametern versuchen, eventuell kommst Du damit dann an einem eventuell vorhandenen Längenproblem vorbei. Interessant wäre es zu wissen, ob es ein Längenproblem pro Zeile oder für das gesamte SQL-Statement gibt. |
Re: TurboDB - INSERT mit mehr als 14 Parametern geht nicht
@Nahpets
ich musste es noch etwas debuggen, aber deine Version geht bis jetzt (hab mal zum Test noch einen Wert hinzugefügt - column16 in dem Code unten). Melde mich wieder! DANKE für die super Hilfe.
Delphi-Quellcode:
Tdbquery1.Close;
Tdbquery1.SQL.Clear; Tdbquery1.SQL.Add('INSERT INTO welddata ('); Tdbquery1.SQL.Add('column2,'); Tdbquery1.SQL.Add('column3,'); Tdbquery1.SQL.Add('column4,'); Tdbquery1.SQL.Add('column5,'); Tdbquery1.SQL.Add('column6,'); Tdbquery1.SQL.Add('column7,'); Tdbquery1.SQL.Add('column8,'); Tdbquery1.SQL.Add('column9,'); Tdbquery1.SQL.Add('column10,'); Tdbquery1.SQL.Add('column11,'); Tdbquery1.SQL.Add('column12,'); Tdbquery1.SQL.Add('column13,'); Tdbquery1.SQL.Add('column14,'); Tdbquery1.SQL.Add('column15,'); Tdbquery1.SQL.Add('column16) '); Tdbquery1.SQL.Add('VALUES ('); Tdbquery1.SQL.Add(QuotedStr('0') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('5454') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('3243') + ','); Tdbquery1.SQL.Add(QuotedStr('324') + ');'); Tdbquery1.ExecSQL; |
Re: TurboDB - INSERT mit mehr als 14 Parametern geht nicht
KLAPPT mit oben genannter Methode. Kann jetzt 50 Werte eintragen. Der Code sieht zwar etwas "gewaltig" aus - aber es läuft.
VIELEN LIEBEN DANK an alle ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz