Feldeigenschaften einer Tabelle ermitteln

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Feldeigenschaften einer Tabelle ermitteln

    Hallo zusammen,
    wir haben eine Access-Datenbank, jedoch nur meinen Arbeitsplatz mit Access. Dazu kommt, dass außer mir niemand Access bedienen kann oder will.
    Damit nun jedoch auch andere Datensätze eintragen können UND damit das Handling der Datenpflege bequemer ist habe ich ein kleinen DBEditor in VB.NET programmiert.
    Dieser funktioniert soweit auch tadellos, solange ich nicht zwischen NULL, Leerstring und Textboxen, bei denen noch keine Eingabe getätigt wurde unterscheiden muss...
    Mein Problem ist, ich habe eine Tabelle mit folgenden relevanten Feldern:
    Name
    Eingabe erforderlich
    Typ
    Ja
    Nummer
    Nein


    Meine Idee/Wunsch ist nun, wenn eine Eingabe erforderlich ist, dann soll eine leere Textbox in der Datenbank den Leerstring speichern, andernfalls soll NULL reingeschrieben werden (Da ich an anderen Stellen zwischen Null und "" in den Zellen unterscheiden können muss).

    Bisher habe ich, was glaub ich, zwischendurch schon sehr nah an meiner Lösung ist, folgenden Post gefunden:
    aus Access Datenbank Spaltenüberschriften auslesen

    Ich habe die Funktion TabellenStruktur dort Quick-And-Dirty auch in meinem Programm zum laufen gebracht.

    Quellcode

    1. Public Function TabellenStruktur(ByVal Tabellenname As String) As DataTable
    2. Dim DBVerbindung As New OleDbConnection
    3. Dim cmd As New OleDbCommand
    4. Dim reader As OleDbDataReader
    5. Dim DBPfad As String
    6. DBPfad = TEMP 'Verzeichnis der DB
    7. DBVerbindung.ConnectionString =
    8. "Provider=Microsoft.Jet.OLEDB.4.0;" &
    9. "Data Source=" & DBPfad
    10. Try
    11. cmd.Connection = DBVerbindung
    12. cmd.CommandText = "SELECT * FROM " & Tabellenname
    13. DBVerbindung.Open()
    14. Dim LokalTabelle As System.Data.DataTable = DBVerbindung.GetSchema("Tables")
    15. reader = cmd.ExecuteReader()
    16. reader.Read()
    17. LokalTabelle = reader.GetSchemaTable
    18. DBVerbindung.Close()
    19. Return LokalTabelle
    20. Catch ex As Exception
    21. DBVerbindung.Close()
    22. MsgBox(ex.Message)
    23. End Try
    24. End Function


    Leider wird mir in der Spalte mit dem Namen AllowDBNull in beiden Feldern true angezeigt. Warum weiß ich nicht:-(
    Es sollte doch nicht so schwer sein, an diese Feldeigenschaft "Eingabe erforderlich" mit VB.NET raunzukommen sein...
    Offensichtlich bin ich jedoch zu doof für ;(

    p.s. außerhalb dieser TabellenStruktur Funktion arbeite ich mit ADODB anstelle von System.Data.OleDb.

    Gruß DerBrain
    Ich habe Beziehnugen in den Tabellen. Die relevanten Felder sind jedoch keine Fremdschlüsselfelder. Natürlichen habe ich in allen Tabellen noch 'vernünfgite' ID-Felder um die Beziehungen zu erstellen.

    Zu meinem Background (und damit die Frage, welche ich nicht zu 100% verstanden habe, vermutlich hinfällig werden sollte):
    Ich bin Mathematiker der in meiner Firma die Programmierarbeiten (überwiegend) um Inventor macht. Da ich in der Ausbildung zum IT-Systemelektroniker als auch während dem Studium durchaus Datenbanken-Fächer bzw. Vorlesungen hatte würde ich schon behaupten, dass der Aufbau der Datenbank schon 'korrekt' ist.

    Natürlich kann und muss ich an die Struktur der Datenbank gehen, wenn ich keine Softwarelösung für mein Problem finde. Dies möchte ich aber soweit es geht vermeiden, da die Datenbank sehr umfangreich ist und einen gewaltigen Rattenschwanz mit sich ziehen würde...

    Da man in Access mit 2-3 Klicks an die benötigte Information kommt, dachte ich mir, dass es über vb.net doch eigentlich nicht so schwer sein sollte...
    Du kannst mal diesen DB-Viewer probieren, ob der dir korrekte Angaben zur Nullable-Konfiguration anzeigt.
    Datenbank-Schema auslesen - DataViewer

    Aber ich glaub du hast meine Frage wirklich nicht verstanden. Aber ich verstehe auch nicht, was du sagst:
    Ich habe Beziehnugen in den Tabellen. Die relevanten Felder sind jedoch keine Fremdschlüsselfelder.
    Bei mir hat man Beziehungen zwischen Tabellen, und die sind durch Fremdschlüsselfelder konfiguriert.
    Dass also relevante Felder keine Fremdschlüsselfelder sein sollen versteh ich überhaupt nicht.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Natürlich sind die Beziehungen zwischen den Tabellen. Mit in den Tabellen wollte ich, etwas unprofessionell darauf hindeuten, dass die Tabellen nicht erwähnte ID-Felder haben um diese miteinander in Beziehung zu setzen.
    Fremdschlüssel hat die Tabelle keine. Alle Beziehungen die von ihr ausgehen sind 1:n.

    Dein DataViewer bekomme ich leider nicht zum laufen. Er mäckert, dass mein Datenbank-Provider nicht installiert wäre. Das Merkwürdige ist, dass ich in meinem Editor den Provider habe...
    ich peile immer weniger.
    Verstehe ich richtig, dass deine Tabellen keine ID-Felder haben?
    Und wie kann es eine Beziehung geben, wenn kein Fremdschlüssel gegeben ist?
    Du sagst auch:

    DerBrain schrieb:

    Fremdschlüssel hat die Tabelle keine.
    Reden wird jetzt nur noch über eine Tabelle?



    Ansonsten:

    DerBrain schrieb:

    Dein DataViewer bekomme ich leider nicht zum laufen. Er mäckert, dass mein Datenbank-Provider nicht installiert wäre.
    Code? Fehlerzeile? genauer Wortlaut der Fehlermeldung?