[Delphi] Hoe lees je veel DBF records uit

Pagina: 1
Acties:
  • 187 views sinds 30-01-2008
  • Reageer

  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
Moet een aantal DBF files uitlezen, data eruit lichtelijk verbouwen en vervolgens inserten in een sql-server db.

Nu is dit op zich niet zo moeilijk, maar ik krijg een "Translation error. Out of bound" van de EDBEngine :( Als ik m'n prog run. Het compiled zonder warnings of whatever.

Ik gebruik TTable om de DBF file in te laden.
code:
1
2
3
4
5
6
7
  try
    DBFTable.DatabaseName := edtPathDBF.Text;
    DBFTable.TableName := 'INVOICES.DBF';
    DBFTable.Open;
  except
    showmessage('Check je path settings. Het DBF bestand is niet leesbaar!');
  end;


Vervolgens link ik een datasource component aan de ttable. Met de dataset in de datasource lees ik vervolgens de waarden etc. uit en doe de bewerkingen. Vervolgens bouw ik een INSERT query die ik door een adosqlquery laat uitvoeren om hem in de sql-server db te kicken.

ik gebruik een for loop die van 0 t/m dscrDBF.DataSet.RecordCount loopt.

Ik heb met debuggen al gechecked of het toevallig mis gaat op het moment van het uitvoeren van de insert-query. Dit is niet het geval. Ik heb de run meerdere malen gedaan en het gaat ook niet steeds op dezelfde plek mis (record). Het loopt door t/m ongeveer 82000 records, daarna gaat het fout.

Iemand een andere manier hoe ik een DBF file kan doorlopen? Of een oplossing voor dit probleem?

What are clouds made of? Linux servers mostly!


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Delphi:
1
2
3
4
5
6
DBTable.First;
while not DBTable.EOF do begin
  // Do Something

  DBTable.Next;
end;

We adore chaos because we like to restore order - M.C. Escher


  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Zou je het met een offset niet kunnen proberen? Dus eerst 0 t/m 50.000 en dan van 50.001/ 100.000 etc.

En wat gebeurt er als je alleen de regels tussen 82.000 en 83.000 pakt? Gaat het dan ook fout?

Als er wat verkeerds in het DBF bestand staat en je checkt dat niet, dan kan er natuurlijk van alles gebeuren.

/just food for thought

Verstand van Voip? Ik heb een leuke baan voor je!


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
Dit gaat al sneller... hij runt nu. Ben benieuwd.

What are clouds made of? Linux servers mostly!


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
Ik check al m'n vars. Null, Not Null, etc. etc. Type checks. Alles wordt gechecked.

Ik heb al met offsets gechecked. Dat is het probleem niet. Ik kan het wel in stukken doen, maar ik vraag me af tegen welk limiet je aanloopt als je "slechts" 80000 records or so hebt.

What are clouds made of? Linux servers mostly!


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
While loopje ipv for maakt niets uit.

Wederom: Translation Error. Value out of bounds. :'(

Word hier lichtelijk kriegel van.... deze keer was het weer op record 80072. Vorige keer op 76929.

Iemand een idee hoe dit op te lossen is?

What are clouds made of? Linux servers mostly!


  • Boss
  • Registratie: September 1999
  • Laatst online: 15-05 17:35

Boss

+1 Overgewaardeerd

offtopic:
Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif -knopje is ook best handig!


- Wat voor code heb je verder?
- Is er iets 'vreemds' met die records waar 'ie op hangt?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
Heb probleem gevonden denk ik. Als ik de CPU output bekijk push hij een register, cleared het gelijk erna en probeerd het vervolgens nog een keer te pop-en. Dit lijkt me geen normale actie. Iemand een idee hoe dit kan? Ik heb het in delphi 7 geprobeerd en delphi 2005.

What are clouds made of? Linux servers mostly!


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
Boss schreef op donderdag 03 februari 2005 @ 00:10:
offtopic:
[afbeelding] -knopje is ook best handig!


- Wat voor code heb je verder?
- Is er iets 'vreemds' met die records waar 'ie op hangt?
Nee, records zijn gewoon goed. Zowel de client app die op de oude DBF's werkt als MS Access hebben geen problemen om de DBF helemaal te openen en de betreffende records te zien.

What are clouds made of? Linux servers mostly!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Toch is de manier die LordLarry postte de manier om een table uit te lezen. De fout zal dus ergens anders in je implementatie zitten. Laat eens wat meer code zien. En step eens door je code heen om te kijken op welke regel het mis gaat, en welke waarde je variabelen dan hebben. Dit is vrij standaard debugwerk hoor. :)
Boss schreef op donderdag 03 februari 2005 @ 00:10:
offtopic:
Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif -knopje is ook best handig!
^^ :/

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1