Avatar billede schoesler Nybegynder
15. november 2002 - 10:27 Der er 20 kommentarer og
1 løsning

Check tabel og hvis.....

Hej Eksperter
Hvordan kan man checke om en tabel eksistere og hvis ikke opret denne tabel
Avatar billede mugs Novice
15. november 2002 - 10:39 #1
Du kan oprette en tabel ven VBA-procedüre, og hvis det anførte tabelnabvn eksisterer afbryder dun blot handlingen. Testdb i Access97 kan sendes hvis du lægger din e-mail.
Avatar billede schoesler Nybegynder
15. november 2002 - 10:55 #2
'mugs' ja tak, send den til jan@schoesler.com
Avatar billede mugs Novice
15. november 2002 - 11:03 #3
sendt
Avatar billede schoesler Nybegynder
15. november 2002 - 11:43 #4
'mugs' den test db du sendte og er ok, men den ven procedure er jeg ikke med på?
Avatar billede mugs Novice
15. november 2002 - 12:34 #5
"ven procedüre" ???
Kan du forklare lidt nærmere?
Avatar billede schoesler Nybegynder
15. november 2002 - 12:40 #6
Har en db, med x antal tabller. Jeg vil gerne køre en tjek på om alle tabeller er der, hvis ikke oprettes tabeller (ligesom i dit eksempel.
Hvordan laver men en check af tabeller kode.
Avatar billede faroe Nybegynder
15. november 2002 - 13:10 #7
>>mugs Jeg vil også gerne have den:) solar_fo@hotmail.com
Avatar billede mugs Novice
15. november 2002 - 13:24 #8
Sendt til faroe.
schoesler -> "tjek på om alle tabeller er der"? Så skal du jo have en liste med alle tabeller som du kan holde din kode op imod.
Hvis du navngiver den nye tabel med et i forvejen eksisterende navn, skal du få en fejlmeddelelse, og tabellen vil ikke blive oprettet. Hvis du ikke får en fejl, kan det skyldes, at du et andet sted i applikationen har valgt at slå systemets fejlmeddelelser fra, uden i slutningen af koden at have slået dem til igen.
Evgt. kan du indlægge en errorhandler, der afbryder funktionen.
Avatar billede arne_v Ekspert
15. november 2002 - 18:34 #9
Lidt kode jeg tilfældigvis havde liggende:

Public Function DoesTableExist(TableName As String) As Boolean
   
    Dim tmp As Boolean
    Dim tbl As TableDef
    tmp = False
    For Each tbl In CurrentDb.TableDefs
      If tbl.Name = TableName Then
          tmp = True
      End If
    Next tbl
    DoesTableExist = tmp

End Function


Public Function DoesTableReallyExist(TableName As String) As Boolean
   
    On Error GoTo NoTable
   
    Dim n As Integer
   
    n = DCount("*", TableName)
   
    DoesTableReallyExist = True
   
    Exit Function
   
NoTable:

    DoesTableReallyExist = False
   
    Exit Function

End Function
Avatar billede terry Ekspert
17. november 2002 - 12:22 #10
It isnt a problem finding if a table exists it is creating it and all its fields afterwards.
Avatar billede arne_v Ekspert
17. november 2002 - 12:32 #11
Hvis man har konstateret at tabellen ikke
eksisterer, så burde det da være ret trivielt
at oprette den.
Avatar billede mugs Novice
17. november 2002 - 12:36 #12
arne_v -> Det er det da også - men hvorfor alle disse koder? Når man opretter en tabel ved VBA, får man en "protest" hvis tabelnavnet eksisterer, og så er det jo blot at afbryde oprettelsen, eller køre procedüren forfra!
Avatar billede arne_v Ekspert
17. november 2002 - 12:58 #13
Jeg synes måske bare at det er pænere at teste først.

Giver tabel creation en fejl, hvis der er et broken
link til en tabel med det navn ?
Avatar billede mugs Novice
17. november 2002 - 13:00 #14
arne_v -> Enig. Hvis du prøver at oprette et tabelnavn hvor navnet i forvejen eksisterer, får du en fejlmelding. Jeg plejer så at lave en fejlhåndtering med en MsgBox der fortæller om mulige fejl.
Avatar billede mugs Novice
17. november 2002 - 13:01 #15
Men hvorom alting er, så bør spørgeren have input nok til at lukke spørgsmålet!
Avatar billede schoesler Nybegynder
17. november 2002 - 16:39 #16
'mugs' skal nok lukke spørgsmålet, men sidder og roder med emnet, men det virker endnu ikke
Avatar billede schoesler Nybegynder
19. november 2002 - 15:01 #17
Har smidt min db i skraldespanden. 'mugs' har du et eksembel ligende
Hvor der tjekkes om minTBL er oprettet og hvis ikke opret minTBL?
Avatar billede mugs Novice
23. november 2002 - 18:47 #18
Eksempel sendt. Beklager den først sendes nu - Jeg har simpelthen overset sckoesler's kommentar.
Avatar billede hugopedersen Nybegynder
25. november 2002 - 08:17 #19
'problemet' er vel kun tilstede hvis der er tale om linkede tabeller og i så fald ligger der en eksempeldatabase på www.access.hugopedersen.dk (managejet.zip) som du kunne prøve at tage et kig på.  Den er ikke perfekt, men kan give dig nogle ideer om hvordan dette 'problem' kan løses.
Jeg bruger selv en modificeret udgave i alle de applikationer jeg har kørende ved kunder hvor jeg ikke er i direkte forbindelse med datafilen.
Avatar billede mugs Novice
25. november 2002 - 19:16 #20
Hugopedersen -> Problemet eksisterer jo også hvis du f.eks skal eksportere data til Excel. Hvis du har en tabel med x antal poster, og du kun vil eksportere udvalgte data der opfylder et eller flere kriterier, kan det være nødvendigt at sende data til en temporær tabel, der oprettes udelukkende til dette formål, for efter eksporten at slette tabellen igen. Det er derfor jeg har lavet eksemplet (som du for øvrigt også har).
Avatar billede hugopedersen Nybegynder
26. november 2002 - 07:11 #21
mugs> jamen et eller andet sted har du jo sådan set ret :-)  dog gør jeg aldrig det at jeg opretter og sletter tabeller sådan hele tiden og igen. Jeg plejer altid at oprette selv midlertidige tabeller by hand og så tømmer jeg dem bare. Det gør jeg af den simple grund at jeg i de tidlige version 1.1 dage jævnligt oplevede at selv om man oprettede en tabel on the fly og refreshede alt det man kunne, så var tabellen ikke tilgængelig før db'en havde været lukket og åbnet igen. Når man har prøvet det et par gange, så........ ( i øvrigt kan man opleve det samme fænomen på en SQL server med views ! )
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