Access - Buscar al salir

 
Vista:
sin imagen de perfil

Buscar al salir

Publicado por Nomada (171 intervenciones) el 19/07/2007 16:52:14
Buenas.
Hace tiempo, hice un código donde al salir de un campo independiente (cuadro de texto) buscara en otro campo. Estoy seguro que lo hice con algún asistente pues de códigos no entiendo mucho. El código era el siguiente:

Private Sub nssccc_Exit(Cancel As Integer)
Dim stDocName As String
Dim stLinkCriteria As String
Dim nssccc As String

stDocName = "N_IntDatosAcuse"

stLinkCriteria = "[Anssccc]=" & Me![nssccc] 'busca el valor nsccc en el campo atabla.nssccc
DoCmd.OpenForm stDocName, , , stLinkCriteria 'abre N_IntDatosAcuse según la búsqueda

Es decir, lo que quiero es que al salir de un campo independiente (cuadro de texto) realice la búsqueda de ese dato introducido, en otro campo y si no encuentra dicho dato, que cree un registro.

Gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Búsqueda y creación de registro en otro campo al salir de un cuadro de texto

Publicado por Alejandro (4142 intervenciones) el 15/08/2023 22:46:00
El código que proporcionaste es una excelente base para lograr lo que deseas. Sin embargo, necesitarás ajustar el código para verificar si el valor buscado existe en otro campo y, si no existe, crear un nuevo registro. A continuación, te proporciono el código modificado para lograrlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Private Sub nssccc_Exit(Cancel As Integer)
    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim nssccc As String
 
    nssccc = Me![nssccc] ' Valor ingresado en el cuadro de texto
 
    ' Verificar si el valor nssccc existe en otro campo (por ejemplo, en [Atabla].[Anssccc])
    If DCount("*", "[Atabla]", "[Anssccc] = '" & nssccc & "'") > 0 Then
        ' El valor existe, abrir el formulario relacionado
        stDocName = "N_IntDatosAcuse"
        stLinkCriteria = "[Anssccc] = '" & nssccc & "'"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    Else
        ' El valor no existe, crear un nuevo registro
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
 
        Set db = CurrentDb
        Set rs = db.OpenRecordset("Atabla", dbOpenDynaset)
 
        rs.AddNew
        rs!Anssccc = nssccc
        rs.Update
        rs.Close
 
        ' Abrir el formulario relacionado con el nuevo registro
        stDocName = "N_IntDatosAcuse"
        stLinkCriteria = "[Anssccc] = '" & nssccc & "'"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    End If
End Sub

Este código modificado realiza lo siguiente:

1. Verifica si el valor ingresado en el cuadro de texto "nssccc" existe en otro campo de la tabla "Atabla" (por ejemplo, en el campo "[Anssccc]").
2. Si el valor existe, abre el formulario "N_IntDatosAcuse" filtrado por el valor buscado.
3. Si el valor no existe, crea un nuevo registro en la tabla "Atabla" con el valor ingresado y luego abre el formulario "N_IntDatosAcuse" para el nuevo registro.

Asegúrate de reemplazar "Atabla", "[Anssccc]", "N_IntDatosAcuse", "nssccc", etc., con los nombres reales de tu tabla, campos y formularios.

Recuerda probar el código en un entorno de desarrollo antes de implementarlo en tu base de datos en producción.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar