Visual Basic.NET - Cargar dataset con dataadapter

 
Vista:

Cargar dataset con dataadapter

Publicado por David (116 intervenciones) el 20/07/2004 17:18:27
Hola, tengo un dataset y un dataadapter para cargar un datagrid.
Esta sentencia funciona:
Dim AdapterFact As SqlDataAdapter = New SqlDataAdapter("SELECT distinct(IdFacturaCli), NumeroFactura, fecha, formaPago FROM FacturaClientes", conn)
AdapterFact.Fill(dset, "FacturaClientes")
Esta no funciona:
Dim AdapterFact As SqlDataAdapter = New SqlDataAdapter("SELECT distinct(IdFacturaCli), NumeroFactura, fecha, formaPago FROM FacturaClientes WHERE AlbaranClientes.IdFacturaCli= FacturaClientes.IdFacturaCli AND AlbaranClientes.IdCliente = '" & dr("Identificador") & "'", conn)
AdapterFact.Fill(dset, "FacturaClientes")
¿Alguien sabe por qué?
¿Solo puedo poner una tabla por adaptador?
¿Como se solucionaria?
Gracias y saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cargar dataset con dataadapter

Publicado por Edgar (1501 intervenciones) el 20/07/2004 17:29:01
Hola

Lo que debe suceder es que no estás agregando la tabla AlbaranClientes dentro de la clausula from, por lo que la sentencia está mal formada.. deberias colocar esto:

Dim AdapterFact As SqlDataAdapter = New SqlDataAdapter("SELECT distinct(IdFacturaCli), NumeroFactura, fecha, formaPago FROM FacturaClientes, AlbaranClientes WHERE AlbaranClientes.IdFacturaCli= FacturaClientes.IdFacturaCli AND AlbaranClientes.IdCliente = '" & dr("Identificador") & "'", conn)
AdapterFact.Fill(dset, "FacturaClientes")

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar dataset con dataadapter

Publicado por David (116 intervenciones) el 20/07/2004 18:43:50
Hola. Si lo tengo puesto, pero se me escapo, el problema es q no pilla la restriccion y pone todos los registros.
Por ejemplo, si en un grid quiero q salgan los albaranes q no tengan facturas pondria esto.
Dim consultaAlbaranCli As String = "SELECT IdAlbaranCli, NumeroAlbaran, Fecha FROM AlbaranClientes WHERE IdCliente = '" & TIdCli.Text & "' AND IdFactura <> '" & DBNull.Value& '""
y tampoco funciona (aunque en este caso me pone q no se puede cambiar varchar a numeric.
Gracias y saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar dataset con dataadapter

Publicado por Edgar (1501 intervenciones) el 20/07/2004 19:01:03
Hola

En el ultimo ejemplo te dice que no puede convertir de varchar a numerico porque estas poniendo las comillas en la sentencia.. quitalas y prueba

En el caso anterior prueba primero cambiar el distinct por esto: distinct(AlbaranClientes.IdFacturaCli)

En caso de que no funcione, trata colocando un Join.. algo asi

"SELECT distinct(AlbaranClientes.IdFacturaCli), NumeroFactura, fecha, formaPago FROM FacturaClientes Inner Join AlbaranClientes On AlbaranClientes.IdFacturaCli= FacturaClientes.IdFacturaCli Where AlbaranClientes.IdCliente = '" & dr("Identificador") & "'"

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar dataset con dataadapter

Publicado por David (116 intervenciones) el 20/07/2004 19:35:26
Hola.
En el ultimo ejemplo me sigue dando el mismo error de conversion quitando las comillas.
En el otro ya no da error, pero sigue devolviendo todos los registros, no solo los del cliente seleccionado.
Gracias
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar dataset con dataadapter

Publicado por Edgar (1501 intervenciones) el 20/07/2004 19:50:22
Hola

En el ultimo ejemplo no le coloques el DbNull sino que directament escribe null en la sentencia...

Ahora, en cuanto a tu problema inicial... beno, creo que el problema está en el distinct... quitalo, y coloca solamente que te devuelve al Id del cliente, esa clausula parece no hacer falta, y me da la impresión de que es la que te está causando todo el problema

Si el problema persiste, te recomiendo si tu base de datos está bajo SQL Server que uses el analizador de consultas para que puedas crear la misma, hasta que la misma sea com tu deseas. Sinceramente me extraña mucho que te devuelva todos los registros, ya que el Inner Join te devuelve los registros que estan en las dos tablas, y además, estás filtrando por el código del mismo

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar