Duda sencilla con combobox

02/12/2006 - 17:54 por Carlos Aparicio | Informe spam
Buenas tardes, tengo un comobobox que se alimenta de 2 campos de una tabla en
sql.

Para cargarlo uso la siguiente instruccion:
Dim strConnection As String =
"Server=personallaptop\sqlexpress;Password=xxxxxx;Persist Security
Info=True;User ID=xxxxx;Initial Catalog=xxxxxx"
Dim Connection As New SqlConnection(strConnection)
Dim strSQL As String = "Select cod_operacion, descripcion_operacion
From xxxxxxxxxxx order by cod_operacion desc "
Dim DA As New SqlDataAdapter(strSQL, Connection)
Dim DS As New DataSet

DA.Fill(DS)
depositos.DataSource = DS.Tables(0)
depositos.ValueMember = DS.Tables(0).Columns("cod_operacion").ToString
depositos.DisplayMember =
DS.Tables(0).Columns("descripcion_operacion").ToString

El combobox depositos se carga perfectamente y me muestra como texto lo que
yo deseo. pero al tratar de insertar el registro en la base de datos no se
como hacer para que tome el texto (descripcion_operacion) y el valor
(cod_operacion)

lo intento de la siguiente manera:


Dim strConn3 As String =
"Server=personallaptop\sqlexpress;Password3456789;Persist Security
Info=True;User ID=suramericana;Initial Catalog=bicapital"
Dim MySQL3 As String = "Insert into transacciones (cod_transaccion,
descripcion_transaccion) values (@cod_transaccion, @descripcion_transaccion)"
Dim MyConn3 As New SqlConnection(strConn3)
Dim cmd3 As New SqlCommand(MySQL3, MyConn3)

cmd3.Parameters.Add(New SqlParameter("@cod_transaccion",
depositos.ValueMember))
cmd3.Parameters.Add(New SqlParameter("@descripcion_transaccion",
depositos.Text))

MyConn3.Open()
cmd3.ExecuteNonQuery()
MyConn3.Close()

Pero de esta forma me toma como valor "cod_operacion" no toma el numero que
esta asociado a ese campo.

Como puedo hacer para que el parametro cod_transaccion tome el valor
numerico que esta asociado????????


Saludos y gracias.
 

Leer las respuestas

#1 Carlos Gómez
02/12/2006 - 20:16 | Informe spam
Carlos Aparicio ha escrito:

Dim MySQL3 As String = "Insert into transacciones (cod_transaccion,
descripcion_transaccion) values (@cod_transaccion, @descripcion_transaccion)"



segun esto, cod_transaccion no es autonumerico, pero ¿como lo tienes
definido en la tabla?

si lo tienes autonumerico, mejor crea un procedimiento almacenado en la
base de datos:
CREATE PROCEDURE NuevaTransaccion
@cod_transaccion INT OUTPUT, --supongo que es integer
@descripcion_transaccion VARCHAR(50) --supongo que es varchar(50)
AS
BEGIN
INSERT INTO transacciones (descripcion_transaccion)
VALUES (@descripcion_transaccion)
SET @cod_transaccion = @@IDENTITY --asignamos el último
autonumerico generado
END

y ahora:
'Creamos el command
MySQL3 = "NuevaTransaccion"
Dim cmd3 As New SqlCommand(MySQL3, MyConn3)
cmd3.CommandType = CommandType.StoredProcedure

'Creamos los parametros
Dim p As New SqlClient.SqlParameter("@cod_transaccion",
depositos.ValueMember))
p.Direction = ParameterDirection.InputOutput
p.DbType = DbType.Int32
cmd3.Parameters.Add(p)

Dim q as New SqlClient.SqlParameter("@descripcion_transaccion",
depositos.Text))
q.Direction = ParameterDirection.Input
q.DbType = DbType.String
cmd3.Parameters.Add(q)

'Ejecutamos el command
cmd3.ExecuteNonQuery()

'Obtenemos el valor asignado por la base de datos a cod_transaccion
msgbox(cmd3.Parameters(1).Value.ToString)

Ten en cuenta, que el cmd3 contiene 3 parametros:
Parametro 0 --> es el ReturnValue, y es el que informa del nº de filas
afectadas si la operacion acabo con exito
Parametro 1 --> el primero que le metiste: en este caso
@cod_transaccion
Parametro 2 --> @descripcion_transaccion

Preguntas similares