[ Foro de BASIC ]

Ayuda con un error que no se como resolverlo

01-Oct-2019 01:36
Felipe Hdez Vasquez
1 Respuestas

Estoy haciendo un pequeño programa en Visual Basic con una base de datos  de SQLite , es para que mi hijo aprenda a Leer palabras pero al tratar de hacer que pase de una palabra a otra aleatoriamente me manda este error y ya no encuentro el problema, espero alguien me pueda ayudar y de antemano les agradesco su ayuda.
el error es este:
System.NullReferenceException: 'Referencia a objeto no establecida como instancia de un objeto.'

y el código del programa es este:


Imports System.Data.SQLite
Imports System.Data.SqlClient
Imports System.Data

Public Class Form3

   Private cn As SqlConnection
   Private ds As DataSet
   Private da As SqlDataAdapter
   Private iposicion As Integer

   Dim comando As SQLite.SQLiteCommand
   Dim adaptador As New SQLiteDataAdapter
   Dim datos As DataSet

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       'Cerramos el Formulario actual
       Me.Close()

   End Sub

   Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       'Conectamos con la base de datos
       Dim cmd As New SQLiteCommand
       Dim myconnection As New SQLiteConnection("Data Source=C:\PALABRAS\BasePalabras.s3db;Version=3")
       myconnection.Open()
       cmd.Connection = myconnection

       'Se consulta la tabla con un orden aleatorio de los registros
       Dim consulta As String
       consulta = ("SELECT * FROM Palabras ORDER BY NEWID()")

       'Se consulta la tabla Sin orden aleatorio de los registros
       'Me.da = New SqlDataAdapter("select * from PALABRASNEW", cn)

       Dim consulta1 As SQLiteCommandBuilder = New SQLiteCommandBuilder
       Me.ds = New DataSet
       cn.Open()
       Me.da.Fill(ds, "palabra")
       cn.Close()   <----------------------  AQUI ME MANDA EL ERROR ---------
       Me.iposicion = 0
       Me.cargardatos()


   End Sub

   Private Sub cargardatos()
       Dim drow As DataRow
       drow = ds.Tables("palabra").Rows(iposicion)
       TxtBox1.Text = drow("palabra")

       Me.Label2.Text = "Palabras Leidas  " & Me.iposicion + 1 & "  de  " & Me.ds.Tables("palabra").Rows.Count

   End Sub

   Private Sub btnanterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnanterior.Click
       If Me.iposicion = 0 Then
           MessageBox.Show("Primer  registro")
       Else
           Me.iposicion -= 1
           Me.cargardatos()
       End If


   End Sub


   Private Sub btnsiguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsiguiente.Click
       If Me.iposicion = Me.ds.Tables("palabra").Rows.Count - 1 Then
           MessageBox.Show("ultimo registro")
       Else
           Me.iposicion += 1
           Me.cargardatos()
       End If


   End Sub

   Private Sub TxtBox1_TextChanged(sender As Object, e As EventArgs) Handles TxtBox1.TextChanged

   End Sub

End Class


muchas gracias y espero contar con su ayuda
que tengan buena tarde.


01-Oct-2019 17:00
Felipe Hdez Vasquez

Una disculpa, me equivoque al poner donde me manda el error, el error lo manda en el código  cn.Open()


'Conectamos con la base de datos
      Dim cmd As New SQLiteCommand
      Dim myconnection As New SQLiteConnection("Data Source=C:\PALABRAS\BasePalabras.s3db;Version=3")
      myconnection.Open()
      cmd.Connection = myconnection

      'Se consulta la tabla con un orden aleatorio de los registros
      Dim consulta As String
      consulta = ("SELECT * FROM Palabras ORDER BY NEWID()")

      'Se consulta la tabla Sin orden aleatorio de los registros
      'Me.da = New SqlDataAdapter("select * from PALABRASNEW", cn)

      Dim consulta1 As SQLiteCommandBuilder = New SQLiteCommandBuilder
      Me.ds = New DataSet
      cn.Open()      <----------------------  AQUI ME MANDA EL ERROR ---------
      Me.da.Fill(ds, "palabra")
      cn.Close()  
      Me.iposicion = 0
      Me.cargardatos()


  End Sub


Muchas gracias Ojala y alguien pueda ayudarme.
Buen día a todos






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)