Announcement

Collapse
No announcement yet.

ADO Select mit ClUseServer bei Access: ein Datensatz fehlt

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

  • ADO Select mit ClUseServer bei Access: ein Datensatz fehlt

    Hallo,

    um die Geschwindigkeit zu erhöhen habe ich die CursorLocation auf ClUseServer eingestellt. Ein Select liefert nun einen Datansatz weniger.

    Kennt jemand dieses Problem, bzw wie kann es behoben werden ?

    Frank

  • #2
    Problem gefunden,

    Cursortyp ctOpenForwardOnly ( soll die schnellste Methode sein)
    funktioniert nicht.

    Fran

    Comment


    • #3
      Hallo,

      die von Borland ausgelieferten ADO Express-Komponenten sind an dieser Stelle nicht ganz fehlerfrei. Was passiert, wenn in der Ereignisbehandlungsmethdoe für <b>AfterOpen</b> die folgenden Anweisung untergebracht werden?
      <pre>
      Recordset.MoveFirst;
      CursorPosChanged;
      Resync([]);
      </pre>
      P.S: Um welche Datenbank und welche OLE DB-Provider handelt es sich

      Comment


      • #4
        Hallo Herr Kosch,

        habe dies jetzt noch nicht ausprobiert. Ich bin was die Geschwindigkeit meiner Appl. angeht, schwer entäuscht. Ich hatte gehofft, mit ADO würde es schneller als mit BDE oder ODBC gehen. Stattdessen ist es sogar langsamer geworden. Quelldatenbank und Zieldatenbank ist bei mir Access97. Die von Ihnen im Forum erwähnten Optimierungen habe ich bereits berücksichtigt. Mit der vorhandenen Geschwindigkeit ist mein Programm nicht einsetzbar. Hierbei geht es um Diagnosedaten aus Fernverkehrszügen, die gewandelt und um weitere Informationen ergänzt werden müssen. Für eine Flotte können dies viele Daten werden. Ein altes DOS Programm auf dBase erledigt eine solche Wandlung in Sekunden. Mit BDE oder ADO benötige ich mehrere Minuten.Welchen Weg kann man noch gehen ? Das Programm soll zukunftsfähig sein und auf verschiedenen Windowsplattformen laufen.
        Wenn Access die falsche Datenbank ist, was bietet sich sonst noch an ?
        Zu berücksichtigen ist die Lizenfrage und einfache Installation.
        Mit ODBC hatte ich bisher die beste Performance. Allerdings müßte ich zur Laufzeit die ODBC Verbindungen ändern können. Geht dies und wie ?

        mfg Fran

        Comment


        • #5
          Hallo,

          ich gehe davon aus, dass für ACCESS die Einstellung <b>clUseServer</b> und somit bereits ein Server-seitiger Cursor für die Microsoft JET Engine genutzt wird.

          Generell ist das alte ACCESS 97-Format problematisch. Microsoft hat dazu die folgende Warnung veröffentlich: "<i>The OLE DB provider for Jet 4.0 native database format is incompatible with Access 97 (3.5 format), so it must use an ISAM driver to read and write (UNICODE - ANSI translations) to older database format. To improve performance, upgrade your database to Access 2000 which uses the newer 4.0 format. Remember to upgrade your System database (.MDW) also.</i>".

          Wenn ADO auf das ACCESS 97-Format zugreift, muss jedesmal eine temporäre Konvertierung gemacht werden. Die Situation bessert sich erst dann, wenn die MDB auf das neue 2000er-Format umgestellt wird. In Delphi wird dazu die Typbibliothek für <i>Microsoft Jet and Replication Objects 2.x Library</i> importiert und die so von Delphi generierte Datei »JRO_TLB.pas« in das Projekt eingebunden. Über die Methode <b>CompactDatabase</b> des JetEngine-Objekts kann die Datenbank komprimiert und gleichzeitig in das neue Format von ACCESS 2000 konvertiert werden.
          <pre>
          procedure TADODBTest.TestButtonClick(Sender: TObject);
          const
          CS = 'Data Source=C:\Database\Test.mdb';
          CS1 = 'Data Source=C:\Database\Test40.mdb;Jet OLEDB:Engine Type=5';
          var
          JE: IJetEngine;
          begin
          JE := CoJetEngine.Create;
          JE.CompactDatabase(CS, CS1);
          end;
          </pre>

          P.S: ACCESS hat generell seine Schwächen, wenn mehrere Benutzer im Netzwerk auf umfangreiche Tabellen gemeinsam zugreifen. In diesem Umfeld schlägt die grosse Stunde der SQL-Server

          Comment


          • #6
            Hallo Herr Kosch,

            vielen Dank für diese Hinweise.

            Frank Baudoui

            Comment

            Working...
            X