Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
[Access] Problem mit Abfrage nach Tabelle
zurück: Automatisch vervollständigen weiter: Datensätze zählen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
pitti
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Apr 2005, 13:27
Rufname:

[Access] Problem mit Abfrage nach Tabelle - [Access] Problem mit Abfrage nach Tabelle

Nach oben
       

Ich möchte in Access 2000 per VBA prüfen, ob eine Tabelle bereits existiert.

in Excel funktionierts das mit
if not TableExists(...)

Welchen Befehl muß ich in Access dazu nutzen?
TommyK
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Apr 2005, 13:53
Rufname:
Wohnort: Sachsen


AW: [Access] Problem mit Abfrage nach Tabelle - AW: [Access] Problem mit Abfrage nach Tabelle

Nach oben
       

Hallo,

Lösung findest Du hier: if exist in access

_________________
Gruß Tommy
pitti
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Apr 2005, 14:22
Rufname:

AW: [Access] Problem mit Abfrage nach Tabelle - AW: [Access] Problem mit Abfrage nach Tabelle

Nach oben
       

Hm, blick da irgendwie nich so ganz durch!
Heißt das jetzt, ich kann das in etwa so formulieren?
Code:
Public Function ExistObject(Objektname As String, Typ As Integer) As Boolean
'*******************************************
'Name:      ExistObject (Function)
'Purpose:   ermittelt ob ein Objekt existiert
'Author:
'Date:
'Inputs:    Objektname = Name des Objektes, Typ = ObjektTyp
'Output:
'*******************************************
On Error GoTo Err
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim ObjTyp As Integer

    ExistObject = False
    Select Case Typ
      Case 0: ObjTyp = 1         'Tabellen
    End Select
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT Name, Type FROM MSysObjects " & _
                             "WHERE Name = '" & Objektname & "' " & _
                             "AND   Type = " & ObjTyp)
    If Not rs.EOF Then rs.MoveLast
    ExistObject = IIf(rs.RecordCount = 0, False, True)
    rs.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
 
Exit_Here:
    Exit Function
Err:
    Dim strErrString As String
    strErrString = "Error Information..." & vbCrLf
    strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
    strErrString = strErrString & " Description: " & Err.Description & vbCrLf
    MsgBox strErrString, vbCritical + vbOKOnly, _
           "Error in Modul Form_DB in Function: ExistObject"
    Resume Exit_Here
End Function   

'Das Löschen würde dann so funktionieren:

Sub LoeschenObjekte()
'*******************************************
'Name:      LoeschenObjekte (Sub)
'Purpose:
'Author:    Thomas Keßler
'Date:      Dezember 28, 2002, 11:45:02
'Inputs:
'Output:
'*******************************************
    If Not ExistObject("language", 0) Then
         'Tabelle erzeugen
         'Daten einfügen
      Else
         'Daten einfügen
    End If
End Sub

Oder wie darf ich das ganze jetzt verstehen?
Geht das denn nicht auch einacher?
So etwa:
Code:
    If Not ExistObject("Tabelle") then
        'Tabelle erzeugen
        'Daten einfügen
      Else
        'Daten einfügen
    End If
TommyK
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Apr 2005, 14:24
Rufname:
Wohnort: Sachsen

AW: [Access] Problem mit Abfrage nach Tabelle - AW: [Access] Problem mit Abfrage nach Tabelle

Nach oben
       

Hallo,

den Code kopierst Du in ein neues Modul:
Code:
Public Function ExistObject(Objektname As String, Typ As Integer) As Boolean
'*******************************************
'Name:      ExistObject (Function)
'Purpose:   ermittelt ob ein Objekt existiert
'Author:
'Date:
'Inputs:    Objektname = Name des Objektes, Typ = ObjektTyp
'Output:
'*******************************************
On Error GoTo Err
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim ObjTyp As Integer

    ExistObject = False
    Select Case Typ
      Case 0: ObjTyp = 1         'Tabellen
    End Select
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT Name, Type FROM MSysObjects " & _
                             "WHERE Name = '" & Objektname & "' " & _
                             "AND   Type = " & ObjTyp)
    If Not rs.EOF Then rs.MoveLast
    ExistObject = IIf(rs.RecordCount = 0, False, True)
    rs.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
 
Exit_Here:
    Exit Function
Err:
    Dim strErrString As String
    strErrString = "Error Information..." & vbCrLf
    strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
    strErrString = strErrString & " Description: " & Err.Description & vbCrLf
    MsgBox strErrString, vbCritical + vbOKOnly, _
           "Error in Modul Form_DB in Function: ExistObject"
    Resume Exit_Here
End Function

Dann kannst Du die Funktion mit Deinem Code aufrufen:
Code:
    If ExistObject("DeineTabelle", 0)= False Then
        'Tabelle erzeugen
        'Daten einfügen
      Else
        'Daten einfügen
    End If

_________________
Gruß Tommy
pitti
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Apr 2005, 15:35
Rufname:

AW: [Access] Problem mit Abfrage nach Tabelle - AW: [Access] Problem mit Abfrage nach Tabelle

Nach oben
       

So, das mit der Abfrage auf Existenz der Tabelle funktioniert, Danke Tommy.

Jetzt taucht aber ein neues Problem auf.
Folgender Code bereitet mir Schwierigkeiten!
Code:
Private Sub Form_Load()
    Dim db As DAO.Database
    Dim Tabelle As TableDef
   
    Set db = CurrentDb()
    If ExistObject(tabellenname, 0) = False Then
        MsgBox "Tabelle <" & tabellenname & "> existiert nicht"
        Dim lfdNr As Field
        Dim person As Field
        Dim mass As Field
        Dim akte As Field
        Dim gesstd As Field
        Dim beginn As Field
        Dim projekt As Field
        Dim einsatzort As Field
        Dim traeger As Field
        Dim ansprech As Field
        Dim status As Field
       
        Set Tabelle = db.CreateTableDef(tabellenname)
        With Tabelle
            Set lfdNr = .CreateField("Nummer", dbText, 5)
            Set person = .CreateField("person", dbText, 30)
            .Fields.Append lfdNr
            .Fields.Append person
        End With
        db.TableDefs.Append Tabelle
      Else
        MsgBox "Tabelle existiert"
        'Daten einfügen
    End If
End Sub

Das Programm sagt mir ja,ob die Tabelle existiert oder nicht, das klappt, aber nur wenn ich auch hier wieder am Anfang db registriere und ihr die aktuelle Datenbank zuweise.
Aber spätestens bei
Code:
        Set lfdNr = .CreateField("Nummer", dbText, 5)
bleibt das Programm stehen.
Stimmt vielleicht dieses "With Tabelle" nicht,oder was ist hier falsch.
TommyK
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Apr 2005, 15:56
Rufname:
Wohnort: Sachsen

AW: [Access] Problem mit Abfrage nach Tabelle - AW: [Access] Problem mit Abfrage nach Tabelle

Nach oben
       

Hallo,


1. erstmal sehe ich nicht wie Du die Variable tabellenname füllst.
Was ich sehe ist das die Variable leer ist.

2. ändere mal den Aufruf:
Code:
    Dim Tabelle As TableDef
' in
    Dim tdf As DAO.TableDef

Hintergrund ist erstmal die Verwendung des Begriffs Tabelle der Probleme bereiten kann und der explizite Hinweis auf DAO.

_________________
Gruß Tommy
pitti
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Apr 2005, 16:09
Rufname:

AW: [Access] Problem mit Abfrage nach Tabelle - AW: [Access] Problem mit Abfrage nach Tabelle

Nach oben
       

Also, die Variable ist im Modul definiert
Code:
Public Const tabellenname = "vorgang_vorab"

Hab meinen Code mal geändert:
Code:
    Dim Tabelle As DAO.TableDef

Funzt aber auch nicht.
Bringt mir weiterhin: Laufzeitfehler 13
Evil or Very Mad Confused
Willi Wipp
Moderator


Verfasst am:
08. Apr 2005, 12:23
Rufname:
Wohnort: Raum Wiesbaden


Re: [Access] Problem mit Abfrage nach Tabelle - Re: [Access] Problem mit Abfrage nach Tabelle

Nach oben
       

Hi pitti,

schau Dir mal das Thema DAO/ADO: Fehler bei Recordset / Database ab A00 (Verweise) an.
Vielleicht hilft Dir das ja schon weiter?

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage aus Formular erstellen 2 frkrone 3248 12. Feb 2004, 14:22
frkrone Abfrage aus Formular erstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage nur wie? 2 Björn 2579 10. Feb 2004, 15:00
Gast Abfrage nur wie?
Keine neuen Beiträge Access Tabellen & Abfragen: inventar abfrage 5 nooby 2254 05. Feb 2004, 14:46
nooby inventar abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Suche Hilfe zu SQL (DAO 351 MS) - Abfrage 3 Berny_H 1005 04. Feb 2004, 11:41
borstel Suche Hilfe zu SQL (DAO 351 MS) - Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Diese Abfrage geht nicht. Kann ir jemand helfen 4 Oliver 1438 02. Feb 2004, 13:21
Willi Wipp Diese Abfrage geht nicht. Kann  ir jemand helfen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage von Datensätzen ohne Inhalt 3 sebwa 2053 23. Jan 2004, 23:19
Gast Abfrage von Datensätzen ohne Inhalt
Keine neuen Beiträge Access Tabellen & Abfragen: Verschachtelte Abfrage? 3 Fragesteller 2581 22. Jan 2004, 08:46
ffdabei Verschachtelte Abfrage?
Keine neuen Beiträge Access Tabellen & Abfragen: Nachtrag zu "Duplikate in Abfrage" s. u. 2 DAU_Mario 1069 17. Jan 2004, 19:32
Gast Nachtrag zu "Duplikate in Abfrage" s. u.
Keine neuen Beiträge Access Tabellen & Abfragen: Kann ein Optionsfeld die Auswahl einer Abfrage beeinflussen? 5 Stratos 4700 03. Dez 2003, 20:29
lupos Kann ein Optionsfeld die Auswahl einer Abfrage beeinflussen?
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle A zu Tabelle B???? 2 2003 729 03. Dez 2003, 14:32
2003 Tabelle A zu Tabelle B????
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage "leere Datensätze" und "doppelte Date 1 gast 4790 25. Nov 2003, 12:04
gast Abfrage "leere Datensätze" und "doppelte Date
Keine neuen Beiträge Access Tabellen & Abfragen: Mit kontrollkästchen eine abfrage machen 1 Gabriel 857 20. Nov 2003, 16:16
Gabriel Mit kontrollkästchen eine abfrage machen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: MS Frontpage