Avatar billede hugopedersen Nybegynder
21. maj 2006 - 15:48 Der er 8 kommentarer og
1 løsning

Findes et felt i tabellen

Jeg har brug for en funktion der med garanti kan fortælle om et felt eksisterer i en tabel.
Det lyder simpelt og det er det sikkert også, men alle de metoder jeg har fundet indtil videre fejler hvis der ikke er nogen records i den tabel man vil checke. Hvis der bare er 1 record, så fungerer de alle fint.
Avatar billede mugs Novice
21. maj 2006 - 16:50 #1
Nu skriver du ikke i hvilken sammenhæng du skal bruge funktionen. Denne opretter en ny tabel, og hvis den findes i forvejen får du en fejl. Du skal så blot iond i en errorhandler:

DoCmd.RunSQL "CREATE TABLE NyTabel (Fornavn TEXT, Efternavn TEXT, CPRnr AUTOINCREMENT CONSTRAINT mitfelt PRIMARY KEY)"
Avatar billede hugopedersen Nybegynder
21. maj 2006 - 17:15 #2
Det er sådan set fint nok, men jeg er jo sådan set ikke interesseret i at oprette et felt hver gang jeg skal checke.
Avatar billede jesper2009 Nybegynder
22. maj 2006 - 14:19 #3
Det er afhængigt af databasen hvordan man tilgår dens metainformation, som det hedder. I nogle databaser kan man sige
describe <tabel navn>;
hvorved man bla. får en liste af attributter for tabellen. I MS SQL server kan man bruge en speciel database:
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS
Hilsen Jesper
Avatar billede hugopedersen Nybegynder
29. maj 2006 - 08:09 #4
Som sagt kan jeg ikke rigtig bruge metoden med at oprette en tabel. Det vil give en masse overhead i datafilen efter en opdatering og det kan give problemer hvis man ikke sørger for at compacte med det samme.
Jeg skal bruge funktionen i forbindelse med at jeg har en applikation som kører hos nogle mennesker som jeg jævnligt laver opdateringer til. Hvis jeg laver nye felter vil de være at finde i en tabel som jeg opretter inden jeg releaser. Når den nye version så bliver installeret hos brugeren, kører de en funktion der looper tabellen og checker at alle felter findes i deres backend. I øjeblikket består tabellerne i backenden af godt 500 felter, så hvis jeg skal forsøge at oprette en tabel over 500 gange, tror jeg det vil give problemer.
Derfor vil jeg gerne finde en anden indgangsvinkel.

jesper2009> jeg kan godt huske at der er den funktion på SQL'en, men jeg har ikke kunnet finde noget i Access der ligner.
På SQL server gjorde jeg det at alle ændringer i tabellerne blev lavet via EnterpriseManageren og gemt som SQL statements. Dem kan man så få f.eks. Installshield til at fyre af op mod serveren når man installerer en ny version af applikationen.

Måske skal jeg lave noget lignende til Access
Avatar billede jesper2009 Nybegynder
29. maj 2006 - 09:40 #5
Avatar billede hugopedersen Nybegynder
29. maj 2006 - 09:43 #6
jesper2009> desværre ser det ud til at man skal have et medlemskab der koster for at se den løsning ;-(
Avatar billede hugopedersen Nybegynder
29. maj 2006 - 09:47 #8
Det var selvfølgelig en måde at gøre det på.
Avatar billede hugopedersen Nybegynder
28. december 2006 - 15:31 #9
Ikke noget helt perfekt så jeg lukker inden nytår.
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