Avatar billede frederikschack Nybegynder
18. august 2010 - 14:19 Der er 11 kommentarer og
1 løsning

Når Access tabellen bliver for stor?

Hej,

Hvad gør man ved nedenstående fejl?

http://6k.dk/eksperten/Egenskabsindstillinger.bmp

Jeg har tilsyneladende fået for mange felter i min tabel? Det var jeg ikke klar over at man kunne få? Hvad gør man?

Man kan måske korte feltnavnene ned, så de ikke fylder så meget i egenskabsindstillingerne, men det vil nok stadig ikke dække mit behov? Jeg har behov for ca. dobbelt så mange felter.

Jeg har ikke lyst til at lægge dataene ud i 1:1 tabeller og omdesigne en ret omfattende formular, samt tilhørende VBA kode...

M.v.h.
Frederik
Avatar billede bennytordrup Nybegynder
18. august 2010 - 14:25 #1
Kig på dine datatyper. Er de overkill til det relevante dataområde. F. eks. er det overkill at gemme en værdi, som kun kan være i området 0..100 i en integer.

Desuden, er tekstfelter meget lange i forhold til relevant data.

Notater - kan ikke huske hvor meget, de fylder i Access.

Endelig er der normaliseringsformerne. Disse beskriver blandt andet, at felter, som er 100% afhængige af værdi i et andet felt (eller få andre) skal flyttes ud i en selvstændig tabel. Læs mere om dem her: http://en.wikipedia.org/wiki/Database_normalization
Avatar billede bennytordrup Nybegynder
18. august 2010 - 14:26 #2
Ved godt, at du skrev, at du ikke ønskede at lægge data ud i tabeller, men jeg tror, at der ikke er nogen vej udenom.

Alternativet er at bruge SQL Server (eller SQL Express) som baggrundsdatabase. Den har en grænse på 8Kb per post.
Avatar billede frederikschack Nybegynder
18. august 2010 - 14:32 #3
Hej,

Jeg kender godt til de forskellige normalformer og der er ikke noget der kan skilles ud for at bringe den tættere på 3. normalform. Jeg kan lægge noget ud i 1:1 tabeller, men det er altså noget rod.

Datatyperne har vel ikke den store indflydelse på egenskabsindstillingernes størrelse, det er vel primært på tabellens indhold?

M.v.h.
Frederik
Avatar billede frederikschack Nybegynder
18. august 2010 - 14:56 #4
Der er nogle logiske elementer som jeg kan dele tabellen op i, men det er stadig kun 1:1 relationer og der ville således skulle oprettes 14 relaterede tabeller. Det vil også blive noget forfærdeligt rod at arbejde med så mange tabeller i VBA og formularer. Jeg prøvede det til at starte med, men gik væk fra det igen.
Avatar billede bennytordrup Nybegynder
18. august 2010 - 14:59 #5
Jo, det har de. Du kan læse om jet database engine her: http://en.wikipedia.org/wiki/Microsoft_Jet_Database_Engine

I afsnittet omkring Locking står der følgende:

<Quote>
Jet allows multiple users to access the database concurrently. To prevent that data from being corrupted or invalidated when multiple users try to write to the database, Jet employs a data write locking policy. Any single user can only modify those database records (that is, items in the database) to which they have applied a lock that gives them exclusive access to the record until the lock is released. Up to Jet 4, a page locking model was used, and in Jet 4 a record locking model is employed. Microsoft databases are organized into data "pages", which are fixed length (2 kB before Jet 4, 4 kB in Jet 4) data structures that divide up the database. Data is stored in "records", but these are of variable length and so may take up less or more than one page. The page locking model worked by locking the pages, instead of individual records, which though less resource intensive also meant that more than one record might be locked at any one time.
</Quote>

Du kan ud fra dette redde noget ved at opgradere den underliggende Access til Jet 4 eller senere (kan ikke huske hvilken version af Access, det er).

Problemet opstår, hvis du definerer en datastruktur, som bliver større end en data page (som er 2Kb eller 4Kb alt efter jet engine). Og størrelsen på datastrukturen afhænger af de anvendte datatyper.

Jeg har selv oplevet problemet på SQL Server, hvor data bliver organiseret i data pages på 8 Kb.
Avatar billede mugs Novice
18. august 2010 - 15:00 #6
Jeg mener ikke, at du kan have mere end 255 felter i en tabel / forespørgsel. Har du det, må du lave flere tabeller.
Avatar billede bennytordrup Nybegynder
18. august 2010 - 15:01 #7
Access 2000 svarer til Jet engine 4.0.
Avatar billede bennytordrup Nybegynder
18. august 2010 - 15:02 #8
Hvad med at dele tabellen op i de logiske elementer og så arbejde på et View?
Avatar billede frederikschack Nybegynder
18. august 2010 - 15:08 #9
Vi arbejder i Access 2007.

Du tænker på at arbejde på en forespørgsel? Tjah, det var måske en mulighed, men det lugter lidt af problemer?
Avatar billede frederikschack Nybegynder
18. august 2010 - 15:13 #10
Hej Mugs,

Jeg kommer heller ikke over 255 felter, måske lidt over 100.
Avatar billede frederikschack Nybegynder
18. august 2010 - 15:20 #11
Jeg har prøvet at korte tekstfelterne ned til maks 50 bytes og lave notatfelterne om til tekstfelter på maks 50 bytes, men jeg kan stadig ikke tilføje flere felter og får stadig samme fejl.
Avatar billede frederikschack Nybegynder
18. august 2010 - 15:47 #12
Problemet er tilsyneladende løst.

Jeg gemte databasen som test.accdb på skrivebordet og pludseligt kunne jeg tilføje flere felter. Så prøvede jeg at gemme den en gang til, i 2007 format, under den rigtige folder, men så kunne jeg ikke tilføje flere felter!? Så kopierede jeg test.accdb over i den rigtige folder og omdøbte den til det den skulle hedde og den fungerer tilsyneladende?

Jeg føler mig dog ikke helt tryg ved det her, hvis den nu pludseligt finder på at beklage sig over 2kb grænsen eller at tabellen bliver ubrugelig???
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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