Office: (Office 2016) Spalte in einer Tabelle suchen

Helfe beim Thema Spalte in einer Tabelle suchen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich würde gerne in VBA eine Tabelle nach einer Spalte suchen, also ob eine bestimmte Spalte in einer Tabelle enthalten ist. Dazu habe ich... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von blabuduwnmdjdsjajsus, 5. Juli 2020.

  1. Spalte in einer Tabelle suchen


    Hallo, ich würde gerne in VBA eine Tabelle nach einer Spalte suchen, also ob eine bestimmte Spalte in einer Tabelle enthalten ist.

    Dazu habe ich folgenden Code geschrieben.
    Aber da taucht ein Problem auf wenn ich in der Funktion

    Spalte = rs.Field(i).Name

    vergleiche, ich nehme an da stimmt was mit dem Datentyp nicht.


    ------------------------------------------------------------------------------
    Public Sub Spalte_Click()

    Dim i As Integer
    Dim rs As DAO.RecordSet


    Set rs = CurrentDb.OpenRecordset("Tabelle", dbOpenSnapshot)

    If SpalteNichtEnthalten("TEST") Then
    MsgBox "Nicht Drinne"
    End If

    End Sub


    Public Function SpalteNichtEnthalten(Spalte As String) As Boolean
    Dim rueckgabe As Boolean
    rueckgabe = True

    For i = 0 To rs.Fields.Count - 1
    If Spalte = rs.Field(i).Name Then
    rueckgabe = False
    End If
    Next

    SpalteNichtEnthalten = rueckgabe
    End Function
    ------------------------------------------------------------------------
    Da taucht immer der Fehler '424'
    Objekt erforderlich

    :)
     
    blabuduwnmdjdsjajsus, 5. Juli 2020
    #1
  2. Hallo,

    besser du suchst an der "richtigen" Stelle, sprich den Metadaten, z.B. den DAO.Tabledefs und der Fields-Auflistung.

    Ulrich
     
    knobbi38, 7. Juli 2020
    #2
  3. Hallo Ulrich,

    Ich bin recht neu in VBA, was für ein Fehler habe ich den da gemacht ?

    Also die Tabelle ist enthalten ich habe davor auch von der tabelle die spalten mittels MsgBox ausgegeben das hatte auch geklappt aber sobald ich das mit dem vergleich
    -----------------------------------------
    If Spalte = rs.Field(i).Name Then
    rueckgabe = False
    End If
    ---------------------------------------------
    gemacht habe kam das problem.
     
    blabuduwnmdjdsjajsus, 7. Juli 2020
    #3
  4. Spalte in einer Tabelle suchen

    Sollte es nicht rs.Fields(i).Name heißen?
     
    fraeser, 7. Juli 2020
    #4
  5. Hallo,

    neben dem, was Jan schon gezeigt hat (der Tippfehler mit fields), ist es nicht unbedingt nötig, extra dafür ein Recordset zu öffnen, daß man übrigens nach Gebrauch auch wieder schließen sollte!!!

    Wenn ein Recordset schon geöffnet ist, könnte so eine Funktion verwendet werden:
    Code:
    ansonsten würde ein Zugriff auf die Tabledefs schon reichen:
    Code:
    Gruß Ulrich
     
    knobbi38, 7. Juli 2020
    #5
  6. \@blabuduwnmdjdsjajsus
    Eine Lösung wurde dir ja inzwischen gezeigt. Ich möchte dir aber noch erklären,
    was an deinem Code nicht stimmt bzw. woher die Fehlermeldung kommt.
    Code:
    Dieses Recordset ist lokal, und daher nur in der Prozedur "Public Sub Spalte_Click()"
    bekannt. Wenn diese Prozedur durchgelaufen ist, gibt es keine Variable "rs" mehr.
    Wenn du dieses RS in der aufgerufenen Prozedur "SpalteNichtEnthalten" verwenden
    willst, musst du es als Parameter übergeben
    Code:
    und dann
    Code:
    Und dann noch
    Code:
    gruss ekkehard
     
    Beaker s.a., 7. Juli 2020
    #6
  7. \@ekkehard:
    Hatte ich doch glatt übersehen... Gut, daß immer mehrere hier mitlesen.

    Grüße Ulrich
     
    knobbi38, 7. Juli 2020
    #7
  8. Spalte in einer Tabelle suchen

    Hallo,
    trotz der Lösung, stellt sich die Frage wozu man das braucht ?
    Die Feldnamen einer Tabelle sind doch relativ bedeutungslos, auf den Inhalt kommt es an.

    Solche Notwendigkeiten lassen oftmals ein nicht so optimales Datenmodell vermuten.
     
    NeuerMann1978, 7. Juli 2020
    #8
  9. Autsch. Inhalte adressiert man über Namen von Feldern, Tabellen ...

    Die Feldexistenz würde man z.B. prüfen, wenn man Strukturänderungen am Backend vornimmt => immer erst prüfen, dann handeln. Dort bietet es sich wie schon gesagt an, direkt die Tabellendefinition und deren Feldauflistung zu verwenden.

    Hat man verknüpfte Tabellen und muss sich vergewissern, wie die Feldnamen lauten, weil Originalname in der Herkunftstabelle und interpretierter Name in der verknüpften Tabelle nicht identisch sind, kann man sich auch eines Recordsets bedienen, bei Nur-Prüfung gerne mit einem leeren Recordset, denn für die Namensermittlung braucht man die hunderttausende Datensätze und deren Laden nicht.
     
    ebs17, 7. Juli 2020
    #9
  10. \@NeuerMann1978:
    Eberhard hat ja schon ein paar Punkte angeführt, warum das nicht so ist.
    Hinzu kommen auch noch spezielle Softwaretechniken, wo z.B. dynamisch Filter generiert werden, Steuerelement, welche per Wrapperklassen zusätzliche Funktionalitäten erhalten oder z.B. generische Klassen, welche Workflows und andere Modelle implementieren.
    Also Anwendungensfälle für solche Notwendigkeiten gibts viele.

    Gruß Ulrich
     
    knobbi38, 7. Juli 2020
    #10
  11. Hallo,
    das ist mir durchaus bewusst. Das meinte ich auch nicht.
    Im Prinzip könnte ich ja statt Vorname, Nachname, Ort auch Feld1, Feld2, Feld3 schreiben. Dass das wenig sinnvoll ist mir klar, aber funktionieren würde es.
    Das meinte ich mit bedeutungslos.

    Mir ist auch klar, dass es Fälle gibt wo man das braucht bzw. brauchen kann.

    Daher wollte ich ja wissen wozu er das braucht.
    Und schließlich habe ich ja auch selbst relativiert und zum Ausdruck gebracht, dass es eine Vermutung ist.
     
    NeuerMann1978, 7. Juli 2020
    #11
  12. Hallo danke für die Beiträge die haben mir geholfen einiges zu Verstehen, z.B. das ich ein Record wieder beenden muss.

    @ekkehard
    und das man die Variable rs der funktion übergeben muss, ich dachte das er das ganz normal erkennt so wie beim klassichen programmieren (c++,c# usw)

    ach und wofür ich es brauche, ich will mittels ein Button klick mehrere vordefinierte spalten in eine Tabelle einfügen und dafür muss ich vorher gucken ob eine der Spalten schon enthalten ist. denn wenn sie enthalten ist nehmen ich das raus aus dem sql befehl die ich mir im code erstelle, je nachdem welche spalten schon enthalten sind.
     
    blabuduwnmdjdsjajsus, 7. Juli 2020
    #12
  13. Spalte in einer Tabelle suchen

    Hallo,
    Wie vermutet, scheint doch ein fragwürdiges Datenmodell vorzuliegen.
    Was sind denn das für Spalten (Inhalt?) die da eingefügt werden müssen ?
     
    NeuerMann1978, 7. Juli 2020
    #13
  14. das sind Tabellen für Schaltschränke und die sollen eben immer die selben spalten haben, und mittels solch ein Button soll das auch geschehen.

    fragwürdig ist es dann vielleicht für dich

    das spart dann halt zeit, wenn man nicht jedesmal die Tabelle nach den Spalten überprüfen muss die neu dazukommen.
     
    blabuduwnmdjdsjajsus, 7. Juli 2020
    #14
  15. Das heißt dann ...

    - dass es pro Schaltschrank eine eigene Tabelle gibt, wobei die Tabellen strukturgleich sind?
    - hinzukommende Tabellenspalten "fallen vom Himmel"? Eine Verwendung/Verarbeitung von solchen bisher unbekannten Feldern fällt gleich mit vom Himmel oder ist bereits taktisch voll ausprogrammiert?
     
    ebs17, 7. Juli 2020
    #15
Thema:

Spalte in einer Tabelle suchen

Die Seite wird geladen...
  1. Spalte in einer Tabelle suchen - Similar Threads - Spalte Tabelle

  2. (2021) Pivot-Tabelle: mehrere Spalten als eine behandeln

    in Microsoft Excel Hilfe
    (2021) Pivot-Tabelle: mehrere Spalten als eine behandeln: Hallo, ich habe eine Tabelle, die für jeden Monat und für jeden Mitarbeiter Projektdaten enthält. Da diese teils an mehreren Projekten arbeiten, gibt es pro Zeile z.B. die Spalten "Projekt 1" und...
  3. Aus Ausgewählten Spalten eine neue Tabelle erstellen

    in Microsoft Excel Hilfe
    Aus Ausgewählten Spalten eine neue Tabelle erstellen: Ich bin ja derzeit an einer großen Inventur-Tabelle. Nun soll daraus ja eine übersichtliche Tabelle werden, die man einreicht. Ich könnte jetzt einfach dahergehen und alle Spalten ausblenden, die...
  4. Formatierte Tabelle: Spalten anders färben

    in Microsoft Excel Hilfe
    Formatierte Tabelle: Spalten anders färben: Hallo, es geht um eine formatierte Tabelle. Hier kann man ja beim Entwurf aus verschiedenen Formatvorlagen wählen. Ich persönlich mag diese Funktion, wenn die einzelnen Zeilen immer im Wechsel...
  5. Spalte gruppieren und aus den Inhalten jeweils eine Tabelle

    in Microsoft Excel Hilfe
    Spalte gruppieren und aus den Inhalten jeweils eine Tabelle: Hallo zusammen, ich habe eine große Abrechnungstabelle mit mehrere Spalten. Ich habe eine Spalte "Kontonummer" und mehrere Kontonummern und Rechnungen dazu in den Zeilen. Z.B. habe ich...
  6. Text auflisten wenn Wert in gleicher Spalte enthält X

    in Microsoft Excel Hilfe
    Text auflisten wenn Wert in gleicher Spalte enthält X: Hallo zusammen! Ich habe gerade folgendes Problem, bei dem ich nicht weiter komme, und wollte hier mal um Hilfe bitten: Ich habe eine Tabelle mit Feedbacks zu Lehrgängen. In jeder Spalte ist das...
  7. Dynamische Tabelle mit anderer dynamischen Tabelle verknüpfen mit neuer Spalte

    in Microsoft Excel Hilfe
    Dynamische Tabelle mit anderer dynamischen Tabelle verknüpfen mit neuer Spalte: Hallo zusammen, folgendes Problem: Ich habe in einer Datei zwei Reiter mit je einer intelligenten Tabelle. Tabelle 1 zeigt Grunddaten. Tabelle 2 zeigt Verbräuche. Beide Tabellen haben eine ID. Mit...
  8. Wert einer Spalte beim Durchlauf der Tabelle in einer Variablen speichern

    in Microsoft Access Hilfe
    Wert einer Spalte beim Durchlauf der Tabelle in einer Variablen speichern: Hallo, ich möchte eine gewisse Anzahl von Datensätzen mit einer Schleife durchlaufen. Dabei soll der Wert in der 1.Spalte für den aktuellen Datensatz in einer Variablen gespeichert werden....
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden