• Domingo 5 de Mayo de 2024, 05:34

Autor Tema:  Moverse Por Registros Despues De Sql  (Leído 2772 veces)

F_rank_cisco

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Moverse Por Registros Despues De Sql
« en: Lunes 5 de Mayo de 2008, 22:00 »
0
Hola a todos:
Por que despues de hacer esta consulta SQL en un ControlData:
Este es el código de la consulta:
sBuscar = "pepe"
cbClientes, es un ComboBox con nombres.

Consulta = "select * from Direcciones where " & sBuscar & " like '" & cbClientes.Text & "*';"
DataClientes.RecordSource = Consulta
DataClientes.Refresh

Y ya no puedo ir a los registros, ni anteriores ni posteriores, sólo al primero y al último, con las flechas del control.
Despues he intentado asignar de nuevo la Tabla así:
DataClientes.RecordSource ="Direcciones "
pero nada sigue igual.
Gracias de antemano.

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Moverse Por Registros Despues De Sql
« Respuesta #1 en: Martes 6 de Mayo de 2008, 00:40 »
0
Primero la consulta tiene error, le faltan comillas simples.
Debe quedar así:

Código: Text
  1. Consulta = "Select * from Direcciones where '" & sBuscar & "' like '" & cbClientes.Text & "*'"
  2.  

Además la consulta SQL puede estar mal redactada, ya que después de Where debe de ir el nombre del campo en donde se buscará y después de Like debe de ir el dato a buscar. Revisa que estás haciendo.


Segundo, para seleccionar todos los registros debe ser así:

Código: Text
  1. DataClientes.RecordSource ="Select * from Direcciones"
  2.  

Estos códigos son para ControlData en DAO.

 :comp:

F_rank_cisco

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Moverse Por Registros Despues De Sql
« Respuesta #2 en: Martes 6 de Mayo de 2008, 12:51 »
0
Gracias por responder cpmario pero:
La consulta que me sugieres, y que sería según tu así:
Consulta = "Select * From  Direcciones Where ' " & Campo a buscar & " ' Like ' " & Texto a buscar & "* ';"
Esto no funciona.

O sea mi consulta esta bien, por que funciona y me encuentra lo buscado, y sería así:
Consulta = "Select * From Direcciones Where " & Campo a buscar & " Like ' " & Texto a buscar & "* ';"

DataClientes.RecordSource = Consulta

A partir de esto ocurre que:
DataClientes.Recordset.RecordCount ahora tiene 2, o sea los 2 que coinciden con la búsqueda, de los 6 totales que tiene la tabla.
Y a partir de esta consulta sólo puedo moverme a uno de estos 2 registros, pero no al resto de los 6 que hay en la tabla Direcciones

O sea mi problema no es la consulta SQL, sino que despues de hacerla no puedo acceder a ningún registro.

F_rank_cisco

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Moverse Por Registros Despues De Sql
« Respuesta #3 en: Martes 6 de Mayo de 2008, 13:02 »
0
Perdona se me olvidaba cpmario:

Si asigno esto:
DataClientes.RecordSource ="Select * from Direcciones"

Sí, recupero todos los registros, pero me situa al principio de la Tabla, y en el campo Cliente me pone el primer nombre, y me borra el/los de la consulta.

Y yo quiero que a partir de el/los encontrado/s, pueda moverme por todos los registros.

Perdonad por ser tan reiterativo, pero es que llevo 2 días con esto, buscando por muchos foros, y no encuentro nada.
Y creo que debe de ser algo muy sencillo, pero que yo ignoro por uqe es la primera vez que utilizo el ControlData.
Gracias.

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Moverse Por Registros Despues De Sql
« Respuesta #4 en: Martes 6 de Mayo de 2008, 16:47 »
0
Como escribiste sBuscar = "pepe" no pensé que fuera un campo a buscar.

En cuanto a lo que deseas, te diré que en cualquier tipo de búsqueda que hagas con SQL su comportamiento es como el que señalas, solo muestra lo buscado, o muestra todo.
Si lo que deseas es hacer búsquedas y mostrar toda la información, trata con los métodos FindFirst, FindLast, FindNext, FindPrevious para encontrar la información. Por ejemplo:        
Código: Text
  1. DataClientes.Recordset.FindFirst "Campo a buscar='" & cbClientes.Text & "'"
  2.  
  3.  
También puedes hacer dos DataControls uno con toda la información y otro con la información buscada.

No puedo darte más información porque no entiendo a que te refieres con
Citar
Y yo quiero que a partir de el/los encontrado/s, pueda moverme por todos los registros.
Aunque creo entender lo que necesitas.

Lo que hago al encontrar un dato de una consulta SQL es que tomo en una variable (lngIDPac) el valor de campo del registro encontrado, por ejemplo IDPac (campo autonumérico) que me identifica al paciente (cliente en tu caso)
Código: Text
  1. lngIDPac = DatPac.Recordset("IDPac")
  2.  
Luego efectúo una instrucción
Código: Text
  1. DatPac.RecordSource ="Select * from Identificacion"
  2.  
y enseguida
Código: Text
  1. DatPac.Recordset.FindFirst "IDPac = " & lngIDPac
  2.  
Con lo anterior muestro todos los pacientes (clientes en tu caso) con el paciente que encontré, automáticamente seleccionado.

 :comp:

F_rank_cisco

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Moverse Por Registros Despues De Sql
« Respuesta #5 en: Martes 6 de Mayo de 2008, 17:20 »
0
OK cpmario entendido, ahora lo tengo claro y se lo que tengo que hacer.

Muchas gracias por tu ayuda y un  saludo.