PROBLEMAS CON CONSULTAS, ME AYUDAIS?
Hola a todos!Tengo problemillas con consultas y no me queda muy claro por que, ya que funcionan a ratos.
1ª) Buscar clientes por DNI y por nombre.
La consulta por DNI funciona bastante bien hasta que realizo varias consultas seguidas, utilizando boton cmdnuevaconsulta. Las 2 primeras las hace bien y despues me da error 3021 en tiempo de ejecucion no hay registros activos. La consulta por nombre (Busca dentro de una frase la palabra nombre) no me hace ni caso, a veces, y otras veces me muestra el primer registro del campo, pero no el seleccionado, sino el de codigo 0001, y siempre el mismo. Respecto a que si no los encuentra me mande un msgbox, ya no se donde colocarlo porque o se me queda colgado, o me muestra el msgbox("No se encuentra cliente") a la vez que me muestra los datos. Y hoy por si fuera poco hoy le da por decirme que else esta solo sin bloque if.
Esto es lo que hago en clik de boton cmdconsultar:
If Chknif.Value = 1 Then
For i = 1 To rsclientes.RecordCount
nif = txtdatos.Text
If rsclientes!nifcliente.Value = nif Then
muestramedatos
Exit For
Else
i = i + 1
rsclientes.MoveNext
End If
Next
End If
If Chknombre.Value = 1 Then
For i = 1 To rsclientes.RecordCount
nombre = txtdatos.Text
If rsclientes!NombreFiscalCliente.Value = " & nombre & " Then
muestramedatos
Exit For
Else
i = i + 1
rsclientes.MoveNext
End If
Next
End If
2º) tengo un list view y un text box, en los que quiero que cuando me muestren los datos, a la vez me hagan las siguientes consultas: que me muestre en el listview otros proyectos con el mismo cliente buscandolo por si codigo, y que aparezca el nombre del cliente tambien buscandolo por su codigo.
En el primer caso me muestra la lista de codigos de todos los proyectos , y en el segundo me muestra el nombre del primer registro pasando de mi olimpicamente.
Esto es lo que hago en el form_load:
Set rsverclientes = dbsoltec.OpenRecordset("Select * from CLIENTES where 'IdCliente='" & Txtcodcliente.Text)
Set rsverproyectos = dbsoltec.OpenRecordset("Select * from PROYECTO where 'IdCliente='" & Txtcodcliente.Text)
Do While Not rsverproyectos.EOF
Lstotrosproyectos.AddItem rsverproyectos!IdProyecto.Value
rsverproyectos.MoveNext
Loop
Do While Not rsverclientes.EOF
Txtfiscal.Text = rsverclientes!NombreFiscalCliente.Value
rsverclientes.MoveNext
Loop
Espero haberme explicado bien. Un beso a todos
1ª) Buscar clientes por DNI y por nombre.
La consulta por DNI funciona bastante bien hasta que realizo varias consultas seguidas, utilizando boton cmdnuevaconsulta. Las 2 primeras las hace bien y despues me da error 3021 en tiempo de ejecucion no hay registros activos. La consulta por nombre (Busca dentro de una frase la palabra nombre) no me hace ni caso, a veces, y otras veces me muestra el primer registro del campo, pero no el seleccionado, sino el de codigo 0001, y siempre el mismo. Respecto a que si no los encuentra me mande un msgbox, ya no se donde colocarlo porque o se me queda colgado, o me muestra el msgbox("No se encuentra cliente") a la vez que me muestra los datos. Y hoy por si fuera poco hoy le da por decirme que else esta solo sin bloque if.
Esto es lo que hago en clik de boton cmdconsultar:
If Chknif.Value = 1 Then
For i = 1 To rsclientes.RecordCount
nif = txtdatos.Text
If rsclientes!nifcliente.Value = nif Then
muestramedatos
Exit For
Else
i = i + 1
rsclientes.MoveNext
End If
Next
End If
If Chknombre.Value = 1 Then
For i = 1 To rsclientes.RecordCount
nombre = txtdatos.Text
If rsclientes!NombreFiscalCliente.Value = " & nombre & " Then
muestramedatos
Exit For
Else
i = i + 1
rsclientes.MoveNext
End If
Next
End If
2º) tengo un list view y un text box, en los que quiero que cuando me muestren los datos, a la vez me hagan las siguientes consultas: que me muestre en el listview otros proyectos con el mismo cliente buscandolo por si codigo, y que aparezca el nombre del cliente tambien buscandolo por su codigo.
En el primer caso me muestra la lista de codigos de todos los proyectos , y en el segundo me muestra el nombre del primer registro pasando de mi olimpicamente.
Esto es lo que hago en el form_load:
Set rsverclientes = dbsoltec.OpenRecordset("Select * from CLIENTES where 'IdCliente='" & Txtcodcliente.Text)
Set rsverproyectos = dbsoltec.OpenRecordset("Select * from PROYECTO where 'IdCliente='" & Txtcodcliente.Text)
Do While Not rsverproyectos.EOF
Lstotrosproyectos.AddItem rsverproyectos!IdProyecto.Value
rsverproyectos.MoveNext
Loop
Do While Not rsverclientes.EOF
Txtfiscal.Text = rsverclientes!NombreFiscalCliente.Value
rsverclientes.MoveNext
Loop
Espero haberme explicado bien. Un beso a todos
no ley el codigo completo pero por el error que me das 3021 no hay registro activo, la solucion esta en realizar de nuevo la consulta es decir, select * from tablar y despues hacer tu seleccion de criterios
Para volver a cargar el recordset, te bastaría con hacer Mirecordset.requery
Hay un tema que quería comentarte: en el primer punto de tu mensaje, realizas una búsqueda muy primitiva, no crees? No sería más sencillo y rápido hacer un select que te devolviese los clientes con un nif específico?
Saludos.
Hay un tema que quería comentarte: en el primer punto de tu mensaje, realizas una búsqueda muy primitiva, no crees? No sería más sencillo y rápido hacer un select que te devolviese los clientes con un nif específico?
Saludos.
