TableExists

Alfred_

Erfahrenes Mitglied
Hi,
in VB6 hatte ich eine Reihe von Tabellen zu löschen und neu anzulegen. Das ging recht kommod mit:
Code:
Private Sub Tablle NixDaVorhanden()
Me.Caption = "'NixDa' vorhanden?"
  If Not dbTableExists(godb, "NixDa") Then
    Call NixDa_New
  Else
    godb.TableDefs.Delete ("NixDa")
    Call NixDa_New
  End If
End Sub

Public Function dbTableExists(godb As Database, ByVal sName As String) As Boolean
  Dim oTabDef As TableDef
  ' Alle Tabellen durchlaufen...
  For Each oTabDef In godb.TableDefs
    If UCase$(oTabDef.Name) = UCase$(sName) Then
      dbTableExists = True
      Exit For
    End If
  Next
End Function
Gibt es ähnliches in VB.Net mit Access?
Für Tips und Links bin ich absolut dankbar.
Grüße
 
Danke für Deinen Hinweis,
aber irgendwie funktioniert dieses Beispiel nicht. Ich muss noch ergänzen, dass ich eine Desktopanwendung mit einer Accessanbindung habe. Also keine Netzapplikation. Folgendes Konstrukt zeigt mir zwar die gesuchte Tabelle an, kann sie aber nicht löschen (.Delete ist kein Member von ADOX).
Code:
  Private Sub DataNixVorhanden()
    Dim conn As New ADODB.Connection()
    Dim catalog As New ADOX.Catalog()
    Dim i As Integer
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source= hier Verzeichnispfad eintragen\DataNix.mdb;"
    conn.Open()
    catalog.ActiveConnection = conn
    Try
      For i = 0 To catalog.Tables.Count - 1
        If catalog.Tables(i).Name.ToString = "DataNix" Then
          'Kontrolle
          'MessageBox.Show(catalog.Tables(i).Name.ToString())
          'catalog.Tables(i).delete()
        End If
      Next i
      Call DataNixAnlegen()
    Catch ex As Exception
      MessageBox.Show(ex.Message.ToString(), "Info")
    End Try
    conn.Close()
  End Sub
Wo liegt da der Fehler?
PS.: Ich versuche ein 'uralt'Programm mit DAO.Recordset 'umzuschreiben'
Grüße
 
Hi,
ich gebe zu, dass ich gerade eine peinliche Vorstellung geliefert habe. Das Löschen einer Tabelle funktioniert doch!
Code:
    Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source= Verzeichnispfad\test.mdb;"
    Dim Con As New OleDbConnection(ConStr)
    Dim cmd As New OleDbCommand
    Try
      Con.Open()
      cmd = New OleDbCommand("DROP TABLE DataNix", Con)
      cmd.ExecuteNonQuery()
    Catch ex As Exception
      MessageBox.Show(ex.Message.ToString(), "Info")
    End Try
    Con.Close()
Mit Deinem neuen Link dürfte es nicht mehr schwer sein, eine Sicherheitsabfrage zwischenzuschalten.
DANKE
PS.: Irgendwie war ich zu sehr auf ADOX fixiert. Na, ja...

Mit Sicherheitsabfrage lautet der Quellcode folgendermaßen:
Code:
  Private IstNixDaTabVorhanden()
    Dim schemaTable As DataTable
    Dim i As Integer
    Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source= ....\Test.mdb;"
    Dim Con As New OleDbConnection(ConStr)
    Dim cmd As New OleDbCommand
    Try
      Con.Open()
      schemaTable = Con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
      New Object() {Nothing, Nothing, Nothing, "TABLE"})

      For i = 0 To schemaTable.Rows.Count - 1
        If schemaTable.Rows(i)!TABLE_NAME.ToString = "NixDaTab" Then
          'für Kontrollfreaks ob NixDaTab gefunden wurde...
          'MessageBox.Show(schemaTable.Rows(i)!TABLE_NAME.ToString)
          cmd = New OleDbCommand("DROP TABLE NixDaTab", Con)
          cmd.ExecuteNonQuery()
        End If
      Next i
    Catch ex As Exception
      MessageBox.Show(ex.Message.ToString(), "Info")
    End Try
    Con.Close()
    Call NixDaTabAnlegen()
  End Sub
Grüße
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück