Visual Basic.NET - error de objeto

 
Vista:
sin imagen de perfil

error de objeto

Publicado por anonymous (99 intervenciones) el 03/02/2017 20:05:39
quien me ayuda a encontrar el error:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public conexion As New OleDb.OleDbConnection
Public adaptador As New OleDb.OleDbCommand
Public Ds As New DataSet
Private iposicion As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    conexion.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\subdirector\est22\est22.accdb;")
    conexion.Open()
    Dim cadenasql As String = ("SELECT * FROM primero WHERE grado = '" + ComboBox1.Text + "' ORDER BY nombre ASC")
    Dim adaptador As New OleDbDataAdapter(cadenasql, conexion)
    ''' Dim Ds As New DataSet
    adaptador.Fill(Ds)
    conexion.Close()
    Me.iposicion = 0
    Me.cargardatos()
End Sub
Private Sub cargardatos()
    Dim drow As DataRow
    drow = Me.Ds.Tables("primero").Rows(Me.iposicion)  '''' aqui señala error de referencia a objeto no establedida como instancia de un objeto.
    Me.txtcodalu.Text = drow("grado")
    Me.txtnomalu.Text = drow("nombre")
    Me.txtapelalu.Text = drow("esp1")
    Me.txtedadalu.Text = drow("esp2")
    Me.lblregistro.Text = "Registro" & Me.iposicion + 1 & " de " & Me.ds.Tables("primero").Rows.Count
 
End Sub

he checado todo y no doy con la correcion adecuada, ojala alguno de ustedes amigos expertos me ayude... gracias!
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
sin imagen de perfil

error de objeto

Publicado por arbol (166 intervenciones) el 03/02/2017 21:36:59
saludos instala anydesk y enviame el id para guiarte en tu problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-4
Comentar
Imágen de perfil de Edward
Val: 392
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

error de objeto

Publicado por Edward (146 intervenciones) el 03/02/2017 22:52:16
Buen día para todos,

Fco. Javier Medrano Salez, Cordial saludo, por lo que puedo observar cuando llenas el DataSet no le indicas el nombre de la tabla.

1
2
':::Llenando el DataSet
adaptador.Fill(Ds)


En el caso que quieras darle nombre te debe quedar.

1
adaptador.Fill(Ds, "primero")

En el caso que no quieras darle nombre te quedaría por el número de tablas, como seria una sola seria la tabla 0, en el llamado de la tabla así.

1
Me.Ds.Tables(0).Rows(Me.iposicion)


Si solo usas una tabla te recomiendo que uses el objeto DataTable en vez del DataSet, ten presente que el DataSet se usa cuando trabajas con varias tablas al tiempo, Quedando algo asi.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Public conexion As New OleDb.OleDbConnection
Public adaptador As New OleDb.OleDbCommand
':::DataTable
Dim Dt As New DataTable
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
conexion.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\subdirector\est22\est22.accdb;")
conexion.Open()
Dim cadenasql As String = ("SELECT * FROM primero WHERE grado = '" + ComboBox1.Text + "' ORDER BY nombre ASC")
Dim adaptador As New OleDbDataAdapter(cadenasql, conexion)
 
':::Llenamos el DataTable
adaptador.Fill(Dt)
conexion.Close()
Me.cargardatos()
End Sub
Private Sub cargardatos()
Dim drow As DataRow
 
':::La variable iposicion no es necesaria debido a que no estas haciendo ningun recorrido, solo indica el numero de la fila
drow = Me.Dt.Rows(0)
Me.txtcodalu.Text = drow("grado")
Me.txtnomalu.Text = drow("nombre")
Me.txtapelalu.Text = drow("esp1")
Me.txtedadalu.Text = drow("esp2")
Me.lblregistro.Text = "Registro" & Me.iposicion + 1 & " de " & Me.ds.Tables("primero").Rows.Count
 
End Sub

En teoría no debe tener problemas, me disculpo si se presenta alguna falla, debido a que no lo probé, te estoy respondiendo desde el Cel.


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

error de objeto

Publicado por anonymous (99 intervenciones) el 07/02/2017 20:41:05
Perdón Edward, la variable iposicion la ocupo para guardar la posicion de la fila dentro de la tabla porque luego recorreo los registros con botones "siguiente", "anterior, "ultimo" y "primero", entonces para pasar al siguiente registro tengo un boton y este codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub btnsiguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsiguiente.Click
        If Me.iposicion = Me.ds.Tables("alumno").Rows.Count - 1 Then   '''aqui necesito cambiar el dataset por el datatablepero no le hayo
            MessageBox.Show("ultimo registro")
        Else
            Me.iposicion += 1    'incremento la variable para pasar al siguiente registro y cargar los datos
            Me.cargardatos()
        End If
End Sub
 
'''esta es la parte de cargar los datos que ya funciona bien:
 
Private Sub cargardatos()
        Dim drow As DataRow
        drow = Me.Dt.Rows(0)
        Me.txtcodalu.Text = drow("grado")
        Me.txtnomalu.Text = drow("nombre")
        Me.txtapelalu.Text = drow("esp1")
        Me.txtedadalu.Text = drow("esp2")
        Me.lblregistro.Text = "Registro" & Me.iposicion + 1 & " de " & Me.Dt.Rows.Count
End Sub

gracias por tu aporte amigo!!!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edward
Val: 392
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

error de objeto

Publicado por Edward (146 intervenciones) el 07/02/2017 20:45:44
Buen día para todos,

Fco. Javier Medrano Salez, me alegra haber podido ayudarte.


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
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
sin imagen de perfil

error de objeto

Publicado por anonymous (99 intervenciones) el 08/02/2017 17:32:05
Buenos dias, y ahora esto Edward:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    Select Case ComboBox1.Text
        Case Is = "1° A" Or "1° B" Or "1° C" Or "1° D"     ''''ERROR La conversión de la cadena "1° A" en el tipo 'Long' no es válida
            Dim cadenasql As String = ("SELECT * FROM primero WHERE grado = '" + ComboBox1.Text + "' ORDER BY nombre ASC")
            Dim adaptador As New OleDbDataAdapter(cadenasql, conexion)
            adaptador.Fill(Dt)
        Case Is = "2° A" Or "2° B" Or "2° C" Or "2° D"
            Dim cadenasql As String = ("SELECT * FROM segundo WHERE grado = '" + ComboBox1.Text + "' ORDER BY nombre ASC")
            Dim adaptador As New OleDbDataAdapter(cadenasql, conexion)
            adaptador.Fill(Dt)
        Case Is = "3° A" Or "3° B" Or "3° C" Or "3° D"
            Dim cadenasql As String = ("SELECT * FROM tercero WHERE grado = '" + ComboBox1.Text + "' ORDER BY nombre ASC")
            Dim adaptador As New OleDbDataAdapter(cadenasql, conexion)
            adaptador.Fill(Dt)
    End Select
    'Dim adaptador As New OleDbDataAdapter(cadenasql, conexion)
    ' Dim Ds As New DataSet
    'adaptador.Fill(Dt)
    conexion.Close()
    Me.iposicion = 0
    Me.cargardatos()
End Sub

no encuentro como convertir los datos long en string en un select case, alguna ayuda?
GRACIAS!
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
sin imagen de perfil

error de objeto

Publicado por anonymous (99 intervenciones) el 08/02/2017 20:15:49
ya resolvi la duda anterior!!!
en lugar de "or" en el case, se separan los parámetros con una coma (,) de esta forma

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Select Case ComboBox1.Text
    Case "1° A", "1° B", "1° C", "1° D"
        Dim cadenasql As String = ("SELECT * FROM primero WHERE grado = '" + ComboBox1.Text + "' ORDER BY nombre ASC")
        Dim adaptador As New OleDbDataAdapter(cadenasql, conexion)
        adaptador.Fill(Dt)
    Case Is = "2° A", "2° B", "2° C", "2° D"
        Dim cadenasql As String = ("SELECT * FROM segundo WHERE grado = '" + ComboBox1.Text + "' ORDER BY nombre ASC")
        Dim adaptador As New OleDbDataAdapter(cadenasql, conexion)
        adaptador.Fill(Dt)
    Case Is = "3° A", "3° B", "3° C", "3° D"
        Dim cadenasql As String = ("SELECT * FROM tercero WHERE grado = '" + ComboBox1.Text + "' ORDER BY nombre ASC")
        Dim adaptador As New OleDbDataAdapter(cadenasql, conexion)
        adaptador.Fill(Dt)
End Select

Gracias!!! saludos a todos.
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