Announcement

Collapse
No announcement yet.

TADOTable, TableDirect, SQL in TableName, SQL Server

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TADOTable, TableDirect, SQL in TableName, SQL Server

    Hallo,

    ich hab folgendes Problem:
    Die Software, die ich seit kurzem betreue, soll auf den Sql Server umgestellt werden. Die Applikation ist mit Delphi 6 entwickelt worden. Im Quellcode wird an sehr vielen Stellen TADOTable in Verbindung mit TableDirect := True verwendet. Nun unterstützt der Sql Server kein cmdTableDirect. Was das ganze nun noch schlimmer macht ist, dass noch dazu SQL-Stmts im TableName eingetragen sind.
    Bsp:
    Code:
      
      t := TADOTable.Create(nil);
      t.ConnectionString := <<ConnectionString>>
      t.TableDirect := True;
      t.TableName := 'SELECT col1, col2 FROM tab';
      t.Open;
    Für die derzeitigen Datenbanken (MS Access und Sqlbase) funktioniert dies einwandfrei, jedoch konnte ich dieses Beispiel nicht auf den Sql Server übertragen. Der Sql Server unterstützt cmdTableDirect nicht und lässt im TableName kein Sql-Stmt zu (ist dies korrekt?).
    Jetzt besteht mein Problem darin, dass der gesamte Quellcode mit solchen Konstrukten übersät ist. Wie kann ich (möglichst einfach, mit wenig Aufwand) die Umstellung machen (wenn möglich auch so, dass die anderen Datenbanken weiterhin unterstützt werden)?

    Meine erste Idee wäre eine Subklasse von TADOTable zu erstellen, welche im Hintergrund eine TADOQuery verwendet. Jedoch hab ich mich bisher nur sehr wenig mit ADO beschäftigt und kann die Schwierigkeiten kaum abschätzen. Es stellt sich schließlich auch die Frage, ob dies überhaupt möglich ist und zu einer Lösung führt?

    Ich wäre sehr dankbar, wenn mich jemand beraten könnte. Danke :-)
    Zuletzt editiert von edwpi; 15.09.2009, 10:07.

  • #2
    Hallo,

    habe das ähnlich durch. So bin ich vorgegangen:
    1. alle *.dfm in Text umgewandelt (mit Delphis Convert.exe)
    2. ein Beispiel manuell umgestellt (TADOQuery würde ich in Deinem Beispiel vorschlagen)
    3. mittels eines Hilfsproggis dfm-s parsen und nach dem manuellen Muster aus den betreffenden Tables Querys machen (klappte super)
    4. Ggf. manuelle Nacharbeit für besondere Fälle

    Hinweis: ein wenig Vorarbeit für z.B. gleiche Abfolge im Quelltext (wie in deinem Beispiel) sollte drin sein und vereinfacht die Sache unheimlich.

    Comment

    Working...
    X