Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TurboDB - INSERT mit mehr als 14 Parametern geht nicht (https://www.delphipraxis.net/130544-turbodb-insert-mit-mehr-als-14-parametern-geht-nicht.html)

Tempdir 10. Mär 2009 10:00

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:
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;
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'.

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]

mkinzler 10. Mär 2009 10:20

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()

Tempdir 10. Mär 2009 10:42

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?

DeddyH 10. Mär 2009 10:44

Re: TurboDB - INSERT mit mehr als 14 Parametern geht nicht
 
Wenn Du SQL-Parameter verwendest, wie sieht es dann aus?

Bernhard Geyer 10. Mär 2009 10:52

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.

nahpets 10. Mär 2009 11:08

Re: TurboDB - INSERT mit mehr als 14 Parametern geht nicht
 
Hallo,

ist Text so auch noch leer?
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('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;
Eventuell gibt es da ja intern irgendwo eine Stringbegrenzung auf 255 Zeichen und Dein "Einzeiler" ist ein bisserl zu lang geworden?

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.

Tempdir 10. Mär 2009 12:39

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;

Tempdir 10. Mär 2009 12:45

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