Access - buscar registro

 
Vista:
sin imagen de perfil

buscar registro

Publicado por Nomada (171 intervenciones) el 20/07/2007 17:22:13
Buenas.
Tengo dos bases de datos relacionadas BD1(Maestro) y BD2(Año actual), y quiero que cuando vaya a crear un registro nuevo si ya existe en la BD1, me lo enseñe, sino que me cree un registro nuevo.
Creo un registro con una matrícula, al salir de dicho campo si la matrícula existe en el Maestro, que me enseñe los datos y si no que me cree en registro nuevo en el Año actual.

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

Crear registro nuevo o mostrar existente según relación en bases de datos

Publicado por Alejandro (4142 intervenciones) el 16/08/2023 17:12:05
Para lograr esto, necesitarás utilizar código VBA en el evento de AfterUpdate del campo de matrícula en tu formulario de BD2 (Año actual). Aquí tienes un enfoque general sobre cómo hacerlo:

1. Abrir registro existente si la matrícula existe en BD1 (Maestro):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Matricula_AfterUpdate()
    Dim strSQL As String
    Dim rs As Recordset
    Dim strMatricula As String
 
    strMatricula = Me!Matricula ' Obtener el valor de matrícula ingresado
 
    ' Consultar BD1 (Maestro) para ver si existe la matrícula
    strSQL = "SELECT * FROM BD1 WHERE Matricula = '" & strMatricula & "'"
    Set rs = CurrentDb.OpenRecordset(strSQL)
 
    If Not rs.EOF Then ' Si se encuentra una coincidencia
        rs.MoveFirst
        ' Mostrar los datos existentes en BD1 (Maestro) en los campos correspondientes de BD2 (Año actual)
        Me!Campo1 = rs!Campo1
        Me!Campo2 = rs!Campo2
        ' ...
    End If
 
    rs.Close
    Set rs = Nothing
End Sub

2. Crear un nuevo registro si la matrícula no existe en BD1 (Maestro):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Matricula_AfterUpdate()
    Dim strSQL As String
    Dim rs As Recordset
    Dim strMatricula As String
 
    strMatricula = Me!Matricula ' Obtener el valor de matrícula ingresado
 
    ' Consultar BD1 (Maestro) para ver si existe la matrícula
    strSQL = "SELECT * FROM BD1 WHERE Matricula = '" & strMatricula & "'"
    Set rs = CurrentDb.OpenRecordset(strSQL)
 
    If rs.EOF Then ' Si no se encuentra ninguna coincidencia
        rs.Close
        Set rs = Nothing
        ' Agregar un nuevo registro en BD2 (Año actual)
        DoCmd.GoToRecord , , acNewRec
        Me!Matricula = strMatricula ' Establecer la matrícula ingresada en el nuevo registro
    End If
 
    rs.Close
    Set rs = Nothing
End Sub

Coloca uno de estos bloques de código en el evento AfterUpdate del campo de matrícula en tu formulario de BD2 (Año actual), según la lógica que desees implementar (mostrar el registro existente o crear uno nuevo).

Recuerda adaptar los nombres de campos, tablas y bases de datos según la estructura real de tu base de datos. Además, ten en cuenta que este es un enfoque general y puede requerir ajustes adicionales según tus necesidades específicas.
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