comprimeren database, records verdwijnen

  • Onderwerp starter Onderwerp starter scw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

scw

Gebruiker
Lid geworden
5 jun 2009
Berichten
530
Hallo,

Ik vraag mij af hoe het volgende mogelijk is:

Ik heb een grote database met zo'n 600.000 records en was voorheen zo'n 2 GB groot. Toen ik heb ik hem gecomprimeerd waardoor er nog maar 200mb overbleef aan bestandsgrootte, welke met het aanpassen en openen vervolgens weer uitgroeide naar 1,2 gb. Enfin, maar het probleem is wanneer ik hem comprimeer dan gooit Access er heel veel records uit (verwijderen) :confused:

Er blijven bij mij records met jaar 2010 instaan, maar voorgaande jaren gooit verdwijnen zodra ik comprimeer. Jullie begrijpen dat ik benieuwd ben naar de oorzaak, maar nog meer hoe ik dit kan voorkomen, want het terugzetten van al die records is nogal tijdsintensief :( en vervelend werk om iedere keer weer te doen.

Gr, scw!:thumb:
 
Ik heb nog nooit meegemaakt dat met <Comprimeren en Herstellen> records worden weggegooid, en dat zou uiteraard ook helemaal niet mogen... Wat (o.a.) gebeurt bij C&H, is dat de een record bij verwijderen nog niet fysiek uit de db is verwijderd, waardoor de ruimte van dat record nog gewoon in de db blijft staan. Met C&H worden verwijderder records wèl definitief verwijderd. Maar ze zijn dan dus al door de gebruiker weggegooid. Daarom zie je ook dat na C&H de Autonummers weer netjes aansluiten, mits er althans geen verwijzingen zijn blijven staan naar andere records.
Misschien heb je bij je Relaties aangegeven dat Gerelateerde Records trapsgewijs moeten worden verwijderd? Overigens zouden er dan ook geen records mogen verdwijnen bij C&H.
Hoeveel records van de 600.000 ben je kwijt?
 
Hoi Octafish,

Dank voor je hulp en antwoord. Tjah, volgens mij moet en kan het ook niet zo zijn dat C&H die records verwijderd. Maar vreemd genoeg merk ik na een bepaalde periode telkens dat bepaalde jaren verwijderd zijn uit de brontabel. :( Mogelijk kom ik er dan nog eens achter, wat er misgaat... Nu heb ik een aantal keren C&H gedaan en lijkt het er gewoon in te blijven staan. Maar ik weet (bijna) zeker dat wanneer ik over een x aantal dagen kijk dat er plotseling alleen weer 2010 records instaan en dat 2008 + 2009 records zijn verwijderd.

Bovendien, ik haal bij deze brontabel de gegevens uit diverse Excel bestanden d.m.v. queries. Echter, hij gooit er ook een hoop lege records bij... meerdere honderden in ieder geval. Hoe zou dit mogelijk komen en nog belangrijker hoe kan ik dit weer voorkomen?? :)

Nogmaals dank,

scw:thumb:
 
Dat laatste is weer een heel ander probleem... Dat lijkt erop alsof je import of koppeling met Excel niet met de juiste gegevens is verbonden. Werk je met Naambereiken in Excel, of importeer je een heel werkblad?
 
Inderdaad, ik importeer een heel werkblad.
 
Je kunt eens proberen om een Naam aan je gegevens te geven en die te importeren. Dat zou in ieder geval het probleem van de extra rijen moeten verhelpen.
 
Excuses,

Mogelijk begrijpen we elkaar hier verkeerd. Het is wel zo dat er kolomkoppen zijn. Vervolgens selecteer ik in Access welke kolommen geimporteerd moeten worden...
 
Misverstandje inderdaad; je kunt aan een blok cellen een Naam geven (<Invoegen>, <Naam>, <Definiëren>). Uiteraard bevat de eerste rij de Veldnamen voor je tabel. Bij het importeren kun je vervolgens aangeven of je een Naambereik wilt importeren, of een Werkblad. Bij de laatste optie loop je het risico dat er lege rijen worden geïmporteerd, bij de eerste (meestal) dus niet.
 
Hoi Octafish,

Ik begrijp zeker wat je bedoeld. Echter, ik maak op dit moment even gebruik van Access 2007, thuis wel van Access 2003. Met een blok cellen bedoel je in de tabel neem ik aan? En dan in ontwerpweergave of in werkbladweergave? Is het (wat in Access 2007 heet) 'Rename column' toevallig?

Excuses dat ik nog om wat verduidelijking vraag...

Bedankt ik denk dat hier de oplossing ligt voor een groot deel!

gr. Scw :)
 
We zitten nog in de misverstand fase ;)
Wat ik bedoel is het volgende: in je Excel bestand kun je van een reeks cellen een naam maken. Als je in A1:G1 de Veldnamen hebt staan, en in A2:G234 de gegevens, dan selecteer je het cellenbereik A1:G234, en (makkelijkste methode) typ je in het Naamvak (links van de Formulebalk) een naam voor het bereik, bijvoorbeeld Database. (Is een hele goede naam, want die levert nog extra voordelen op...)
Als je het bereik wilt uitproberen, klik je vervolgens eerst in een willekeurige cel, bijvoorbeeld C4. Het Naamvak geeft nu de naam van de cel, C4. Als je vervolgens op de pijlknop van het Naamvak klikt, zie je één gedefinieerde naam staan, in dit geval dus Database. Als je die selecteert, zal het voorgedefinieerde blok cellen worden geselecteerd. Je bereik zou hiermee klaar moeten zijn.

Ga je de gegevens nu importeren in Access, dan krijg je eerst de optie <Werkbladen weergeven> of <Benoemde bereiken weergeven>. Je kiest hier dan <Benoemde bereiken>, en vervolgens het bereik Database (weer volgens voorbeeld).
De rest van het traject blijft hetzelfde.
 
ahah helemaal duidelijk!! Dat zijn de tips! Geweldig goed hoor! Misverstand uit de lucht!
 
He Octafish,

Gezien het feit dat de Excel tabellen voor iedere maand opnieuw uit het systeem komen (+/- 12 stuks), zou dat betekenen dat er iedere maand deze kolommen handmatig een naam moet worden gegeven. Uiteindelijk is dat misschien niet zo handig, juist als je zo veel mogelijk wilt automatiseren... Nu vraag ik me het volgende af: er is een simpele query (te maken) om alle Lege velden gewoon er uit te knikkeren? Dan laat ik dat gewoon in m'n VBA code opnemen, en gaat dat ook automatisch zo... :rolleyes:
 
Nu vraag ik me het volgende af: er is een simpele query (te maken) om alle Lege velden gewoon er uit te knikkeren?

Met een verwijderquery moet dat volgens mij kunnen. Gewoon even proberen.
 
Heb je al eens geprobeerd om een Importspecificatie te maken? Je kunt dan (denk ik) wel gewoon een werkblad als bron nemen, en bij het importproces via de knop <Geavanceerd> velden specificeren die je wilt importeren. Dan zie je ook gelijk of er rariteiten in het werkblad zitten.
Ander trucje, dat ik zelf regelmatig toepas: via een macro in Excel het gegevensblok een naam geven, die dan automtisch wordt bijgewerkt bij het sluiten van het werkblad, zodat het bereik altijd klopt. Want je hebt natuurlijk gelijk als je stelt dat je dat niet met de hand moet doen, want dat lokt problemen uit...
 
Jah ik begrijp het. Inderdaad maak ik nu gebruik van een importspecificatie. Maar op dit moment selecteer ik daar een werkblad i.p.v. een range. Wanneer je dan de optie 'Werkblad' selecteert, zie je toch altijd een voorbeeldschermpje met de data. Dat ziet er gewoon goed uit qua kolommen. Echter het aantal rijen loopt maar tot 25, zodat je niet ziet hoeveel rijen onderin nog leeg zijn. Ik ga kijken wat ik kan uitrichten met die 'Range' optie i.c.m. eventueel een macro in Excel... :thumb: voor de tip
 
We zitten nog in de misverstand fase ;)
Wat ik bedoel is het volgende: in je Excel bestand kun je van een reeks cellen een naam maken. Als je in A1:G1 de Veldnamen hebt staan, en in A2:G234 de gegevens, dan selecteer je het cellenbereik A1:G234, en (makkelijkste methode) typ je in het Naamvak (links van de Formulebalk) een naam voor het bereik, bijvoorbeeld Database. (Is een hele goede naam, want die levert nog extra voordelen op...)
Als je het bereik wilt uitproberen, klik je vervolgens eerst in een willekeurige cel, bijvoorbeeld C4. Het Naamvak geeft nu de naam van de cel, C4. Als je vervolgens op de pijlknop van het Naamvak klikt, zie je één gedefinieerde naam staan, in dit geval dus Database. Als je die selecteert, zal het voorgedefinieerde blok cellen worden geselecteerd. Je bereik zou hiermee klaar moeten zijn.

Ga je de gegevens nu importeren in Access, dan krijg je eerst de optie <Werkbladen weergeven> of <Benoemde bereiken weergeven>. Je kiest hier dan <Benoemde bereiken>, en vervolgens het bereik Database (weer volgens voorbeeld).
De rest van het traject blijft hetzelfde.

Het probleem met het importeren van gegevens uit een excel sheet is dat wanneer je gegevens delete excel "denkt" dat de velden nog steeds gevuld zijn. In wezen zijn ze dat ook met een lege string en niet met de waarde NULL.

Je kan de regels die je wilt verwijderen dus eigenlijk beter deleten. Om dat te doen selecteer je de regels die verwijderd moeten worden dus regel 235 (uit bovenstaand voorbeeld) tot en met 65536. Rechtsklikken en in het menu verwijderen selecteren. Er lijkt niets gebeurt te zijn maar alle regels vanaf 235 tot en met 65536 zijn nu NULL geworden.

Meestal hoef je niet tot en met 65536 te selecteren hoor, de verticale scrollbar rechts geeft een indicatie hoe groot je sheet is en hoeveel regels je moet selecteren.

Success!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan