Bases de datos en Access para introducir, modificar y buscar registros

Tengo un problema que no he podido resolver.
Estoy desarrollando una base de datos en access, que principalmente cumpla con 3 funciones:
1) Ingresar nuevos registros
2) Modificar registros existentes
3) Búsqueda de registros (solo de lectura)
son 33 campos en total, siendo algunos de ellos: Nombre, RUT, Teléfono, etc...
Necesito crear un sistema que me busque en la base de datos los 33 campos (o los que tenga registrados) y me los arrogue en un formulario que tengo diseñado ya.
Quiero que la búsqueda sea o por el Nombre o por el RUT. Para eso hice un formulario con estas dos casillas y un ícono que dice BUSCAR.
Pero... Hasta ahí no más llegué.
Te pido

1 respuesta

Respuesta
1
Create un botón de búsqueda con el asistente que te abra el formulario que te muestre los registros que quieres.
Una vez creado el botón, te vas a mirar el código que ha generado en el evento al pulsar.
El código debe ejecutar algo como:
stDocName = "Formulario1"
DoCmd. OpenForm stDocName,, stLinkCriteria
En la función open form, le puedes pasar un where con una condición para que te salgan solo los registros que la cumplan te quedaría algo así
Dim sWhere as string
stDocName = "Formulario1"
sWhere = "RUT = '" + Me.Rut + "'"
DoCmd. OpenForm stDocName,, stLinkCriteria, sWhere
modificando esto para adaptarlo a tu bbdd te debe funcionar
Hola Alex, muchas gracias por ayudarme.
Lo que hice fue agregar un comando que me abriera el formulario (tal como me dijiste) buscando los datos específicos que yo buscaba, como el Nombre o el RUT.
Y así me los filtró.
No fue necesario poner la condición de "where".
Estos fueron los códigos que se crearon:
Private Sub Comando7_Click()
On Error GoTo Err_Comando7_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Formulario"
stLinkCriteria = "[RUT]=" & "'" & Me![RUT] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
stLinkCriteria = "[Nombre / Razón Social]=" & "'" & Me![Nombre / Razón Social] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Comando7_Click:
Exit Sub
Err_Comando7_Click:
MsgBox Err.Description
Resume Exit_Comando7_Click
End
Sub
Y bueno, ahora me nace una nueva duda.
Cuando ingreso un nombre o un rut que no está en la base de datos, igualmente se abre el formulario, pero en blanco. En ese caso me gustaría que no se abriera el formulario, sino se abriera una ventana diciendo que el registro no existe.
Lo otro, es que me gustaría que si el nombre fuera "Pedro Reyes Soto", de tan sólo ingresar Reyes, se abra el formulario.
Porque hasta el momento, tengo que escribir el nombre exacto con el que está en la base de datos.
Bueno Alex, ojalá puedas ayudarme con esto que me urge.
De todas maneras te lo agradezco mucho mucho mucho.
Saludos,
Pame.
Sobre lo de que busque por reyes solo, te basta con cambiar la linea
stLinkCriteria = "[Nombre / Razón Social]=" & "'" & Me![Nombre / Razón Social] & "'"
por
stLinkCriteria = "[Nombre / Razón Social] like " & "'%" & trim(Me![Nombre / Razón Social]) & "%'"
el like busca dentro del texto.
Para buscar antes de abrir el formulario te tienes que buscar el registro en la tabla que toque y si no existe no abrir, o puedes hacer que en el evento al cargar el formulario que abres, le pones generar código (sera el evento load del form)
Alli miras por codigo vb
y creas la función
Private Sub Form_Open(Cancel As Integer)
 If Me.Recordset.EOF Then
    msgbox "no hay registros"
    Cancel = True
 End If
Si esto no te gusta, hay que abrir un recordset para ver si algún registro cumple la condición antes de abrir el formulario
End Sub
Hola Alex,
pucha, no me resulta el nuevo código para que me busque todos los registros que contengan la palabra "reyes"... por ejemplo.
Puse tal cual me dijiste:
Private Sub BUSCAR_Click()
On Error GoTo Err_BUSCAR_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Formulario Modificar"
stLinkCriteria = "[RUT]=" & "'" & Me![RUT] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
stLinkCriteria = "[Nombre / Razón Social]like" & "'%" & Trim(Me![Nombre / Razón Social]) & "%'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_BUSCAR_Click:
Exit Sub
Err_BUSCAR_Click:
MsgBox Err.Description
Resume Exit_BUSCAR_Click
End Sub
Pero no pasa nada, dije lanzándome formularios en blanco.
PArece que te falta un espacio antes del like.
Si sigue sin funcionar, dime que error te da.
mmm aun sin funcionar, es más, ahora ni siquiera me aparecen resultados cuando escribo el nombre exacto... me abre un formulario en blanco, como si no existiese...
No me da un error, solo abre el formulario en blanco
Cambialo por este código
Private Sub BUSCAR_Click()
On Error GoTo Err_BUSCAR_Click
Dim stDocName As String
Dim sWhere As String
stDocName = "Formulario Modificar"
sWhere = "[RUT]=" & "'" & Me![RUT] & "' OR "
sWhere = stLinkCriteria  + " [Nombre / Razón Social] like" & "'%" & Trim(Me![Nombre / Razón Social]) & "%'"
DoCmd.OpenForm stDocName, , , , sWhere
Exit_BUSCAR_Click:
Exit Sub
Err_BUSCAR_Click:
MsgBox Err.Description
Resume Exit_BUSCAR_Click
End Sub
A ver si te funciona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas