Announcement

Collapse
No announcement yet.

Konzept mit ADO möglich ?

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

  • Konzept mit ADO möglich ?

    Ich habe ein Delphi-Prog das die Daten in einer Advantage-DB hält. Nun möchte ich einen Teil der Daten auf einen im Web befindlichen MS-SQL7-Server laden. Mit einem anderen Delphi-Programm sollen sich viele User die für sie richtigen Daten aussuchen und auf ihren Rechner (vsl. wieder Advvantage-DB) downloaden können.
    Das heißt. Daten müssen selektiert und programmgesteuert in den SQL-Server upgeloadet werden und selektiert und programmgesteuert wieder downgeloadet werden.
    Wichtig ist mir, daß alles aus dem Delphiprog. heraus erfolgt und keine Utils erforderlich werden.
    Ist dafür ADO geeigent ? (Habe ADO-Express mal bestellt)

    Danke für die Hilfe

  • #2
    Hallo,

    ADO greift über einen <i>OLE DB Provider</i> auf Datenbanken zu. Da für Advantage-Datenbanken von Microsoft kein Provider mit ausgeliefert wird, gibt es 2 Möglichkeiten:

    1. Wenn ein Thread-fähiger ODBC-Treiber (ab Version 3.x) zur Verfügung steht, kann der <i>Microsoft OLE DB Provider for ODBC Driver</i> verwendet werden, um über ADO auf die Advantage-Datenbank zuzugreifen.

    2. Eventuell stellt auch Advantage einen eigenen OLE DB-Provider bereit.

    Wenn als Web-Server der IIS (Internet Information Server) verwendet wird, stehen ASP (Active Server Pages) zur Verfügung. Dort kann man über den Zugriff auf die ADO-Objekte mit wenigen Zeilen auf die SQL Server 7-Datenbank zugreifen und die Daten als XML an den Delphi-Client zurückliefern (über eine HTTP-Verbindung, die von ADO auf der Client-Seite ohne eigenes Zutun automatisch aufgebaut wird, wenn man die Daten von einer URL auf eine ASP abfordert). Über das RecordSet-Objekt von ADO werden die XML-Daten ohne eigenes Zutun automatisch konvertiert, so dass die Daten dann an TADODataSet zugewiesen, angezeigt bzw. exportiert werden können.

    Für die Entwickler-Tage 2001 habe ich ein Beispiel vorbereitet, das demonstriert, mit welchem minimalen Aufwand (ASP: 8 Programmzeilen; Delphi-Programm: 7 Programmzeilen) so etwas möglich ist, wenn als Web-Server der IIS 5 von Windows 2000 zusammen mit ADO 2.5 eingesetzt wird.

    &#10

    Comment


    • #3
      Advantage stellt einen OLE DB jetzt zur Verfügung, wahrscheinlich muß ich dann meinen Provider aber noch dazu bewegen diesen im Web dazu zu ínstallieren oder nützt der mir auch lokal

      Comment


      • #4
        Hallo,

        der OLE DB Provider wird auf dem Rechner benötigt, von dem man über ADO auf die Datenbank zugreifen will. Angenommen, die Konfiguration sieht so aus: <br>
        a) Web-Server: SQL Server 7 (zentrale Daten) <br>
        b) Benutzer-Rechner: Advantage-Datenbank und Delphi-Programm <br>
        Wenn nun der Benutzer mit dem auf dem eigenen Rechner installierten Programm über ADO auf die Advantage-Datenbank zugreifen will, muss der Advantage-OLE DB Provider nur auf dem Benutzerrechner installiert sein. Beim Server-Server gibt es nichts zu tun - denn hier sorgt das Installations-Programm vom SQL Server 7 dafür, dass alles notwendige an Bord ist, um von externen Rechnern auf eine SQL Server 7-Datenbank zugreifen zu können

        Comment


        • #5
          Hallo
          das hört sich ja gut an. Hoffentlich bringt der Postbote gleich mein ADO-Express.Ich hatte mich von der Doku zum Verbindungsserver leiten lassen, der eine Installation auf dem SQL7 als notwendig beschrieb
          d.h. es ist jetzt möglich zu schreiben INSERT INTO db7 FROM adv ...?
          also sowohl mit ADO auf den WEB Server und mit ADO auf die locale Advantage zuzugreifen und im Programm die Daten auszutauschen ?

          Danke für die Hilfe, mals sehen ob ich Deine 2 Tage im Februar schaffe

          Comment


          • #6
            Hallo,

            derartige Fähigkeiten hängen vom OLE DB Provider ab. Während die JET ENGINE zum Beispiel in der Lage ist, Daten von/nach dBASE, Paradox, HTML, TXT, EXCEL etc. direkt zu lesen oder zu schreiben, wird das bei anderen Providern nicht der Fall ist. Ich würde daher in die Dokumentation von Advantage nachschauen. Der MS SQL Server 7 kann über ähnliche Wege auch direkt auf andere Datenbanken zugreifen, ob das aber auch mit Advantage geht, kann ich nicht sagen.

            In jedem Fall geht aber das direkte Umkopieren über 2 TADOConnection- und TADODataSet-Instanzen (1. Instanz liest die Daten aus der ersten Datenbank, das Programm geht in der Schleife durch alle Datensätze und schreibt die Daten über die andere Verbindung in die 2. Datenbank)

            Comment


            • #7
              Hallo,
              ich werde den 2. Weg mal probieren, das TADODataset hat aber auch einen Connectionstring, muß mich mal zum Unterschied zu TADOConnection einlesen.
              Was meinst Du mit Schleife ? So: INSERT INTO xx1 FROM (SELECT * FROM xx2) ?
              oder wirklich zeilenweise das Ergebnisset abarbeiten

              Comment


              • #8
                Hallo,

                wenn der Zugriff auf 2 verschiedene Datenbanken über <i>INSERT INTO Advantage SELECT * FROM SQLSRV7</i> nicht unterstützt wird und auch die MS SQL Server-Tools wie DTS nicht verwendet werden sollen, bleibt immer das eigene Umkopieren in einer Schleife übrig. Hier kann man eventuell auch Datentypen bzw. Informationen anpassen, wenn beide Datenbanken zu unterschiedlich sind

                Comment

                Working...
                X