Gå til innhold

Anbefalte innlegg

Hei,

 

Jeg har en Access database jeg bruker i Delphi gjennom ADO. Mitt store spørsmål er som følger: Hvordan søker man for et felt (field) som vi har definert en index for i Access?

 

For eksempel - dersom jeg skal finne ut om element 'x' er i ADOTableX, hvor jeg skal søke gjennom field 'abc' (dette er forøvrig PK feltet og er selvsagt indexed) for 'x'.

 

Seek funksjonen har blitt testet ut, men jeg får en feilmelding som forteller at denne funksjonen inne er støttet av ADO interfacet.

Lenke til kommentar
Videoannonse
Annonse
MyAdoTable.IndexName:='PK'; {hvis primærindexen, som indekserer felt 'abc', heter 'PK'}
MyAdoTable.Seek('x',soFirstEQ);

For mer informasjon se hjelp for TCustomADODataSet.IndexName

Jeg har testet denne koden, men får bestandig en feilmelding som sier at "Current provider does not support the necessary interface for Index functionality"...

 

Denne meldingen får jeg bestandig; enten jeg bruker MyAdoTable.Indexname:='PK' eller ei...

 

Jeg regner med at det er ADO interfacet som skaper problemene? Dersom du har fått denne koden til å fungere, regner jeg at du bruker en Jet 4.0 ADO connection og Windows XP??

 

Mange takk for svar,

Christoffer

Lenke til kommentar
regner jeg at du bruker en Jet 4.0 ADO connection og Windows XP??

Nei, jeg har aldri utviklet mot Access og jeg har aldri vært interessert i Index funksjonalitet på TAdoTable (jeg bruker TAdoQuery oftest siden jeg utvikler mot SQLServer). Men denne type koden funker hos meg mot TClientDataset, mot TTable og mot TtbTable (for Btrieve/Pervasive).

 

Her er en liten snutt fra Delphi help som kanskje løser problemet ditt (kanskje ikke):

 

Many providers do not support changing indexes while the dataset is active, raising an exception when an attempt is made to do this. Ensure that the dataset is closed before changing the index through the IndexName property and reopen the dataset after specifying a new index.

 

Eller - er du sikker på at du bruker den mest avanserte provideren som er tilgjengelig på din maskin? Kanskje bruker du "provider for ODBC services" mens du kunne brukt "provider for Jet X.Y" (ja, jeg har 4.0 der) når du lager ConnectionString.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...