Visual Basic.NET - Mostrar resultado del select

 
Vista:
sin imagen de perfil
Val: 46
Ha aumentado su posición en 45 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Mostrar resultado del select

Publicado por sori46 (16 intervenciones) el 07/02/2020 17:12:58
Buenas tardes,
Estoy intentando hacer una consulta contra una base de datos informix y estoy teniendo muchos problemas, principalmente porque no se hacer la conexión.
Tengo el select hecho y le paso con una variable un valor para el where pero no sé cómo mostrar el retorno.
adjunto el código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim connectString As String = "Host=miequipo;" &
"Server=miservidor_tcp;" &
"Service=99999;" &
"Protocol=onsoctcp;Database=pepitov2;" &
"Uid=hola;Pwd=hola;"
Dim conn As IfxConnection = New IfxConnection(connectString)
 
conn.Open()
 
Dim cmd As IfxCommand = conn.CreateCommand()
Dim trans As IfxTransaction = conn.BeginTransaction()
cmd.Transaction = trans
'codigo
Dim cod As Integer = TextBox1.Text
 
'Hacemos un select
cmd.CommandText = "SELECT marca.cmarca FROM informix.marca marca WHERE marca.cmarca =" & cod
 
cmd.ExecuteNonQuery()
 
cmd.ExecuteReader()
 
'Cerramos la conexion
conn.Close()

Muchas gracias de antemano.
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: 2.250
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Mostrar resultado del select

Publicado por Phil Rob (577 intervenciones) el 07/02/2020 18:36:16
Hola,

Adjunto un proyecto para testar.
Utilizo el DataAdapter porque es mas facil para cargar una DataTable.
En el codigo, miraras como poner los datos en DataGridView, ListBox, ComboBox y textBox.

Este es el codigo de conexion y lectura de la DB :

1
2
3
4
5
6
7
8
9
10
11
12
13
Consulta = "SELECT * FROM " & NombreTablaEnDB
 
Dim MiAdapter As New OleDbDataAdapter(Consulta, MiConexion)
MiAdapter.Fill(UnaTabla)
UnaTabla.TableName = NombreTablaEnDB
MiDatos.Tables.Add(UnaTabla)
DGVTest.DataSource = UnaTabla
 
MiAdapter.Dispose()
 
'DGVTest es un DataGridView
 
DGVTest.DataSource = UnaTabla  ' Para ejemplo, todos campos

Veo tu codigo, atencion : No es necasario Transaction y no hacer NonQuery para un SELECT.

Espero que este te ayudara ...
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: 46
Ha aumentado su posición en 45 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Mostrar resultado del select

Publicado por sori46 (16 intervenciones) el 08/02/2020 11:17:39
Buenos días,
Muchas gracias por tu comentario pero no puedo abrir el proyecto.

Con el código que adjunte ayer, que faltaría para sacar el resultado del select en un textbox o ponerlo en una variable?
En otros lenguajes poniendo un INTO y la variable guarda el valor.

1
2
3
4
SELECT dmarca
INTO resultado
FROM marca
WHERE cmarca = &dni


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

Mostrar resultado del select

Publicado por Phil Rob (577 intervenciones) el 08/02/2020 17:52:06
Hola,

Si debes tomar solamente UN valor, puedes utilizar tu código corregido como este (supongo que marca.cmarca es String):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
conn.Open()
 
Dim cmd As IfxCommand = conn.CreateCommand()
 
'*****************Dim trans As IfxTransaction = conn.BeginTransaction()
'*****************cmd.Transaction = trans
 
'codigo
 
Dim cod As Integer = TextBox1.Text
 
' *** Variable para el resultado
 
Dim Resultado As String
 
'Hacemos un select
 
cmd.CommandText = "SELECT marca.cmarca FROM informix.marca marca WHERE marca.cmarca =" & cod
 
Resultado = cmd.ExecuteScalar()
 
'Cerramos la conexion
 
conn.Close()

Todavía adjunto el proyecto para probar en RAR. Este es posible que no puedes lo ejecutar porque la cadena de conexión y la DB están en Access, pero puedes modificar el código para tu DB.

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

Mostrar resultado del select

Publicado por Phil Rob (577 intervenciones) el 08/02/2020 18:59:38
Atención, mi comentario "supongo que marca.cmarca es String" es sin valor !
Si recibes error sintaxis, dice me ...

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: 46
Ha aumentado su posición en 45 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Mostrar resultado del select

Publicado por sori46 (16 intervenciones) el 10/02/2020 12:58:56
Buenos dias,
Muchas gracias por tu respuesta, en el depurador veo el retorno del select y es correcto pero al mostrar el valor de la variable resultado en un msgbox aparece el siguiente error.
System.InvalidCastException: 'La conversión de la cadena "FLAMENCO" en el tipo 'Integer' no es válida.'

En el WHERE le voy a pasar un valor integer pero el valor que voy a recibir es un string
1
cmd.CommandText = "SELECT marcas.desc_marca FROM informix.marcas marcas WHERE marcas.cod_marca = '9'"
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: 2.250
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Mostrar resultado del select

Publicado por Phil Rob (577 intervenciones) el 10/02/2020 16:28:34
Hola,

En tu primero ejemplo, la consulta contiene " .... WHERE marca.cmarca =" & cod y cod es Integer.
Pero este consulta busca " SELECT marca.cmarca ..." y marca.cmarca es seguramente un Integer.
Tambien es posible que debes escribir :
1
2
3
Resultado = cmd.ExecuteScalar().ToString
'    o
Dim Resultado As Integer = cmd.ExecuteScalar()

Ahora, utilizas " ...WHERE marcas.cod_marca = '9'" y supongo que cod_marca es String en DB.
Y tu consulta busca " SELECT marcas.desc_marca ... " y marcas.desc_marca es seguramente un String.
Tambien no problema. Escribe :
1
2
Dim Resultado As String
Resultado = cmd.ExecuteScalar()

Pero atencion, en segundo ejemplo, si cod_marca es Integer en DB, debes escribir :
1
cmd.CommandText = "SELECT marcas.desc_marca FROM informix.marcas marcas WHERE marcas.cod_marca = 9 "

Si no functiona, envias todos los campos de la DB con sus tipos.

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: 46
Ha aumentado su posición en 45 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Mostrar resultado del select

Publicado por sori46 (16 intervenciones) el 10/02/2020 16:57:58
Hola,
Disculpa el cambio en el SELECT, el correcto es:
1
cmd.CommandText = "SELECT marcas.desc_marca FROM informix.marcas marcas WHERE marcas.cod_marca = 9 "
El 9 es para no tener que poner cada vez en el textbox un valor.

Siendo:
- desc_marca un string (Descripcion de una marca)
- cod_marca un integer (Codigo de una marca)

Adjunto el codigo
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
Dim connectString As String = "Host=miequipo;" &
"Server=miservidor_tcp;" &
"Service=99999;" &
"Protocol=onsoctcp;Database=pepitov2;" &
"Uid=hola;Pwd=hola;"
 
Dim conn As IfxConnection = New IfxConnection(connectString)
 
conn.Open()
 
Dim cmd As IfxCommand = conn.CreateCommand()
'Dim trans As IfxTransaction = conn.BeginTransaction()
'cmd.Transaction = trans
 
'Codigo marca
' Dim cod_marca As Integer = TextBox1.Text
Dim resultado As String
 
'Hacemos un select
cmd.CommandText = "SELECT vmarcas.dmarca FROM informix.vmarcas vmarcas WHERE vmarcas.cmarca = 9 "
 
'El resultado del select lo ponemos en una varible
resultado = cmd.ExecuteScalar()
 
 
'cmd.ExecuteNonQuery()
 
'cmd.ExecuteReader()
 
'Cerramos la conexion
conn.Close()
 
 
MsgBox("", Trim(resultado))
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: 2.250
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Mostrar resultado del select

Publicado por Phil Rob (577 intervenciones) el 10/02/2020 18:12:10
El error es en MsgBox. Reemplazar MsgBox("", Trim(resultado)) por MessageBox.Show (Trim(resultado)).

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: 46
Ha aumentado su posición en 45 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Mostrar resultado del select

Publicado por sori46 (16 intervenciones) el 02/03/2020 15:46:32
Muchas gracias por tu respuesta me confundi con otro lenguaje.
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