Búsqueda en Subformulario
Hola kieleze... ¿te acuerdas de la consulta que te hice el día de ayer?.. Quisiera saber si me puedes ayudar con lo del ejemplo de la consulta en un subformulario.
Saludos y Gracias
Saludos y Gracias
1 respuesta
Respuesta de kieleze
1
1

kieleze, Estudio ingenieria en sistemas, estoy en 3º año
Private Sub cmdMostrar_Click()
Dim seleccionar
Dim CamposClientes
CamposClientes = " [clientes].[cod_cliente], [clientes].[ape_cliente], [clientes].[nom_cliente], [tpo_doc].[dsc_tpo_doc], [clientes].[nro_doc], [clientes].[tel_cliente], [clientes].[dir_cliente], [localidades].[cod_localidad], [localidades].[nom_localidad]"
seleccionar = "Select " & CamposClientes & " FROM tpo_doc INNER JOIN (localidades INNER JOIN clientes ON [localidades].[cod_localidad]=[clientes].[cod_localidad]) ON [tpo_doc].[tpo_doc]=[clientes].[tpo_doc] WHERE"
If cboTipoDoc.ItemData(cboTipoDoc.ListIndex) <> 0 Then
seleccionar = seleccionar & " tpo_doc.tpo_doc = " & cboTipoDoc.ItemData(cboTipoDoc.ListIndex) & " AND"
End If
If txtNroDoc <> "" Then
seleccionar = seleccionar & " nro_doc = " & txtNroDoc.Text & " AND"
End If
If txtApellido <> "" Then
seleccionar = seleccionar & " ape_cliente LIKE '%" & txtApellido.Text & "%' AND"
End If
If txtNombre <> "" Then
seleccionar = seleccionar & " nom_cliente LIKE '%" & txtNombre.Text & "%' AND"
End If
If txtDireccion <> "" Then
seleccionar = seleccionar & " dir_cliente LIKE '%" & txtDireccion.Text & "%' AND"
End If
If cboLocalidad.ItemData(cboLocalidad.ListIndex) <> 0 Then
seleccionar = seleccionar & " localidades.cod_localidad = " & cboLocalidad.ItemData(cboLocalidad.ListIndex) & " AND"
End If
If txtTelefono.Text <> "" Then
seleccionar = seleccionar & " tel_cliente LIKE '%" & txtTelefono.Text & "%'"
Else
seleccionar = Left(seleccionar, Len(seleccionar) - 3)
End If
MostrarClientes (seleccionar)
End Sub
Esta consulta chequea algunos indeces de combo... y el contenido de textbox...
mostrarclientes lo único que hace es realizar la consulta...
Yo creo que tu pregunta era orientada a como obtener una select con distintos datos
La variable campos... la uso para no poner *
Private Sub MostrarClientes(seleccion As String)
iniciarADO adoClientes, adOpenForwardOnly, adCmdText
With adoClientes
.RecordSource = seleccion
.Refresh
End With
If adoClientes.Recordset.RecordCount = 0 Then
cmdSeleccionar.Enabled = False
Else
cmdSeleccionar.Enabled = True
End If
Set DGClientes.DataSource = adoClientes
End Sub
Dim seleccionar
Dim CamposClientes
CamposClientes = " [clientes].[cod_cliente], [clientes].[ape_cliente], [clientes].[nom_cliente], [tpo_doc].[dsc_tpo_doc], [clientes].[nro_doc], [clientes].[tel_cliente], [clientes].[dir_cliente], [localidades].[cod_localidad], [localidades].[nom_localidad]"
seleccionar = "Select " & CamposClientes & " FROM tpo_doc INNER JOIN (localidades INNER JOIN clientes ON [localidades].[cod_localidad]=[clientes].[cod_localidad]) ON [tpo_doc].[tpo_doc]=[clientes].[tpo_doc] WHERE"
If cboTipoDoc.ItemData(cboTipoDoc.ListIndex) <> 0 Then
seleccionar = seleccionar & " tpo_doc.tpo_doc = " & cboTipoDoc.ItemData(cboTipoDoc.ListIndex) & " AND"
End If
If txtNroDoc <> "" Then
seleccionar = seleccionar & " nro_doc = " & txtNroDoc.Text & " AND"
End If
If txtApellido <> "" Then
seleccionar = seleccionar & " ape_cliente LIKE '%" & txtApellido.Text & "%' AND"
End If
If txtNombre <> "" Then
seleccionar = seleccionar & " nom_cliente LIKE '%" & txtNombre.Text & "%' AND"
End If
If txtDireccion <> "" Then
seleccionar = seleccionar & " dir_cliente LIKE '%" & txtDireccion.Text & "%' AND"
End If
If cboLocalidad.ItemData(cboLocalidad.ListIndex) <> 0 Then
seleccionar = seleccionar & " localidades.cod_localidad = " & cboLocalidad.ItemData(cboLocalidad.ListIndex) & " AND"
End If
If txtTelefono.Text <> "" Then
seleccionar = seleccionar & " tel_cliente LIKE '%" & txtTelefono.Text & "%'"
Else
seleccionar = Left(seleccionar, Len(seleccionar) - 3)
End If
MostrarClientes (seleccionar)
End Sub
Esta consulta chequea algunos indeces de combo... y el contenido de textbox...
mostrarclientes lo único que hace es realizar la consulta...
Yo creo que tu pregunta era orientada a como obtener una select con distintos datos
La variable campos... la uso para no poner *
Private Sub MostrarClientes(seleccion As String)
iniciarADO adoClientes, adOpenForwardOnly, adCmdText
With adoClientes
.RecordSource = seleccion
.Refresh
End With
If adoClientes.Recordset.RecordCount = 0 Then
cmdSeleccionar.Enabled = False
Else
cmdSeleccionar.Enabled = True
End If
Set DGClientes.DataSource = adoClientes
End Sub

Esto debe estar entre ""
"SELECT [Educacion].[Fecha], [Educacion].[Tipo], [Educacion].[Area], [Educacion].[Nombre], [Educacion].[Contacto], [Educacion].[Tipocontacto], [Educacion].[Materia], [Educacion].[Nivel], [Educacion].[Direccion], [Educacion].[Sector], [Educacion].[Ciudad], [Educacion].[Telefono], [Educacion].[Correo]
FROM Educacion
WHERE (([Educacion].[Nombre]) LIKE '" & IIf(IsNull([Forms]![busqueda]![txtnombre]),[Educacion]![Nombre],[Forms]![busqueda]![txtnombre])) & "%'"
Creo que así debería de funcionar
Sino podrías usarlo en el iif
Cuando el dato de form este vacío que busque '%' todos
sino que devuelva el nombre
"SELECT [Educacion].[Fecha], [Educacion].[Tipo], [Educacion].[Area], [Educacion].[Nombre], [Educacion].[Contacto], [Educacion].[Tipocontacto], [Educacion].[Materia], [Educacion].[Nivel], [Educacion].[Direccion], [Educacion].[Sector], [Educacion].[Ciudad], [Educacion].[Telefono], [Educacion].[Correo]
FROM Educacion
WHERE (([Educacion].[Nombre]) LIKE '" & IIf(IsNull([Forms]![busqueda]![txtnombre]),[Educacion]![Nombre],[Forms]![busqueda]![txtnombre])) & "%'"
Creo que así debería de funcionar
Sino podrías usarlo en el iif
Cuando el dato de form este vacío que busque '%' todos
sino que devuelva el nombre

Mira tengo este código:
SELECT [Educacion].[Fecha], [Educacion].[Tipo], [Educacion].[Area], [Educacion].[Nombre], [Educacion].[Contacto], [Educacion].[Tipocontacto], [Educacion].[Materia], [Educacion].[Nivel], [Educacion].[Direccion], [Educacion].[Sector], [Educacion].[Ciudad], [Educacion].[Telefono], [Educacion].[Correo]
FROM Educacion
WHERE (([Educacion].[Nombre]) LIKE IIf(IsNull([Forms]![busqueda]![txtnombre]),[Educacion]![Nombre],[Forms]![busqueda]![txtnombre]));
Y necesito que ese like me funcione bien pero no se como hacer para colocar el % para la comparación parcial con el texto. ¿Sabes cómo puedo hacer?
SELECT [Educacion].[Fecha], [Educacion].[Tipo], [Educacion].[Area], [Educacion].[Nombre], [Educacion].[Contacto], [Educacion].[Tipocontacto], [Educacion].[Materia], [Educacion].[Nivel], [Educacion].[Direccion], [Educacion].[Sector], [Educacion].[Ciudad], [Educacion].[Telefono], [Educacion].[Correo]
FROM Educacion
WHERE (([Educacion].[Nombre]) LIKE IIf(IsNull([Forms]![busqueda]![txtnombre]),[Educacion]![Nombre],[Forms]![busqueda]![txtnombre]));
Y necesito que ese like me funcione bien pero no se como hacer para colocar el % para la comparación parcial con el texto. ¿Sabes cómo puedo hacer?

La verdad creo que no me expliqué, lo que quiero hacer es en el código que te envié, que esta hecho en una consulta de SQL y esta consulta se activa cuando yo presiono un botón... quiero que en la parte del Where, el operador LIKE me funcione, porque la consulta esta funcionando pero solo si ingreso la palabra exacta en la búsqueda y no parcial. Eso es lo que necesito, que la consulta me permita realizar búsqueda parcial del nombre. Pero no se como usar el LIKE en SQL con consulta ACCESS.. ¿tienes idea?

A ver...
Si la consulta esta hecha en access y guardada en access y puedes hacer que te funcionen los where... me dices como lo haces porque a mi no me sale
A ver si pued... copio la parte de atrás del WHERE que es la que nos interesa
Para probarlo quitemoles lo del iff y lo de isNull para poder lograrlo... luego le agregamos eso
"WHERE [Educacion].[Nombre] LIKE '%" & txtnombre.text & "%'"
Esto debería funcionar
Aceptara nombres por ejemplo si pones en la text ana
Debe dar los resultados
ANA
JuANA
ANAbel
Si esto es lo que quieres
Pruébalo así como te lo mando
Si la consulta esta hecha en access y guardada en access y puedes hacer que te funcionen los where... me dices como lo haces porque a mi no me sale
A ver si pued... copio la parte de atrás del WHERE que es la que nos interesa
Para probarlo quitemoles lo del iff y lo de isNull para poder lograrlo... luego le agregamos eso
"WHERE [Educacion].[Nombre] LIKE '%" & txtnombre.text & "%'"
Esto debería funcionar
Aceptara nombres por ejemplo si pones en la text ana
Debe dar los resultados
ANA
JuANA
ANAbel
Si esto es lo que quieres
Pruébalo así como te lo mando
- Compartir respuesta
- Anónimo
ahora mismo
