vincular vez validacion una selección rellenar reglas otro múltiple lista introducido formularios ejemplos desplegable dependiente cuadro combinado campo automáticamente ms-access access-vba

ms-access - validacion - rellenar campo automáticamente una vez introducido otro en access



¿Cómo puedo crear un formulario que busque valores en todas las tablas de una base de datos en acceso? (2)

Yo también no sé por qué querrías hacer algo así ...

Creo que la solución publicada por Daniel Cook es correcta, solo tomé un enfoque ligeramente diferente. ¿Necesita igualar el valor exacto como yo? De todos modos, aquí está mi código:

Function searchTables(term as String) Dim T As TableDef Dim Rs As Recordset Dim Result() As String Dim Counter Counter = 0 For Each T In CurrentDb.TableDefs If (Left(T.Name, 4) <> "USys") And (T.Attributes = 0) Then Set Rs = T.OpenRecordset While Not Rs.EOF For Each Field In Rs.Fields If Rs(Field.Name) = term Then Counter = Counter + 1 ReDim Preserve Result(Counter) Result(Counter) = T.Name & "," & Field.Name End If Next Rs.MoveNext Wend Rs.Close End If Next If Counter = 0 Then searchTables = Null Else searchTables = Result End If End Function

Debe filtrar los valores duplicados, en caso de que la función coincida varias veces con la misma presentada en la misma tabla.

Estoy tratando de crear un formulario que busque el valor dentro de todas las tablas en la base de datos (hay más de 1 tabla). El resultado se mostrará como el nombre de la tabla en la que aparece. Si alguien puede ayudarme, será agradable.

En resumen, tengo un formulario con un cuadro de texto y un botón. Introduzco la cadena de búsqueda (por ejemplo, 183939) y hago clic en el botón. Busca el valor (183939) dentro de todos los campos en las tablas de la base de datos, y si se encuentra el valor, muestra el nombre de la tabla en la que aparece. Gracias por la ayuda.


Creo que esta es una mala idea porque podría llevar mucho tiempo y proporcionar resultados confusos debido a que también se buscan tablas del sistema ... pero la siguiente función devolverá una matriz de todos los nombres de tablas que contengan el término de búsqueda o nada si no fuere no encontrado. El ejemplo de llamada es tal: theTables = containingTable("hello") donde theTables es una variante. Una limitación es que esto fallará en los campos multivalor.

Function containingTables(term As String) Dim db As Database Dim tds As TableDefs Dim td As TableDef Set db = CurrentDb Set tds = db.TableDefs For Each td In tds For Each f In td.Fields On Error Resume Next If DCount("[" & f.Name & "]", "[" & td.Name & "]", "[" & f.Name & "] LIKE ''*" & term & "*''") Then If Err.Number <> 0 Then Debug.Print Err.Number, Err.Description Err.Clear On Error GoTo 0 Else containingTables = containingTables & td.Name & "," Exit For End If End If Next Next Set tds = Nothing Set db = Nothing ''Alternate Version if Len(containgingTables) then containingTables = Left(containingTables, Len(containingTables) - 1) ''Original Version ''if Len(containgingTables) then containingTables = Split(Left(containingTables, Len(containingTables) - 1), ",") End Function

Para mostrar los resultados con la versión alternativa, simplemente use: Msgbox(containingTables(searchTerm)) donde searchTerm es lo que está buscando.