Avatar billede mortenah Nybegynder
04. februar 2004 - 09:55 Der er 6 kommentarer og
1 løsning

Adgang til foxpro database

Jeg har behov for at tilgå en foxpro database fra et C++ program. Hvis jeg går gennem ODBC meldes der fejl på flere kolloner, så jeg skal gerne tilgå den mere direkte. Findes der et API til Foxpro eller noget??
Avatar billede arne_v Ekspert
04. februar 2004 - 15:14 #1
Hvis ODBC melder fejl (og du bruger den rigtige driver), så tyder det vel
på at filerne er korrupte og så kan det blive svært at læse dem uanset hvad.

Men elles bruger FoxPro mig bekendt gode gamle DBase format og det er
rimeligt nemt at læse.

Jeg har nogle .H filer liggende somewhere.
Avatar billede mortenah Nybegynder
04. februar 2004 - 15:46 #2
Det sjove er at man godt kan læse databasen direkte fra Foxpro, men programmer der kører via ODBC melder fejl. Muligvis fordi der står står alfanumeriske tegn i et numerisk felt...

Hvis du har nogle filer der lader mig læse dem vil jeg da gerne kigge nærmere på dem.....
Avatar billede arne_v Ekspert
04. februar 2004 - 15:53 #3
Jeg postede lidt her:
  http://www.eksperten.dk/spm/429090
Avatar billede mortenah Nybegynder
06. februar 2004 - 09:16 #4
Tak for det...

det er nemt nok at læse selve *.dbf-filen... først en databaseheader, derefter field-headerne og derefter selve record dataene.

Men jeg har lidt svært ved at finde ud af sammenhængen til memo-felterne, der jo ligger seperat i *.fpt-filen.

Ved du hvor man kan finde noget info om det?
Avatar billede arne_v Ekspert
16. februar 2004 - 21:57 #5
Stadig interesseret ?
Avatar billede mortenah Nybegynder
18. februar 2004 - 09:56 #6
Ja, jeg er stadig interesseret...
Avatar billede arne_v Ekspert
18. februar 2004 - 21:17 #7
DBF indeholder:

1 * TableHeader
N * FieldHeader
0x0D
M records

record X findes på offset TableHeader.HeaderSize + X * TableHeader.RecordSize

FieldHeader.Displacement og FieldHeader.FieldLength angiver et felt i recorden

Memo felters værdi er et tal i tekst form

denne værdi * 512 er offset i DBT filen for MemoValueHeader

MemoValueHeader.Offset og MemoValueHeader.RecLength angiver hvor selve data
befinder sig i DBT filen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester