PDA

Vollständige Version anzeigen : Suche in Datenbanktabellen


e9janna
05.06.2012, 15:31
Hallo,

besteht die Möglichkeit in allen Datenbanktabellen einer Accessdatenbank nach einer bestimmten Zeichenfolge zu suchen????

Vielen Dank für Eure Hilfe.

maikek
05.06.2012, 17:02
Ja.
maike

Anne Berg
05.06.2012, 18:59
Wie würdest du das denn angehen, Maike?

ebs17
05.06.2012, 19:28
Mit der office-üblichen Methode (Tabelle öffnen, per Strg + F den Suchendialog aufrufen und diesen verwenden, nächste Tabelle) sollte jeder zurecht kommen.

Man könnte das ganze etwas automatisieren mit etwas VBA in Verbindung mit SQL oder RegEx, da müsste man aber zusätzlich wissen, was bei erfolgreicher Suche mit einem Treffer passieren soll. Außerdem würde sich dann die Frage stellen, warum man etwas in allen Tabellen suchen soll. Ist da die Ordnung verloren gegangen?

Maxel
05.06.2012, 19:48
For Each tdf In CurrentDb.Tabledefs
For Each fld in tdf.Fields
if fld.DataType = blabla or …
if fld like "'*" & MeinSuchbegriff & "*'" then
'MachWas
end if
end if
Next fld
Next tdf

Das ist ein Luftcode - "widerwillig" und ohne Ehrgeiz getippt, weil ich bei der Frage Sinn und Hintergrund vermisse. ;)

Anne Berg
05.06.2012, 21:08
@Maxel:
Über die TableDefs-Auflistung und die TableDef-Objekte kommst du nur an die Tabelleneigenschaften und nicht an die Daten - das sollte auch bei "widerwillig" geäußerten Code-Vorschlägen berücksichtigt werden.

maikek
05.06.2012, 22:07
Wenn man wüsste, wonach in den Tabellen gesucht werden soll - Tabellenname? Feldname? Feldeigenschaft? Feldinhalt? ... wobei mir auch nicht recht einleuchten will, wozu man so etwas brauchen würde ... Deshalb meine knappe Antwort auf die allgemeine und ebenfalls recht knappe Ansage der Threaderstellerin.

Hic Rhodos, hic salta ... Ist aber nur Luftcode.

Falls es um die Feldinhalte geht, ein Recordset erzeugen (erweiterter Maxel ;) ):
For Each tdf In CurrentDb.Tabledefs
Set rs = CurrentDb.OpenRecordSet(tdf.Name)
do until rs.eof
For each fld in rs.Fields
if fld.Type = vbText or … then
if instr(1, "Suchbegriff", fld.value) then
'MachWas
end if
end if
Next fld
.movenext
loop
set rs = nothing
Next tdf

Wenn's nicht allzuviele Daten sind ...
maike

ebs17
05.06.2012, 22:14
Man könnte auch die Tabelle als Text ausgeben (geht mit ADODBRecordset.GetString ruckzuck) und dann im Text suchen. Das klappt bei jeder Textverarbeitung. Da spart man sich die mühselige Feldauflistung.
Jetzt könnte man nacheinander in den einzelnen Tabellen suchen oder erst alle Tabellen-Texte zu einem zusammenfassen und dann suchen.

Und das geht auch bei vielen Daten.