Es imposible ejecutar el proyecto para ver qué error marca, faltan ficheros y arroja un montón de errores (para en el número 103)...
Es muy probable que hayas declarado en algún método dos veces un campo del mismo nombre.
Te voy algunos consejos, que deberías aplicar d eforma inmediata a tu
sopa de espaguetis digo código:
1 - No es buena idea llamar a un miembro con el mismo nombre que el tipo cual es, se presta a confusión, además, cualquier cambio al nombre podría aplicarse también al tipo de forma inadvertida.
Dim point = New Point(&H2C8, &H1F0)
Podrías llamarlo por ejemplo en español, y quedaría así:
Dim punto = New Point(&H2C8, &H1F0)
2 - Cuando creas una variable para establecerla una sola vez y aisgnarla una sola vez, te la puedes ahorrar. Esto, es una idiotez:
Dim point = New Point(&H2C8, &H1F0)
Me.TextBox5.Location = point
size = New Size(120, &H1D)
Me.TextBox5.Size = size
Puedes hacer directamente:
Me.TextBox5.Location = New Point(&H2C8, &H1F0)
Me.TextBox5.Size = New Size(120, &H1D)
3 - el código está lleno de referencias a "Me". cuando un objeto se llama cada vez, se lo busca en la tabla para obtener su dirección y con ella prosigue la búsqueda para el miembro interno.... entonces esto que sigue... es perder tiempo... es como si 5 personas en una mesa te piden tabaco una detrás de otra, y tú cada vez, sacas la cajetilla de tu tabaco, ofreces y la vuelves a guardar, vuelves a sacarla, ofreces y la vuelves a guardar... acaso no es mejor sacarla, ofrecer a todos y ya entonces la guardas????
Me.TextBox4.Location = point
Me.TextBox4.MaxLength = 5
Me.TextBox4.Name = "TextBox4"
size = New Size(&H48, &H1D)
Me.TextBox4.Size = size
Me.TextBox4.TabIndex = &H19
Me.TextBox4.Text = ""
Me.TextBox5.Enabled = False
point = New Point(&H2C8, &H1F0)
Me.TextBox5.Location = point
Me.TextBox5.Name = "TextBox5"
size = New Size(120, &H1D)
Me.TextBox5.Size = size
Me.TextBox5.TabIndex = &H1A
Me.TextBox5.Text = "TextBox5"
Me.TextBox6.Enabled = False
Es mejor hacelro así:
With Me
.TextBox4.Location = point
.TextBox4.MaxLength = 5
.TextBox4.Name = "TextBox4"
size = New Size(&H48, &H1D)
.TextBox4.Size = size
.TextBox4.TabIndex = &H19
.TextBox4.Text = ""
.TextBox5.Enabled = False
point = New Point(&H2C8, &H1F0)
.TextBox5.Location = point
.TextBox5.Name = "TextBox5"
size = New Size(120, &H1D)
.TextBox5.Size = size
.TextBox5.TabIndex = &H1A
.TextBox5.Text = "TextBox5"
.TextBox6.Enabled = False
End With
4 - No conoces el bloque de condiciones "select case"?. Esto queda horrooroso y es ineficiente...
If (Me.OPCB = 1) Then
str = "Select COD,NOMBRE,ORD,LIM_TRIPLE,LIM_TERMI,PRE_TRIPLE,PRE_TERMI,CIERRE,ACTIVA,APRO,PUNTA,COLA from loteria WHERE TIPO='L' order by ord"
Me.ListBox4.Items.Add("Cod Nombre Orden Lim/Triple Lim/Term P/Triple P/Term H/Cierre Activado Punta Cola")
End If
If (Me.OPCB = 4) Then
str = "Select COD,NOMBRE,ORD,LIM_TRI_ZOD,LIM_TER_ZOD,PRE_TR_ZOD,PRE_TE_ZOD,CIERRE,ACTIVA,APRO FROM LOTERIA WHERE TIPO='Z' order by ord"
Me.ListBox4.Items.Add("Cod Nombre Orden Lim/Tr/Zod Lim/Te/Zod P/Tr/Zod P/Te/Zod H/Cierre Activado")
End If
If (Me.OPCB = 3) Then
str = "Select COD,NOMBRE,ORD,LIM_COMBO,LIM_ANIMAL,PRE_COMBO,PRE_ANIMAL,CIERRE,ACTIVA,APRO from loteria WHERE TIPO='A' order by ord"
Me.ListBox4.Items.Add("Cod Nombre Orden Lim/Animal Lim/Combo Pre/Anim Pre/Term H/Cierre Activado")
End If
If (Me.OPCB = 5) Then
str = "Select COD,NOMBRE FROM animal ORDER BY COD"
Me.ListBox4.Items.Add("Cod Nombre ")
End If
If (Me.OPCB = 6) Then
Si la ejecución de una condición no modifica el objeto que se sigue mirando, el código anterior es ineficiente, porque solo puede ser un valor entre ellos (o ninguno), pero tú obligas a compararse en todos los casos iempre incluso cuando ya se haya encontrado. El bloque Select Case, evalúa la condición y 'SALTA' al punto del código donde corresponde y no evalúa para ninguna otra condición....
Select case Me.OPCB
case 1
str = "Select COD,NOMBRE,ORD,LIM_TRIPLE,LIM_TERMI,PRE_TRIPLE,PRE_TERMI,CIERRE,ACTIVA,APRO,PUNTA,COLA from loteria WHERE TIPO='L' order by ord"
Me.ListBox4.Items.Add("Cod Nombre Orden Lim/Triple Lim/Term P/Triple P/Term H/Cierre Activado Punta Cola")
case 4
str = "Select COD,NOMBRE,ORD,LIM_TRI_ZOD,LIM_TER_ZOD,PRE_TR_ZOD,PRE_TE_ZOD,CIERRE,ACTIVA,APRO FROM LOTERIA WHERE TIPO='Z' order by ord"
Me.ListBox4.Items.Add("Cod Nombre Orden Lim/Tr/Zod Lim/Te/Zod P/Tr/Zod P/Te/Zod H/Cierre Activado")
case 3
str = "Select COD,NOMBRE,ORD,LIM_COMBO,LIM_ANIMAL,PRE_COMBO,PRE_ANIMAL,CIERRE,ACTIVA,APRO from loteria WHERE TIPO='A' order by ord"
Me.ListBox4.Items.Add("Cod Nombre Orden Lim/Animal Lim/Combo Pre/Anim Pre/Term H/Cierre Activado")
case 5
str = "Select COD,NOMBRE FROM animal ORDER BY COD"
Me.ListBox4.Items.Add("Cod Nombre ")
case 6
'.....
case else
'....
End Select
5 - No hace falta que pongas una línea por cada declaración... especialmente si no le vas a asignar ningún valor de entrada.... Así este código:
Dim str2 As String
Dim str3 As String
Dim str4 As String
Dim str5 As String
Dim str6 As String
Dim str7 As String
Dim str8 As String
Dim str9 As String
Dim str10 As String
Dim str11 As String
Se vería más claro así:
Dim str2 As String, str3 As String, str4 As String, str5 As String, str6 As String
Dim str7 As String, str8 As String, str9 As String, str10 As String, str11 As String
6 - Cuando tienes varias asignaciones o código repetitivo, es preferible usar un bucle. es más limpio y claro el código... esto es cansino:
str2 = reader.Item(0).ToString
str3 = reader.Item(1).ToString
str4 = reader.Item(2).ToString
str5 = reader.Item(3).ToString
str6 = reader.Item(4).ToString
str7 = reader.Item(5).ToString
str8 = reader.Item(6).ToString
str9 = reader.Item(7).ToString
str10 = reader.Item(8).ToString
Me.ListBox4.Items.Add(String.Concat(New String() { str2, ChrW(9), str3, ChrW(9), str4, ChrW(9), str5, ChrW(9), str6, ChrW(9), str7, ChrW(9), str8, ChrW(9), str9, ChrW(9), str10 }))
Es mucho mejor declarar un array de string, y asignarlas en un bucle, finalmente hay dos opciones para añadirlos al listbox...
Dim str2(0 to 8) as string
Dim k as integer
For k=0 to 8
Str2(k) = reader.Item(k).ToString & chrW(9) ' <----- Notar
Next
ListBox4.Items.AddRange(str2) '¡ puedes usar AddRange...
Dim str2(0 to 8) as string
Dim k as integer
For k=0 to 8
Str2(k) = reader.Item(k).ToString
Next
ListBox4.Items.Add(Strings.Join(str2,ChrW(9)) ' <---- se usa Join, para concatenar el array de strings, y el separador sigue siendo el mismo. El tabulador...
7 - Tienes bloques de código a patadas como el siguiente, que en realidad se pueden resolver en un bucle, y en cualquier caso mucho más simplificado que esta madeja de hilos dejada al gato para su entretenimiento... tiene
multitud de sangre derramándose...
If (Strings.Len(str3) = 4) Then
If (StringType.StrCmp(Strings.Mid(str3, 1, 1), ".", False) = 0) Then
str2 = String.Concat(New String() {Strings.Mid(Strings.Trim(str3), 2, 1), Strings.Mid(Strings.Trim(str3), 3, 1), ".", Strings.Mid(Strings.Trim(str3), 4, 1), "0"})
Return obj2
End If
If (StringType.StrCmp(Strings.Mid(str3, 2, 1), ".", False) = 0) Then
str2 = ("0" & Strings.Mid(Strings.Trim(str3), 1, 1) & "." & Strings.Mid(Strings.Trim(str3), 3, 2))
Return obj2
End If
If (StringType.StrCmp(Strings.Mid(str3, 3, 1), ".", False) = 0) Then
str2 = (Strings.Mid(Strings.Trim(str3), 1, 2) & "." & Strings.Mid(Strings.Trim(str3), 4, 1) & "0")
Return obj2
End If
If (StringType.StrCmp(Strings.Mid(str3, 4, 1), ".", False) = 0) Then
str2 = (Strings.Mid(Strings.Trim(str3), 1, 3) & "." & Strings.Mid(Strings.Trim(str3), 5, 1) & "0")
Return obj2
End If
If (StringType.StrCmp(Strings.Mid(str3, 5, 1), ".", False) = 0) Then
str2 = (Strings.Mid(Strings.Trim(str3), 1, 3) & "." & Strings.Mid(Strings.Trim(str3), 5, 2))
Return obj2
End If
str2 = (Strings.Mid(Strings.Trim(str3), 1, 2) & "." & Strings.Mid(Strings.Trim(str3), 3, 2))
Return obj2
End If
Primero como str3 es una cadena de texto, puedes directamente escribir
if (str3.Length = 6) then
en vez de
If (Strings.Len(str3) = 6) Then
Ya que lenght es un método del tipo String, igualmente poseee el método Trim, TrimEnd, TrimStart, y aunque no tieme Mid, es equivalente a Char.
Así este código:
Strings.Mid(str3, 5, 1)
Puede rescribirse mejor así:
Str3.Char(5)
Si en vez de recibir un solo carácter es preciso recioger varios, entonces en vez de Char, se usaría el método Substring
Así un código como este:
Strings.Mid(str3, 5, 4)
Puede rescribirse mejor así:
Str3.SubString(5,4)
Dado que cada vez estás haciendo Trim, ahorrarías código si durante la asignación de la cadena ya retiras sus espacios en blanco y así no es preciso escribirlo en cada ocasión... se hace una sola vez al comienzo y listo.
str3 = "...loque sea la asignación".Trim
Mirando por encima ese bloque de código, simplemente estás tratando de ver si hay un punto, y si no lo hay en algunos caso añades más ceros, en otros dado que el punto no tiene mayúsculas ni minúsculas, también te puedes evitar la comparación de esa forma. Como te he dicho si necesitas buscar si está en alguna posición, es mejor hacer un bucle.
dim k as integer
dim strx() as char = str3.ToChararray
For k=0 to strx.Lenght -1
if strx(k) = "." then
' .... lo que tengas que hacer.
' Si ya no se requiere seguir buscando Exit for , ó Return Obj2
End if
Next
Ahora bien, si debes hacer cosas distintas según donde esté o debiera estar el punto, entonces lo mejor es buscar directamente si existe el punto en la cadena y obtener su posición.
Dim k As Integer = str3.IndexOf(".")
Si k es -1 implica que no aparece en la cadena, entonces no es necesario buscar una a una en cada posición. Y si debe aparecer en varias posiciones y hacer algo si no aparece en una en concreto, entonces lo metes en un bucle:
Dim j as integer
Dim k As Integer = str3.IndexOf(".")
If (k>-1)then
k+=1
j=(k +1)
do While str3.IndexOf(".",k)
If (k > j) then
' no aparece en la posición j... hacer lo que proceda hacer.
Else
k+=1
j = k
End if
Loop
Else
' no aparece en la posición 0... hacer lo que proceda hacer.
End if
8 - tampoco tiene sentido que la cadena str3, no cambia de tamaño, esté continuamente poniendo código para ver su tamaño, eso se hace de una sola vez:
n = Str3.Length
Si (n = 1) luego....
y ya no hay que estar preguntando cada vez por el tamaño de la cadena.
9 - Los comentarios brillan por su ausencia... excelente ayuda para que te ayuden....
...en fín podría seguir enumerando "problemas con el codigo", pero cuando son tantos, el problema no es el código, si no el programador... te falta mucha base. si ni siquiera conoces los típos básicos como el String...para que´seguir con cosas más complejas.