[ Foro de BASIC ]
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.
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.)