[Access] lezen excelfile stopt na 1928 records - op win 98

Pagina: 1
Acties:

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 25-08 14:38

OZ-Gump

terug van weggeweest

Topicstarter
Ola,

We zijn hier bezig met het maken van een stukkie software in Access. Voor dat stukkie software moeten we het een en ander inlezen uit een excelbestand. Op onze ontwikkelmachines (Win XP) hadden we geen enkel probleem: alles werd correct geïmporteerd. Nu staat de software in een testomgeving (o.a. Win 98SE en ME), en opeens loopt de import vast op regel 1928 in het excelbestand. Op Google en Google Groups is er niks te vinden van een of andere max-waarde ofzo, maar dat lijkt het wel te zijn: zelfs als het Excelbestand volledig anders is loopt 'ie weer na 1928 regels vast. Heeft iemand van jullie een idee? Hier een stukje van de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim rs As Recordset
Dim appExcel As Object, wkbBook As Object, wksSheet As Object

  Set rs = dat.OpenRecordSet("tabel001")
  Set appExcel = CreateObject("Excel.Application")
  Set wkbBook = appExcel.Workbooks.Open(werkblad)
  Set wksSheet = wkbBook.ActiveSheet

    If IndelingExcelbestandJuist Then
       j = 2
       While wksSheet.cells(j, 1).Value <> ""
          Status.Caption = "Status: verwerken regel " & j - 1
          Me.Repaint
          rs.AddNew
          rs.Fields("...") = wksSheet.cells(j, 1).Value
          rs.Fields("...") = wksSheet.cells(j, 2).Value
          <KNIP>
          rs.Fields("...") = wksSheet.cells(j, 33).Value
          rs.Fields("User") = "Importeeractie"
          rs.Fields("UserDatum") = Now
          rs.Update
          j = j + 1
       Wend


T.I.A. voor eventuele reacties

My personal website


  • Antonius
  • Registratie: Juli 2000
  • Laatst online: 14:31
Is het aantal velden dat je inleest in je tabel wellicht om en nabij de 33?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 25-08 14:38

OZ-Gump

terug van weggeweest

Topicstarter
Ghoh Antonius, hoe raad je het zo...? ;)
rs.Fields("...") = wksSheet.cells(j, 33).Value
Ja dus, maar heb je daar dan een oplossing voor? Of dacht je van: tis bijna vrijdag, laat ik een slimme opmerking maken? :)

My personal website


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Antonius schreef op 29 November 2002 @ 12:23:
Is het aantal velden dat je inleest in je tabel wellicht om en nabij de 33?
Hoezo? Je gedachte is 33 * 1928 = 63624 < 65536 of zo?
Mijn respons wordt dan: 1985 * 33 = 65505 < 65536.

OZ-Gump: Probeer eens eens in de duizend maal het workbook opnieuw te openen? In de office OLE-api zitten hele vage geheugenlimieten...

Localhost, sweet localhost


Verwijderd

Exporteer in excel als tab delimited .txt bestand. Probeer nu nog eens in acces in te lezen...

  • ajslaghu
  • Registratie: Oktober 2000
  • Laatst online: 23-08 12:20
inderdaad zitten er op het aantal rows bv. beperkingen ik kan me herinneren dat ik destijds problemen rond de 16000 had een jaar of 4 geleden versie 97 ??

dus het aantal cellen zal ook wel beperkende factoor zijn.

Je kan dit toetsen door op target pc te openen en te sluiten en te kijken of er dan rijen verdweenen zin. office geeft geen foutmelding, ze gooit slecht de bv. andere 100000 rijen weg.

Als je het absurde aanneemt, kan je het tegenover gestelde bewijzen ??


Verwijderd

Je kan het natuurlijk ook met transferspreadsheet doen. Je import het in een tijdelijk tabel en pompt het daarna met een toevoegquery naar de uiteindelijke tabel.

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 25-08 14:38

OZ-Gump

terug van weggeweest

Topicstarter
@boschpj: dat zou een mogelijkheid zijn, maar dat is helaas (om de een of andere wazige reden van de opdrachtgever) niet mogelijk.

@kvdveer: _/-\o_ Dat werkt nog gewoon ook nog! Eerst had ik het zo gemaakt dat de complete Excel-app opnieuw startte, maar alleen het opnieuw openen van het workbook does the trick. En het is nog een stuk sneller dan de complete app herstarten ook.

edit:
Damn, moet toch volledig Excel herstarten. Na intensief testen toch problemen...


Even voor de volledigheid:
code:
1
2
3
4
5
If ((j Mod 1000) = 0) Then
  wkbBook.Close
  Set wkbBook = appExcel.Workbooks.Open(tbl1)
  Set wksSheet = wkbBook.ActiveSheet
End If


Nogmaals: dank voor alle reacties en kvdveer voor de oplossing!

[ Voor 8% gewijzigd door OZ-Gump op 29-11-2002 14:41 ]

My personal website


  • Antonius
  • Registratie: Juli 2000
  • Laatst online: 14:31
Sorry voor de late reply, ik ben wat dagen van huis geweest. Hmm, had ik natuurlijk kunnen zien ja, die 33 :)

Het probleem dat kvdveer noemt, bedoelde ik ook, en zijn oplossing is ook wat ik wilde suggereren. Dat levert belachelijke code op, zou ik zeker ook even wat commentaar bij zetten, maar een mooiere oplossing zie ik niet direct.

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 25-08 14:38

OZ-Gump

terug van weggeweest

Topicstarter
Heb 't nu zo gemaakt dat excel volledig sluit bij elke 1000 records. Ik kreeg toen het probleem dat Excel niet wilde sluiten, maar dat bleek uiteindelijk te komen door de late binding die ik gebruikte op het workbook, dus spreek ik die aan via appExcel.ActiveWorkbook. Heeft me ook maar een dag of twee gekost ;)
Leukste opmerking daarover van MS: This is by design. Maar goed. Het is er nu uit.
Thanks voor alle reacties!

My personal website

Pagina: 1