Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MSaccess] Buitensporig geheugen gebruik bij laden tabel

Pagina: 1
Acties:

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
Hoi allemaal,

Ik heb een vraagje. Ik heb een Access frontend database (GUI) welke gekoppeld staat aan een MSSQL 2005 server. Sommige gebruikers moeten data ophalen uit een order tabel gewoon in tabelweergave (F11 --> tables --> tabelnaam) om zo data aan te passen.

Nu wil het zo zijn dat deze tabel meer dan 350.000 records bevat van gem. 2.8kb groot (+- 1000MB data)
Het laden van deze tabel duurt zo ontzettend lang waarna er ook nog gezocht moet worden in die tabel via access. Als ik kijk naar het geheugen gebruik van access tijdens het laden van de tabel zit dit tussen de 1000 en 1500 MB! Heeft iemand enig idee hoe ik dit kan oplossen want zoeken kost per zoekopdracht ong. 10min.

Ik heb subdatasets al op none gezet. En volgens mij is het ook geen snapshot want we kunnen data aanpassen, dus zal een dynaset moeten zijn..

Ik hoop dat iemand hier een oplossing heeft voor de lange zoek- en laadtijden.

iRacing Profiel


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
Da's wel erg hardcore, rechtstreeks in de tabel je orderdata aanmaken.

Ik zou het middels een formulier doen, dat je baseert op een query.

SELECT * FROM tblTabel WHERE ID = 123

en je laat in een opzoeklijstje in de header van je formulier de source van je formpje aanpassen.
Je opzoeklijstje heeft dan bijvoorbeeld als bron: SELECT ID, orderomschrijving FROM tblTabel.

Bij het event "formulier openen" doe je dan zoiets als: me.recordsource = "SELECT * FROM tblTabel WHERE ID = 0" om met een leeg formulier te beginnen.

Houdoe


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
Witte schreef op woensdag 10 juni 2009 @ 12:21:
Da's wel erg hardcore, rechtstreeks in de tabel je orderdata aanmaken.

Ik zou het middels een formulier doen, dat je baseert op een query.

SELECT * FROM tblTabel WHERE ID = 123

en je laat in een opzoeklijstje in de header van je formulier de source van je formpje aanpassen.
Je opzoeklijstje heeft dan bijvoorbeeld als bron: SELECT ID, orderomschrijving FROM tblTabel.

Bij het event "formulier openen" doe je dan zoiets als: me.recordsource = "SELECT * FROM tblTabel WHERE ID = 0" om met een leeg formulier te beginnen.

iRacing Profiel


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
Oplossing heb ik gezocht in een los formulier maken welke om een id vraagt bij openen en daarna gewoon allemaal textboxen laat zien welke te veranderen zijn en bij afsluiten van het formulier wordt dit netjes in de database opgeslagen.

Quick and dirty :D

iRacing Profiel


  • bazs2000
  • Registratie: November 2000
  • Laatst online: 26-09 09:12

bazs2000

Pixels zo groot als een atoom

jvaneijk schreef op woensdag 10 juni 2009 @ 15:09:
Oplossing heb ik gezocht in een los formulier maken welke om een id vraagt bij openen en daarna gewoon allemaal textboxen laat zien welke te veranderen zijn en bij afsluiten van het formulier wordt dit netjes in de database opgeslagen.

Quick and dirty :D
Is wel heel vunzig als oplossing.
Maakt toch gewoon een form gebaseerd op een query en laat een gebruiker lekker gegevens aanpassen. Vervolgens met een "UPDATE" query de gegevens opslaan, het ophalen gaat daarmee niet sneller maar gebruikers zullen de boel niet onnodig vertragen wanneer jouw methode de boel overdadig belast.

En waar heb jij nu een index op liggen? Ik heb databases waarin 1.000.000+ records in staan maar voelen niet zwaar aan tijdens het draaien van een query. Wanneer je een grote database hebt (100.000+ records) moet je selectief data gaan ophalen. Ineens wordt het belangrijker 'hoe' je data ophaalt, zeker in een multi-user omgeving.

Populeer pulldowns en andere besturingselementen niet on the fly maar plaats deze gegevens in een tabel. Koppel dit vervolgens aan de tabel met ordergegevens en je kan wonderen verrichten. Een kleine tabel doorloop je immers sneller dan een grote. :)

Krankzinnige muziek vind je hier.