Tabelleninhalt in allen verfügbaren Tabellen suchen.

Moderator: ModerationP

Re: Tabelleninhalt in allen verfügbaren Tabellen suchen.

Beitragvon MrZOrtrax » 18. Okt 2019, 06:41

Allerdings... Kompliziert ist es allemal. So richtig steige ich bei dem Code hier auch noch nicht durch. Kannst du mir hieraus mal einen richtigen Beispiel Loop zeigen?

Ich glaub für das Recordset fehlt im Code noch etwas? Allein so wirds nicht gehen...

SELECT * FROM dbo_BCSPjmAdressenKontakt 'hintere Teil wird dann pro loop ersetzt, das ist kein Problem, das bekomm ich hin.

Hier fehlt meiner Meinung nach auch noch was. Die Tabelle wäre dann erstmal "dbo_BCSPjmAdressenKontakt" aber -> die Feldnamen variieren pro Tabelle! Die müssen dann auch innerhalb der Tabelle erstmal ausgelesen und nach einander geprüft werden also auch gelooped!

Wenn DCount("*", "Tabellenname", "Feldname = '" & Suchtext & "'") > 0 dann
MrZOrtrax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 242
Registriert: 21. Aug 2016, 12:21

Re: Tabelleninhalt in allen verfügbaren Tabellen suchen.

Beitragvon Gast » 18. Okt 2019, 08:20

Wie geschrieben - Code ist nur handwerkliche Umsetzung eines Ablaufplanes:

Code: Alles auswählen
Sub MrZOrtrax(ByVal AnyText As String)
    Dim db As DAO.Database
    Dim td As DAO.TableDef
    Dim rs As DAO.Recordset
    Dim lCount As Long
    Dim i As Long

    Set db = CurrentDb                                  ' alternativ könnte man auch auf das nach wie vor
                                                        ' ungenannt unbekannte Backend referenzieren
    For Each td In db.TableDefs
        If Left(td.Name, 4) <> "MSys" Then
            Set rs = db.OpenRecordset("SELECT * FROM " & td.Name & " WHERE 1 = 0", _
                                      dbOpenForwardOnly)
            With rs
                For i = 0 To .Fields.Count - 1
                    If .Fields(i).Type = dbText Then
                        lCount = DCount("*", td.Name, .Fields(i).Name & " = '" & AnyText & "'")
                        If lCount > 0 Then
                            Debug.Print td.Name, .Fields(i).Name, lCount
                        End If
                    End If
                Next
                .Close
            End With
        End If
    Next
    ' Aufräumen

End Sub
Gast
 

Re: Tabelleninhalt in allen verfügbaren Tabellen suchen.

Beitragvon MrZOrtrax » 18. Okt 2019, 10:20

Unterschied zwischen Sub / Private Sub?

Bei (ByVal AnyText As String) müsste eigentlich ein Wert mit übergeben werden? Soll das ein Textfeld sein?
MrZOrtrax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 242
Registriert: 21. Aug 2016, 12:21

Re: Tabelleninhalt in allen verfügbaren Tabellen suchen.

Beitragvon Gast » 18. Okt 2019, 11:56

Sub ohne weiteren Hinweis dürfte in einem Standardmodul öffentlich (public) sein.
Auf Grund der vmtl. einzigartigen Namensgebung darf sie ruhig public sein, Konflikte wegen weiterer Prozeduren mit gleichem Namen werden kaum eintreten.

ein Wert mit übergeben werden?

Na klar. Wer schriebe denn Funktionen/Prozeduren mit hardcodierten Parametern statt variabel und flexibel?
Code: Alles auswählen
Sub aufruf_MrZOrtrax()
   MrZOrtrax "xyz"
End Sub

Startprozedur mit F5 aufrufen. Man kann natürlich auch noch ein Formular mit Textfeld und Button basteln und das schön gestalten mit Rahmen und Farben und Blumen und dann von dort auf den Aufruf starten.
Gast
 

Re: Tabelleninhalt in allen verfügbaren Tabellen suchen.

Beitragvon Gast » 18. Okt 2019, 12:00

Das DCount-Feuerwerk wäre mir persönlich ein Dorn im Auge. Man könnte sich alternativ eine Abfrage wie folgt pro tabelle zusammenstellen und hätte dann pro Tabelle nur einen Abfragezugriff:
Code: Alles auswählen
SELECT
   SUM(A = "xyz") AS A,
   SUM(B = "xyz") AS B,
   SUM(C = "xyz") AS C
FROM
   tblQQ
Gast
 

Re: Tabelleninhalt in allen verfügbaren Tabellen suchen.

Beitragvon MrZOrtrax » 18. Okt 2019, 12:05

In etwa versteh ich was du meinst.

Klappt zwar bei mir grade nicht so xD aber ich hab daraus eine Public Function gemacht und die im Direktbereich ausgeführt. Das Klappt bis zu ner gewissen Zeile ganz gut. dann kommt ein Fehler. Ich teste mal was rum.
MrZOrtrax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 242
Registriert: 21. Aug 2016, 12:21

Re: Tabelleninhalt in allen verfügbaren Tabellen suchen.

Beitragvon Gast » 18. Okt 2019, 12:10

dann kommt ein Fehler

Sehr gut. Ein Ansatz kann sich an etwas bekanntem bzw. an einem eigenausgedachten Modell orientieren. Da muss dann nicht der "Mist" der Realität vorkommen wie z.B. Bezeichnungen mit Sonderzeichen.
Gast
 

Re: Tabelleninhalt in allen verfügbaren Tabellen suchen.

Beitragvon MrZOrtrax » 18. Okt 2019, 14:15

Syntaxfehler in Abfrageausdruck '_Objektnummer = '99100094".

in dieser Zeile:
lCount = DCount("*", td.Name, .Fields(i).Name & " = '" & AnyText & "'")
MrZOrtrax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 242
Registriert: 21. Aug 2016, 12:21

Re: Tabelleninhalt in allen verfügbaren Tabellen suchen.

Beitragvon MrZOrtrax » 18. Okt 2019, 14:20

Hab da jetzt eine Resume next mit eingebaut um Ihn das überspringen zu lassen. Jedenfalls kann ich das so schonmal benutzen. Aber scheinbar gibts keine Treffer für die aktuelle Nummer 99100094. Die Nummer davor, die auch noch angelegt ist gibt es.

dbo_KHKArtikel Artikelnummer 1
dbo_KHKArtikelVarianten Artikelnummer 1
dbo_vewBSCrmArtikelArtikelgruppe Artikel 1
MrZOrtrax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 242
Registriert: 21. Aug 2016, 12:21

Vorherige

Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste