![]() |
Datenbank: MySql • Version: 5.6.24 • Zugriff über: Delphi Xe5
Probleme mit MySql (Timeproblem)
brauche Hilfe,
ich habe eine Procedure geschrieben welche ein Tabelle leert und anschliessend wieder füllt. Die ersten SQL-Befehle sind 1. Truncate Table, 2. Insert Into Table Wenn ich die Procedure zum 1. mal aufrufe läuft alles ok. Wenn ich die Procedure zum 2. mal aufrufe bekomme ich bei dem Insert Into den Fehler "falsche SQL-Syntax". Normalerweise hate die Tabelle über 8000 Sätze. Wenn ich das gleiche Spiel mit nur einem Datensatz in der Tabelle mache läuft alles super. Keine Ahnung was das ist, auf jeden Fall kein Syntax-Error. Scheint ein Zeitproblem zu sein. ich hätte ja die Source geschickt, ist aber zu groß. Ich arbeite mit DBEXPRESS Komponenten. Gruß Jürgen Form1.SQLDataSet1.CommandText:='TRUNCATE TABLE Strecke'; h2:=Form1.SQLDataSet1.ExecSQL(True); if h2 <> 0 then begin JaNein:=messagedlg('Fehler beim Löschen Strecke', mtError, [mbOk], 0); abbruch:=True; close; end; Form1.SQLDataSet1.CommandText:='INSERT INTO Strecke (Type, Nummer, Einfahrt, Ausfahrt, Gleis, Gleisnummer, Stellung, vorher, nachher, Status) VALUES (:Type, :Nummer, :Einfahrt, :Ausfahrt, :Gleis, :Gleisnummer, :Stellung, :vorher, :nachher, :Status)'; Form1.SQLDataSet1.ParamByName('Type').Name:='Type' ; Form1.SQLDataSet1.ParamByName('Type').DataType:=ft Integer; Form1.SQLDataSet1.ParamByName('Type').Value:=0; Form1.SQLDataSet1.ParamByName('Nummer').Name:='Num mer'; Form1.SQLDataSet1.ParamByName('Nummer').DataType:= ftInteger; Form1.SQLDataSet1.ParamByName('Nummer').Value:=0; Form1.SQLDataSet1.ParamByName('Einfahrt').Name:='E infahrt'; Form1.SQLDataSet1.ParamByName('Einfahrt').DataType :=ftString; Form1.SQLDataSet1.ParamByName('Einfahrt').Value:=' '; Form1.SQLDataSet1.ParamByName('Ausfahrt').Name:='A usfahrt'; Form1.SQLDataSet1.ParamByName('Ausfahrt').DataType :=ftString; Form1.SQLDataSet1.ParamByName('Ausfahrt').Value:=' '; Form1.SQLDataSet1.ParamByName('Gleis').Name:='Glei s'; Form1.SQLDataSet1.ParamByName('Gleis').DataType:=f tInteger; Form1.SQLDataSet1.ParamByName('Gleis').Value:=0; Form1.SQLDataSet1.ParamByName('Gleisnummer').Name: ='Gleisnummer'; Form1.SQLDataSet1.ParamByName('Gleisnummer').DataT ype:=ftInteger; Form1.SQLDataSet1.ParamByName('Gleisnummer').Value :=0; Form1.SQLDataSet1.ParamByName('Stellung').Name:='S tellung'; Form1.SQLDataSet1.ParamByName('Stellung').DataType :=ftInteger; Form1.SQLDataSet1.ParamByName('Stellung').Value:=0 ; Form1.SQLDataSet1.ParamByName('vorher').Name:='vor her'; Form1.SQLDataSet1.ParamByName('vorher').DataType:= ftInteger; Form1.SQLDataSet1.ParamByName('vorher').Value:=0; Form1.SQLDataSet1.ParamByName('nachher').Name:='na chher'; Form1.SQLDataSet1.ParamByName('nachher').DataType: =ftInteger; Form1.SQLDataSet1.ParamByName('nachher').Value:=0; Form1.SQLDataSet1.ParamByName('Status').Name:='Sta tus'; Form1.SQLDataSet1.ParamByName('Status').DataType:= ftInteger; Form1.SQLDataSet1.ParamByName('Status').Value:=0; h2:=Form1.SQLDataSet1.ExecSQL(False); if h2 <> 1 then begin JaNein:=messagedlg('Fehler beim Anlegen Strecke', mtError, [mbOk], 0); abbruch:=True; close; end; Gruß Jürgen |
AW: Probleme mit MySql (Timeproblem)
Kämpfen wir uns mal an das Problem ran.
Ich sehe an deinem Quellcode schon ein paar Probleme die evtl. was mit dem Fehler zu tun haben. 1, Du verwendest Feldnamen die bei MySQL auch Schlüsselwörter sind ( ![]() Evtl. versucht MySQL bei weideren Ausführungen diese auch wirklich als Schlüsselwörter zu interpretieren 2, Was sollen die Zuweisungen bewirken? Form1.SQLDataSet1.ParamByName('Type').Name:='Type' ; Vor allem wen du mit Form1.SQLDataSet1.ParamByName('Stellung').Name:='S tellung'; Den Parameternamen änderst dürfte die zweite Ausführung des Commandtext fehlschlagen 3, Wenn du viele Werte Schreibst solltest du die Anweisung perparend
Delphi-Quellcode:
MyDS.CommandText:='INSERT INTO Strecke (Type, Nummer, Einfahrt, Ausfahrt, Gleis, Gleisnummer, Stellung, vorher, nachher, Status) VALUES (:Type, :Nummer, :Einfahrt, :Ausfahrt, :Gleis, :Gleisnummer, :Stellung, :vorher, :nachher, :Status)';
MyDS.Prepare; // Hier deine Schleife MyDS.ParamByName('Nummer').Value:=0; MyDS.ParamByName('Ausfahrt').Value:=' '; MyDS.ParamByName('Gleis').Value:=0; MyDS.ParamByName('Gleisnummer').Value :=0; ... h2:=Form1.SQLDataSet1.ExecSQL(False); // Hier Ende Schleife MyDS.Unprepare; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 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