Visual Basic.NET - problema datareader y funcion

 
Vista:
sin imagen de perfil
Val: 18
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

problema datareader y funcion

Publicado por Pablo (7 intervenciones) el 03/06/2019 03:48:20
Buenas , soy nuevo en el tema de vb.net y estoy aprendiendo a los tumbos , estoy haciendo un programa de tipo pos , y me surgieron 2 dudas , la primera es tengo un textbox donde yo ingreso un codigo de barra y este busca un articulo en la base de datos sql , eso funciona perfecto salvo cuando abro dicho form y sin ingresar ningun dato hago click o paso a cualquier textbox me genera un nullexception , si le doy un valor a ese textbox ovbiamente no recibo la excepcion , pero me gustaria saber si hay otra manera de evitar esto , y la segunda consulta serie sobre el mismo textbox me gustaria tener una funcion que asigne un valor a otro textbox , osea yo sobre el textbox que leo el codigo de barra si pongo 3*77774737473 me asigne 3 al textbox txtcant.text ignore el * y busque el articulo 77774737473 en la base como ya esta haciendolo les dejo esa parte del codigo espero que no sea una molestia mi consulta y recuerden que estoy empezando en esto de la programacion.

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
28
29
30
31
32
Private Sub txtcod_Leave(sender As Object, e As EventArgs) Handles txtcod.Leave
    If txtcod.Text <> "" Then
        consultarplu(Me.txtcod.Text)
        If dr.Read Then
            Me.txtnombre.Text = dr(0).ToString
            Me.txtprecio.Text = dr(6).ToString
 
            Dim suma As Double
 
            suma = Val(txtcant.Text) * Val(txtprecio.Text)
            txtsub.Text = Val(suma)
            DataGridView2.Rows.Add(txtcod.Text, txtnombre.Text, txtcant.Text, suma)
 
            Dim linea As DataGridViewRow
            Dim valor As Double
 
            For Each linea In DataGridView2.Rows
                valor = valor + linea.Cells(3).Value
 
            Next
 
            txttotal.Text = "$ " & FormatNumber(valor, 2)
        Else
            MsgBox("Articulo no encontrado")
            txtcant.Focus()
 
        End If
    Else
 
    End If
    dr.Close()
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

problema datareader y funcion

Publicado por Giancarlo (488 intervenciones) el 03/06/2019 04:55:18
para elimnar el caracter puedes usar
1
texto.replace('*','')

en lugar de usar leave, puedes cambiarlo por lostfocus
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
Val: 18
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

problema datareader y funcion

Publicado por Pablo (7 intervenciones) el 03/06/2019 04:58:47
gracias por la rapida respuesta , con el replace elimino el * perfecto , pero despues como hago que el numero que este adelante pase a txtcant y que el codigo ejecute el dataread?
saludos
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 Javier
Val: 150
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

problema datareader y funcion

Publicado por Javier (77 intervenciones) el 03/06/2019 23:58:21
Una duda, al momento de leer el codigo de barras lo haces con un escáner???

Si es así, podrías utilizar el evento KEYDOWN o KEYPRESS del textbox (El que mejor se adapte a tus necesidades), es decir, hay que recordar que los escáner ya vienen programados y si no, se pueden programar, para que al final de la lectura envíen un "ENTER" por lo que puedes tomar ese "Enter" y en cualquiera de los eventos que te mencione podrías llamar a tus métodos de búsqueda, con eso evitas utilizar el evento "LEAVE" y evitar los errores que mencionas.

Y si el codigo lo tecleas pues los mismos métodos te sirven ya que al final solo darías ENTER manualmente.

Con lo otro que mencionas, el '*', podrías hacer un split del string y con eso obtendrías el primer dígito, que a como entiendo es la cantidad y la segunda cadena que es el SKU, ya con eso podrías llamar los métodos que requieras.
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
Val: 18
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

problema datareader y funcion

Publicado por Pablo (7 intervenciones) el 04/06/2019 05:05:59
mil gracias por las respuestas , voy a tomar sus consejos
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