Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Consulta no toma el primer valor SQL .NET

Estas en el tema de Consulta no toma el primer valor SQL .NET en el foro de .NET en Foros del Web. Buenas noches amigos; Quisiera por favor me ayudaran en el siguiente problema: Tengo un ListView y como es lógico declaro columnas y en el momento ...
  #1 (permalink)  
Antiguo 28/01/2013, 21:08
 
Fecha de Ingreso: mayo-2011
Mensajes: 47
Antigüedad: 8 años, 5 meses
Puntos: 1
Pregunta Consulta no toma el primer valor SQL .NET

Buenas noches amigos;

Quisiera por favor me ayudaran en el siguiente problema:

Tengo un ListView y como es lógico declaro columnas y en el momento de llenar los datos hago una consulta de la siguiente manera:

Código .NET:
Ver original
  1. Try
  2.             sql = "SELECT * FROM registro_variables;"
  3.  
  4.             Dim comandoSQL As New OdbcCommand(sql, conexionBD)
  5.             Dim resultadoSQL As OdbcDataReader = comandoSQL.ExecuteReader()

En el caso de haber resultados la consultado pregunta por ellos y comienza a llenar el listview de la siguiente manera:

Código .NET:
Ver original
  1. If (resultadoSQL.Read) Then
  2.                 Dim i As Integer
  3.                 Dim aux As Integer
  4.                 i = 0
  5.  
  6.                 While resultadoSQL.Read
  7.                     ListViewVariables.Items.Add(resultadoSQL(0))
  8.                     For aux = 1 To resultadoSQL.FieldCount - 1
  9.                         ListViewVariables.Items(i).SubItems.Add(resultadoSQL(aux))
  10.                         MsgBox(resultadoSQL(aux))
  11.                     Next aux
  12.                     i = i + 1
  13.                 End While
  14.             Else
  15.                 MsgBox("no se encontraron resultados")
  16.             End If

y Finaliza con la captura en caso de error:

Código .NET:
Ver original
  1. Catch ex As OdbcException
  2.  
  3.             'SE MUESTRA ERROR DE CONEXION CON LA BASE DE DATOS
  4.             MsgBox(ex.Message)
  5.  
  6.         End Try

En el momento de mostrar la consulta solo me muestra a partir del segundo ítem de la consulta, me explico los ítems dentro de la tabla están numerados con un index autoincremental y al mostrar los resultados se muestra desde el index=2 en lugar de mostrar desde el index=1.

He intentado mostrando los resultados con un msgbox y efectivamente la consulta no toma el primer resultado, no se el porque de esto, por favor necesito su colaboración.

el código completo de la función seria así:

Código .NET:
Ver original
  1. 'LIBRERIAS DE IMPORTACION DE ODBC PARA CONEXION DE BASE DE DATOS
  2. Imports System.Data
  3. Imports System.Data.Odbc
  4.  
  5. Public Class Form08_ConfigPistas
  6.  
  7.     Private Sub Form08_ConfigPistas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  8.         'FORMATO DEL LISTVIEW
  9.         ListViewVariables.Clear()
  10.         ListViewVariables.View = View.Details
  11.         ListViewVariables.Columns.Add("Index", 50, HorizontalAlignment.Right)
  12.         ListViewVariables.Columns.Add("Var PLC", 120, HorizontalAlignment.Left)
  13.         ListViewVariables.Columns.Add("Var APP", 120, HorizontalAlignment.Left)
  14.         ListViewVariables.Columns.Add("Tipo", 100, HorizontalAlignment.Left)
  15.         ListViewVariables.Columns.Add("Comentario", 200, HorizontalAlignment.Left)
  16.  
  17.         Dim sql As String
  18.  
  19.         Try
  20.  
  21.             'SE BUSCA AL USUARIO EN EL SISTEMA
  22.             sql = "SELECT * FROM registro_variables;"
  23.  
  24.             Dim comandoSQL As New OdbcCommand(sql, conexionBD)
  25.             Dim resultadoSQL As OdbcDataReader = comandoSQL.ExecuteReader()
  26.  
  27.             If (resultadoSQL.Read) Then
  28.                 Dim i As Integer
  29.                 Dim aux As Integer
  30.                 i = 0
  31.  
  32.                 While resultadoSQL.Read
  33.                     ListViewVariables.Items.Add(resultadoSQL(0))
  34.                     For aux = 1 To resultadoSQL.FieldCount - 1
  35.                         ListViewVariables.Items(i).SubItems.Add(resultadoSQL(aux))
  36.                         MsgBox(resultadoSQL(aux))
  37.                     Next aux
  38.                     i = i + 1
  39.                 End While
  40.             Else
  41.                 MsgBox("no se encontraron resultados")
  42.             End If
  43.  
  44.         Catch ex As OdbcException
  45.  
  46.             'SE MUESTRA ERROR DE CONEXION CON LA BASE DE DATOS
  47.             MsgBox(ex.Message)
  48.  
  49.         End Try
  50.     End Sub
  51. End Class
  #2 (permalink)  
Antiguo 29/01/2013, 07:14
 
Fecha de Ingreso: febrero-2008
Mensajes: 69
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Consulta no toma el primer valor SQL .NET

Creo que la variable aux la deberías inicializar a 0 y no a 1
__________________
Aprendiendo a programar

Agradezco comentarios ;)
  #3 (permalink)  
Antiguo 29/01/2013, 18:03
 
Fecha de Ingreso: mayo-2011
Mensajes: 47
Antigüedad: 8 años, 5 meses
Puntos: 1
Respuesta: Consulta no toma el primer valor SQL .NET

La variable aux toma el valor de 1 ya que recorre el resultado del registro según los campos, de esta forma el primer elemento o sea el "0" (Cero) lo tomo para inicializar el ítem, y el for recorre el resto del registro añadiéndolos como subítem, por eso inicia en uno y no en cero.

Pero gracias por la respuesta.
  #4 (permalink)  
Antiguo 30/01/2013, 06:25
 
Fecha de Ingreso: febrero-2008
Mensajes: 69
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Consulta no toma el primer valor SQL .NET

Entonces es porque cada vez que se ejecuta la instruccion resultadoSQL.Read lee

Al ejecutarla primero en el if y luego en el while, te estas saltando el primer registro
__________________
Aprendiendo a programar

Agradezco comentarios ;)
  #5 (permalink)  
Antiguo 30/01/2013, 06:28
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.329
Antigüedad: 11 años, 9 meses
Puntos: 606
Respuesta: Consulta no toma el primer valor SQL .NET

Cita:
Iniciado por Altear Ver Mensaje
Entonces es porque cada vez que se ejecuta la instruccion resultadoSQL.Read lee

Al ejecutarla primero en el if y luego en el while, te estas saltando el primer registro
Efectivamente, cuando se ejecuta el Read se comprueba si hay registros y, si los hay, carga uno. Es por ello que la comprovación con Read se recomienda ponerla en un While
__________________
Aviso: No se resuelven dudas por MP!
  #6 (permalink)  
Antiguo 08/02/2013, 08:14
 
Fecha de Ingreso: mayo-2011
Mensajes: 47
Antigüedad: 8 años, 5 meses
Puntos: 1
Respuesta: Consulta no toma el primer valor SQL .NET

Muchas gracias por las respuestas.

Edito:

Cambie el .read por .HasRows y asi determina si la consulta recibió algún parámetro con esto no toma como leído el primer resultado.

Última edición por khryztall; 08/02/2013 a las 08:31

Etiquetas: net, primer, sql, toma, valor
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 06:10.