Duda con consulta sql

Hola experto. Tengo una duda. En una aplicación web necesito extraer datos de una tabla y lo hago de esta forma.
consulta = "Select * FROM productos WHERE codigoest = @codigoest and declaración = @declara"
Dim Midatasetprod As New DataSet()
Dim comando5 As New SqlDataAdapter(consulta, con) comando5.SelectCommand.Parameters.Add(New SqlParameter("@codigoest", SqlDbType.Int))
comando5.SelectCommand.Parameters("@codigoest").Value = codigoest comando5.SelectCommand.Parameters.Add(New SqlParameter("@declara", SqlDbType.Int)) comando5.SelectCommand.Parameters("@declara").Value = declara comando5.Fill(Midatasetprod, "productos")


codigoest y declara son variables integer.
con es el string de conexión.


La cosa es que funciona pero sólo me devuelve una fila de resultado en Midatasetprod. Al probarlo en una vista sí devuelve todas las filas.


Me podrías ayudar a ver dónde estoy fallando.

2 Respuestas

Respuesta
1

Creo que no te devuelve una sola fila, si no que no lo recorres bien al DataSet, muéstrame el código que haces para ver el DataSet o a que objeto lo asignas.

Gracias Eduardo.  Lo que tengo es esto:

Esta es la última línea del post anterior:

comando5.Fill(Midatasetprod, "productos")

col=45

**Luego hago esto para contar los registros:

Dim cuenta As Integer
cuenta = Midatasetprod.Tables.Count

** Ahí es donde me da 1, siempre.  Entonces cuando corro el siguiente código me agrega sólo una línea en un documento PDF.

** Así recorro el dataset:

For i = 0 To Midatasetprod.Tables.Count - 1
fila = 25
retc1 = New XRect(fila, col, 585, 60)
tf2.DrawString(Midatasetprod.Tables(0).Rows(i)("tipoproducto").ToString, FteNormal, XBrushes.Black, retc1)
fila = 90
retc1 = New XRect(fila, col, 585, 60)
tf2.DrawString(Midatasetprod.Tables(0).Rows(i)("producto").ToString, FteNormal, XBrushes.Black, retc1)
fila = 220
retc1 = New XRect(fila, col, 585, 60)
tf2.DrawString(Midatasetprod.Tables(0).Rows(i)("cantidad").ToString, FteNormal, XBrushes.Black, retc1)
fila = 280
retc1 = New XRect(fila, col, 585, 60)
tf2.DrawString(Midatasetprod.Tables(0).Rows(i)("unidad").ToString, FteNormal, XBrushes.Black, retc1)
fila = 330
retc1 = New XRect(fila, col, 585, 60)
tf2.DrawString(Midatasetprod.Tables(0).Rows(i)("porcentaje").ToString, FteNormal, XBrushes.Black, retc1)
fila = 390
retc1 = New XRect(fila, col, 585, 60)
tf2.DrawString(Midatasetprod.Tables(0).Rows(i)("comentario").ToString, FteNormal, XBrushes.Black, retc1)
fila = 500
retc1 = New XRect(fila, col, 585, 60)
tf2.DrawString(Midatasetprod.Tables(0).Rows(i)("areacultivo").ToString, FteNormal, XBrushes.Black, retc1)
col = col + 15
Next

Gracias

El error está aquí:

For i = 0 To Midatasetprod.Tables.Count - 1

Lo que haces ahí es contar cuantas tablas tienes, y solo tienes 1 tabla, no cuentas registros.

Cambia tu código por esto:

Midatasetprod. Tables(0). Rows. Count - 1

Me comentas.

Respuesta
1

Ante todo disculpa la demora, he estado muy ocupado.

La verdad es que es un caso un tanto extraño. Si ejecutándolo directamente contra la base de datos te devuelve todas las filas y el grid solo una se me ocurre:

1) Que los parámetros "codigoest" y "declara" no sean los mismos que tienes en la vista.

2) Que tengas activada la paginación del Grid a 1 elemento por página y solo se te muestre el primero

La verdad es que no se me ocurre mucho más sin poder hacer unas pruebas.

Lamento no poder ayudarte más.

PD: Hace poco se incluyó en Todoexpertos la posibilidad de insertar código fuente formateado.

Cuando pegues código en la pregunta seleccionalo y pulsa el segundo botón por la derecha en la barra de herramientas del editor y te lo "pintará" como código para que sea de más fácil lectura.

Gracias experto.  Traveseando un poco encontré el problema.  Era en una instrucción que no puse en la consulta que te hice.  La lectura del dataset la estaba haciendo en un FOR pero escribí mal:

For i = 0 To Midatasetprod.Tables(0).Rows.Count - 1

Lo estaba escribiendo mal entonces solo me devolvía una tabla.

Pero gracias porque me has ayudado bastante en otras consultas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas