AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Paradox to Firebird

Ein Thema von f4k3 · begonnen am 19. Nov 2008 · letzter Beitrag vom 21. Nov 2008
 
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#11

Re: Paradox to Firebird

  Alt 19. Nov 2008, 11:42
Zitat von Nersgatt:
Das Prinzip ist, die eigentliche Query nur einmal zu erstellen (Firebird muss dann auch nur einmal den Querytext parsen und prüfen, ob die Syntax passt).
In Deiner Schleife füllst Du dann nur noch die Parameter.

Für Deinen Fall würde das ungefähr so aussehen (aus dem Kopf zusammen geschrieben, Teilweise Pseudo-Code):


Delphi-Quellcode:
sqFirebird.SQL.Clear;
sqFirebird.SQL.Add('INSERT INTO ' + cbFirebirdTable.Text + '(NUMMER, OBERBEGRIFF) VALUES (:Nummer, :Oberbegriff)');
sqFirebird.PrepareStatement; {Veranlasst Firebird, die Syntax zu prüfen und die Auflistung der Paramter wird erstellt}

FÜR ALLE DATENSÄTZE AUS DER QUELLTABELLE (Schleife)

  {Werte in die Parameter schreiben}
  sqFirebird.ParamByName('NUMMER').AsString := tblBDE.FieldByName('Nummer').AsString;
  sqFirebird.ParamByName('Oberbegriff').AsString := tblBDE.FieldByName('Oberbegriff').AsString;
  sqFirebird.Prepared := True;
  sqFirebird.ExcecSQL(); {und abfeuern}

NÄCHSTER DATENSATZ
So ungefähr.

Gruß,
Jens
mhm ... funzt irgendwie net ... also ich hab in der Query die Params hinzugefügt ... mein code sieht so aus ...

Delphi-Quellcode:
if tblBDE.TableName = 'ART.DBthen
  begin
    tblBDE.First;

    while not tblBDE.Eof do
    begin
      sqFirebird.ParamByName('Nummer').AsString := tblBDE.FieldByName('Nummer').AsString;
      sqFirebird.ParamByName('Oberbegriff').AsString := tblBDE.FieldByName('Oberbegriff').AsString;

      with sqFirebird.SQL do
      begin
        Clear;
        Add('INSERT INTO ' + cbFirebirdTable.Text + '(NUMMER, OBERBEGRIFF) VALUES(:Nummer, :Oberbegriff)');
        sqFirebird.PrepareStatement;
      end;

      sqFirebird.Prepared := True;
      sqFirebird.ExecSQL();
      
      tblBDE.Next;
    end;
  end
dann bekomm ich zur Laufzeit eine Exception sobald ExecSQL() ausgeführt wird ...

Exception-Klasse EDatabaswError mit Meldung 'sqFirebird: Die Feldnamen für %s konnten nicht erkannt werden'
Sascha
  Mit Zitat antworten Zitat
 


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 22:45 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