Hvor mange ganger har du prøvd å legge til et nytt felt i en eksisterende tabell og har fått den fryktede feilmeldingen "ikke nok minne til å fullføre denne operasjonen"? Hvis svaret ikke er noe, har du vært heldig – så langt, men sjansen er stor for at du får det på et tidspunkt, så denne artikkelen vil forklare hvordan du kan legge til et nytt felt – selv når Access ikke tror det kan …
Tabellskift – uten hodepine
jeg har lost telling av antall ganger jeg har prøvd å gjøre en endring i en tabell, enten det er å legge til et nytt felt, endre typen til et eksisterende felt eller slette et felt fra en tabell i tabelldesignvisningen, bare for å bli møtt ved en feilmelding som forteller meg at det ikke er nok minne til å fullføre oppgaven.
I tillegg til å være et tegn på at databasen (eller tabellen) kan bli litt på den store siden som bør håndteres før jeg prøver å reparere mdb-filer, kan det også være et tegn på at Access bare ikke kan gjøre det mens Design View er aktiv. I så fall er det bare ett alternativ – gjør det fra kode!
Koden
Koden vi skal bruke i denne artikkelen vil være ganske grunnleggende og du vil almost vil absolutt legge til det for å gjøre det til en kraftigere kodebit, men følgende eksempel vil gi deg skjelettkoden som trengs for å legge til et nytt felt i en eksisterende tabell – en forklaring av koden vil følge:
Sub AddFieldToTable(ByVal tableName As String, fieldName As String, fieldType As Integer) Dim objDB As Database Dim objTableDef As TableDef Dim objField As Field Set objDB = CurrentDb Set objTableDef = objDB.TableDefs(tableName) 'add the new fieldDef With = .CreateField(fieldName, fieldType) .Fields.Append objField 'Du kan også angi andre egenskaper for feltet (som nullverdier tillatt osv.) her If fieldType = dbText Then .Fields(fieldName).AllowZeroLength = False End If End With Sett objField = Ingenting Sett objTableDef = Ingenting Sett objDB = Ingenting End Sub
Forklarer koden
Så den første tingen å merke seg er at minimumsmengden informasjon som trengs for å legge til et nytt felt i en eksisterende tabell er: Tabellnavnet, feltnavnet og felttypen. Alt dette ber vi om som en parameter til subrutinen. Det er selvfølgelig mange andre innstillinger du kanskje må legge til (som feltstørrelse osv.), men foreløpig vil koden ovenfor fungere "som den er" på databasen din, så la oss forklare det grunnleggende om hvordan den gjør det.
Først får koden en referanse til gjeldende database (objDB), og tabelldefinisjonen for den eksisterende tabellen vi ønsker å endre (objTableDef).
Når vi har tabelldefinisjonen, er det bare et spørsmål om å kalle "CreateField"-metoden med det oppgitte navnet og typen for feltet. Du kan finne en liste over felttypene i Access-hjelpefilen under emnet "Field.Type", eller gjennom hjelpeskjermen for "CreateField"-metoden, men for enkelhets skyld har jeg også listet dem nedenfor:
dbBigInt, dbBinary, dbBoolean, dbByte, dbChar, dbCurrency, dbDate, dbDecimal, dbDouble, dbFloat, dbGUID, dbInteger, dbLong, dbLongBinary, dbMemo, dbNumeric, dbSingle, dbText, dbTime, dbTimeStamp, dbVarBinary
Du kan angi flere egenskaper (med ett unntak) etter "CreateField"-kallet - vi har satt feltet til å tillate null lengdeoppføringer i koden ovenfor.
Unntaket fra dette er hvis du ønsker å angi størrelsen på feltet – det må gjøres når du først oppretter feltet, så hvis du vil endre koden slik at du også kan angi feltstørrelsen, bør du endre CreateField-kallet til følgende ".CreateField(fieldName, fieldType, fieldSize)".
Forfatterintroduksjon:
Mitchell Pond er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert reparer SQL-feil og excel-programvareprodukter for gjenoppretting. For mer informasjon besøk www.datanumen. Med
Legg igjen en kommentar