Visual Basic.NET - Como capturar datos de un consulta en textbox

 
Vista:
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como capturar datos de un consulta en textbox

Publicado por Miguel (281 intervenciones) el 07/04/2021 19:51:50
Hola tengo un datagrid en el cual quiero hacer la suma de dos campo y pasar el resultado de cada uno de ellos a un Campo de texto. Pero la verdad es el pasar los valores a los campos de texto no tengo ni idea y en la web no encuentro un ejemplo que pase las operaciones a un texto.

Les pongo la consulta haber si alguien puede explicarme como hacerlo.

Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Function GetByCalculos(name As String) As Int16
    Dim Resul As Byte = 0
    Using Conn As New SqlConnection(Conexion.ConnectionString)
        Try
            Conn.Open()
            Dim sql = String.Empty
            sql = "Select FechaIngreso, SUM(Ingreso) as TotalIngreso, SUM(Gastos) as TotalGastos _
                   From EstadoBanco Where name like '@name + '%'
                   Order By FechaIngreso"
            Dim valor As Object = Conn.ExecuteScalar(Of Short)(sql)
            If valor = 0 Then
                Resul = 1
            Else
                valor += 1
                Resul = valor
            End If
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Using
    Return Resul
End Function
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como capturar datos de un consulta en textbox

Publicado por Phil Rob (1554 intervenciones) el 08/04/2021 17:31:39
Hola Miguel,

No peudes utilizar ExecuteScalar que existe para solamente un simple valor resultado. Con tu consulta, existe 3 valores : FechaIngreso, TotalIngreso y TotalGastos.

Debes utilizar un DataAdapter o un DataReader.
Aqui como hacer con un DataReader :

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Public Function GetByCalculos(name As String) As Int16
    Dim Resul As Byte = 0
    Using Conn As New SqlConnection(Conexion.ConnectionString)
        Try
            Conn.Open()
            Dim sql = String.Empty
            sql = "Select FechaIngreso, SUM(Ingreso) as TotalIngreso, SUM(Gastos) as TotalGastos _
                   From EstadoBanco Where name like '@name + '%'
                   Order By FechaIngreso"
 
  Dim MiCommando As New SqlCommand
        MiComando = Conn.CreateCommand()
        MiComando.CommandType = CommandType.Text
        MiComando.CommandText = sql
 
        Dim UnosDatos As SqlDbDataReader
        UnosDatos = MiComando.ExecuteReader()
 
If UnosDatos.HasRows Then
 
        Do While UnosDatos.Read
            UnosDatos.Item(0)  …  este es FechaIngreso
            UnosDatos.Item(1)  …  este es TotalIngreso  ==> puedes lo poner en un Textbox como esta : TextBox1.Text = UnosDatos.Item(1)
            UnosDatos.Item(2)  …  este es TotalGastos  ==> puedes lo poner en un Textbox como esta : TextBox2.Text = UnosDatos.Item(2)
        Loop
        UnosDatos.Close()
 
            Result = 1   ' Verificar el utilización de Result
Else
            Result = 0   ' Verificar el utilización de Result
End If
 
'            Dim valor As Object = Conn.ExecuteScalar(Of Short)(sql)
'            If valor = 0 Then
'                Resul = 1
'            Else
'                valor += 1
'                Resul = valor
'            End If
 
 
 
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Using
    Return Resul
End Function

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
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como capturar datos de un consulta en textbox

Publicado por Miguel (281 intervenciones) el 08/04/2021 17:41:20
Gracias Phil por contestarme pero no acabo de verlo claro pues yo tengo cunsultas como esta y me funciona bien.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Function GetMaxIdCliente() As Int16
    Dim Resul As Byte = 0
    Using Conn As New SqlConnection(Conexion.ConnectionString)
        Try
            Conn.Open()
            Dim sql = String.Empty
            sql = "Select MAX(IdCliente) From Clientes"
            Dim valor As Object = Conn.ExecuteScalar(Of Short)(sql)
            If valor = 0 Then
                Resul = 1
            Else
                valor += 1
                Resul = valor
            End If
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Using
    Return Resul
End Function

Quizás sea porque la tabla no existe ya que he echo una tabla virtual y que está soportada solo por la Entidades.

Voy a investigar un poco más haber si lo hago funcionar pues esta forma de programar requiere menos código que el sistema que tu me indicas. si consigo saber el porque del fallo te lo comunicaré y si no es así intentaré seguir tu método que hace tiempo que abandone.

Gracias y un saludo
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como capturar datos de un consulta en textbox

Publicado por Phil Rob (1554 intervenciones) el 08/04/2021 19:17:50
Si no existe la tabla ...
Pero, crees me, ExecuteScalar es para un solo resultado.
Por ejemplo :
Select COUNT(...)
Select MAX(....)
Select SUM( ...)

Tu consulta da 3 valores.

Buenas tardes ...
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
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como capturar datos de un consulta en textbox

Publicado por Miguel (281 intervenciones) el 09/04/2021 12:26:10
Si, en eso estoy de acuerdo contigo que solo vale para un solo operador pero después de haberlo colgado no me fije que estaban las dos sumas y al margen de eso el problema es que no funciona tampoco para uno solo y el único valor que persigo es la suma de ese campo en todos los registros que existan en la B.D. pues esta ya va filtrada por la comunidad correspondiente y la fecha solo se utiliza para la ordenación

De todas formas esto es algo que me sugirió un amigo para ver si funcionaba sin necesidad de tener una tabla y el problema es que a la hora de hacer la búsqueda si no tiene el "BindingSource.DataSource" no reconoce la B.D. que le indicas en la consulta y además he encontrado otro problema y es que el select que hago para generar el DataGridview solo carga el registro que se acaba de crear. Por lo tanto solo era una prueba ya que si funcionaba evitaba tiempos de acceso a la B.D. y las lecturas.

En fin muchas veces no me importa en perder unos días experimentando pues al final puede darse el caso que encuentres cosas nuevas.

Muchas gracias y un saludo.
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como capturar datos de un consulta en textbox

Publicado por Phil Rob (1554 intervenciones) el 09/04/2021 21:56:14
Muy bien....tienes razón en experimentar!
Buena fin de semana.
:D
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