Announcement

Collapse
No announcement yet.

Access (Jet) kann keinen Index somit auch kein seek ?!?

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

  • Access (Jet) kann keinen Index somit auch kein seek ?!?

    Ich möchte unter ADO, Access2000 via Jet provider die Funktion _Recordset.Seek benutzen. Dazu muß aber ja wohl ein Index gesetzt werden. Das quittiert mir der Provider immer mit dem Fehler :<br>
    "Der aktuelle Provider unterstützt nicht die erforderliche Schnittstelle für die Indexfunktion" (was laut _Recordset.Supports[adIndex] auch stimmt) <p>
    Was mach' ich da blos falsch ??? in der Doku (ADO-SDK) steht schwarz auf weiß: "(For example, the OLE DB Provider for Microsoft Jet supports Seek and Index.)"<p>
    Systemkonfiguraton:
    Win2000, Office 2000 mit Access, jet40sp3_comp.exe wurde testhalber installiert, Delphi 6, Zugriff direkt auf ADO-Objekte, oder auch via ADO-Express mit gleichem Mißerfolg<br>
    ADO-ConnectionString(bei aktiver Connection):<br>
    Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=E:\Programme\Gemeinsame Dateien\Borland Shared\Data\dbdemos.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDBatabase Password="";Jet OLEDB:Engine Type=5;Jet OLEDBatabase Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDBon't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
    <p>Danke für einen Tip.

  • #2
    Ich vermute mal, du verwendest als CurserLocation Client. Bei Access mußt du als CursorLocation Server verwenden. Dann wird auch die Seek-Funktionalität unterstützt

    Comment


    • #3
      Danke für den Hinweis, habe ich schon versucht, hat aber nicht geholfen. Nach nochmaligem Versuch hat es aber doch geklappt:<p>
      Man muß die Option adCmdTableDirect beim _Recordset.Open verwenden (bzw. TADOTable.TableDirect:=true). Ich bin nicht auf die Idee gekommen, daß TAdoTable es anders machen könnte als mit adCmdTableDirect, es wird aber per default (TableDirect=false) adCmdTable verwendet. Tatsächlich (siehe MDA-SDK ) wird aber seek nur bei adCmdTableDirect unterstützt. Du hattest aber natürlich recht, wenn man adUseClient als CursorLocation verwendet, geht es natürlich auch nicht. Es gibt eben viele Wege in ADO (allerdings führen nicht alle direkt zum Ziel ;-)

      Comment

      Working...
      X