Visual Basic.NET - problema con declaración de variable

   
Vista:

problema con declaración de variable

Publicado por Fco. Javier Medrano Salez (79 intervenciones) el 31/08/2017 17:33:49
Hola amigos: tengo un problema con la variable DataSet (ds), condiciono un label a tomar el grado u otro, en cada condición declaro la variable ds pero al salir de dicho condicionamiento y usar ds, me previene un error: variable no declarada, puede que esté inaccesible...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ElseIf Label6.Text = "2° A" Or Label6.Text = "2° B" Or Label6.Text = "2° C" Or Label6.Text = "2° D" Or Label6.Text = "3° A" Or Label6.Text = "3° B" Or Label6.Text = "3° C" Or Label6.Text = "3° D" Then
If Label6.Text = "2° A" Or Label6.Text = "2° B" Or Label6.Text = "2° C" Or Label6.Text = "2° D" Then
    Dim da As New OleDbDataAdapter("SELECT * FROM segundo WHERE nombre = '" + nom + "'", conexion)
    Dim ds As New DataSet
    da.Fill(ds)
ElseIf Label6.Text = "3° A" Or Label6.Text = "3° B" Or Label6.Text = "3° C" Or Label6.Text = "3° D" Then
    Dim da As New OleDbDataAdapter("SELECT * FROM tercero WHERE nombre = '" + nom + "'", conexion)
    Dim ds As New DataSet
    da.Fill(ds)
End If
Documento = MSWord.Documents.Open("C:\plantillas\Constancia_eval2y3.docx")
Dim nombre As String
For Each row As DataRow In ds.Tables(0).Rows   ''''aqui dice que necesito declarar la variable 
    nombre = row.Item("nombre").ToString()
    For x = 1 To 5
        If (Val(row.Item(asig2(0) & x))) = 0 Then
            If (Val(row.Item(asig2(0) & 1))) = 0 Then
                MsgBox("Aún no existen evaluaciones para el alumno(a).... CONSTANCIA CANCELADA")
                conexion.Close()
                Documento.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
                Exit Sub
            End If
            Exit For
        End If

alguien me da una ayudadita? 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

problema con declaración de variable

Publicado por Lucas Nahuel petruzzellalucas@hotmail.com (7 intervenciones) el 31/08/2017 22:26:27
Buenas tardes,

Varios puntos...

1) Debes buscar la forma de optimizar todos esos IF, tal vez un Select case o bien una un contains (ej: Label6.Text.Contains("1") te indicaría que seleccionó algun primero).

2)Optimiza tu BD veo que tienes una tabla por curso, y si se agregan nuevos cursos tendrás que hacer mas tablas, modificar el fuente para agregarlo. Te suguiero que incorpores el curso como atributo del alumno en una tabla. (ej: tabla alumnos , tabla alumnos_curso y tabla curso - alumno 1= "Lucas" alumno_curso 1 (Lucas) 1 (Matematica) curso: 1 = Matemática).

3)Para responder tu pregunta, simplemente saca el " Dim ds As New DataSet" afuera de los IF de tal forma que la variable se genere al iniciar el método y solamente se rellene dentro de cada bloque.

ej:
1
2
3
4
5
6
7
8
9
10
11
Dim ds As New DataSet
Dim sql as String = ""
 
if (1ro A,B,C).... Then
 sql = "SELECT * FROM primero WHERE nombre = '" + nom + "'"
Else if(2do A,B,C) Then
sql = "SELECT * FROM segundoWHERE nombre = '" + nom + "'"
End If
 
 Dim da As New OleDbDataAdapter(sql, conexion)
 da.Fill(ds)

y listo...

Saluda Atte.
Lucas Petruzzella
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

problema con declaración de variable

Publicado por Fco. Javier Medrano Salez (79 intervenciones) el 01/09/2017 00:36:01
Gracias Lucas, Buen amigo, corrijo y pongo en práctica tus sugerencias.
Saludos!
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
Revisar política de publicidad