Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

cadena SQL que me debuelve registros de otra tabla

Estas en el tema de cadena SQL que me debuelve registros de otra tabla en el foro de Visual Basic clásico en Foros del Web. Pues resulta que en esta función que pongo más abajo aparentemente trabaja y esta bien escrita, pues no me da errores, pero el problema es ...
  #1 (permalink)  
Antiguo 06/11/2010, 02:43
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 9 meses
Puntos: 4
Pregunta cadena SQL que me debuelve registros de otra tabla

Pues resulta que en esta función que pongo más abajo aparentemente trabaja y esta bien escrita, pues no me da errores, pero el problema es que manda datos de otra tabla que nisiquiera menciono en la cadena.


Cita:

Sub LoadPagosOnListview()

asg
CNN.Open PRV
On Error Resume Next
SQL1 = "SELECT idpago, pagonumero, cantidad, fecha_hora, idcuenta FROM Pagos WHERE " & CInt(Form3.txtIdCuenta) & " = Pagos.idcuenta "
RST.Open SQL1, CNN, adOpenStatic
Form3.ListPagos.ListItems.Clear
While RST.EOF = False
Set LST = Form3.ListPagos.ListItems.Add(, , Format(RST(0), " 0000000"))
LST.SubItems(1) = RST(1)
LST.SubItems(2) = RST(3)
LST.SubItems(3) = RST(4)

RST.MoveNext
Wend

CNN.Close
End Sub
Como ven se genera la cadena y se llena un list view con los datos pero...

Lo que me manda son los cuatro primeros datos de la primera tabla de la base de datos, que en este caso es la tabla de Clientes.

Que puedo hacer para corregir esto, o existe alguna otra manera de llenar el list view, talvez yo estoy mal.
  #2 (permalink)  
Antiguo 06/11/2010, 15:14
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: cadena SQL que me debuelve registros de otra tabla

Aqui les dejo una imagen de mi proyecto donde aparece el efecto de la función que esta arriba.



Uploaded with ImageShack.us

para que me crean, jejeje, porque alomejor no me creen.

la primera flecha aparece el numero de cuenta que esta seleccionado
la segunda aparece en el formulario de abajo el numero de pagos de la cuenta y en el formulario de arriba deberian aparecer los datos de los pagos, en este caso debieron haber aparecido 4 pagos.
bueno la ultima flecha nada que ver, solo ignorenla, esque mi papa me estaba presionando con que le ayudara ha sacar algo de internet y me ... bueno ahi esta.

ayudenme a resolver esto por favor y gracias.
  #3 (permalink)  
Antiguo 07/11/2010, 06:39
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 21 años
Puntos: 19
Respuesta: cadena SQL que me debuelve registros de otra tabla

En el select estas usando un WHERE que es una condicion, lo cual solamente te va a mostrar los registros que comprenden la condicion.

Por lo visto
CInt(Form3.txtIdCuenta)
Esto contiene el "1" que se ve en la imagen que ingresaste en el textbox

Y
Pagos.idcuenta
Es la comparacion con el id de la cuenta.

En realidad por logica tendria que ser al reves
Pagos.idcuenta = CInt(Form3.txtIdCuenta)

Igualmente solamente te mostraria los registros que tengan como IDCUENTA en la tabla pagos el numero que ingresaste en el textbox, y se ve claramente que ingresaste un 1, por ende no te va a mostrar mas de 1 solo registro.
  #4 (permalink)  
Antiguo 08/11/2010, 00:38
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: cadena SQL que me debuelve registros de otra tabla

Hola amigo Could, si entendiste muy bien lo que he dicho, si claro, WHERE es una condicion, pero una condicion que no esta trabajando bien...

...pues el dato que paso como condicion lo compara mas bien con el identificador de la tabla clientes, siendo que le pido que lo compare con la tabla de pagos, sin mencionar que en la cadena sql nunca pido ningun dato de esta tabla ni la menciono.

otras cosas que hay que aclarar, que sin importar el valor que introduzca siempre me manda el registro que es igual al identificador de clientes de la tabla de los clientes, siempre solo una linea, es decir siempre manda los datos del cliente que tiene como id el valor "CInt(Form3.txtIdCuenta)" por ejemplo puede ser 4 y me manda los datos del cliente que tenga en id el numero 4, vamos que esto es como si estuviera utilizando la tabla de los clientes para hacer la comparación y extraer los datos.

Claro esto esta mal, seré yo?... espero que si...
... ya estoy buscando la solución!, pero igualmente espero que me ayuden.

Por otro lado tu mencionas que también importa el orden al comparar los datos, pues primeramente hice lo mas natural para mi, ponerlos así como tu dices, pero por alguna razón pensé que no afectaría y que tal vez me solucionaría el problema, y tenia razón por lo menos en algo, no afecta el orden y no quiero parecer grosero pero es obvio que una manzana es igual a una manzana sin importar cual tomes primero, en términos generales claro, eso fue lo que pense.

Bueno muchas gracias por su ayuda espero que me puedan ayudar con esto que esta muy extraño.

... Editado mismo día 1:30 am

No ya quedo, me di cuenta que la variable SQL1 no cambiaba al pasar por el procedimiento, ya logre que cambiara pero no se aun por que no cambiaba

voy a investigarlo mas a fondo y después pongo las conclusiones

aun así que raro...

Última edición por Gakex; 08/11/2010 a las 01:34
  #5 (permalink)  
Antiguo 09/11/2010, 18:44
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 21 años
Puntos: 19
Respuesta: cadena SQL que me debuelve registros de otra tabla

De todos modos en "Open" te falta un parametro, tendrias que usar en esa caso "adReadOnly" (no recuerdo si esta bien escrito, cuando ingreses la coma te saldra una lista)

Otro detalle, puede ser que anteriormente utilizaste ese recorset, con otra consulta del tipo SELECT, y no la cerraste, asi que previamente de dar el Open, fijate que este un Close (si es que usaste ese mismo recorset anteriormente)

Etiquetas: adodb, sgbd, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:34.