Hola, lo primero de todo presentarme. Soy nuevo en el foro y estoy aprendiendo a programar en vbnet.
He estado leyendo muchos manuales recursos y demás pero en ocasiones te enganchas en un punto en el que no vas ni para alante ni para atrás y es bastante desesperante. Por eso pido disculpas si mis preguntas son algo tontas.
Primero voy a contar lo que quiero hacer:
1.- HACER UNA CONSULTA A LA BD MYSQL PARA INTRODUCIR TODOS LOS DATOS EN UN DATASET Y TRABAJAR EN MODO DESCONECTADO
2.- ACTUALIZAR TODOS LOS DATOS QUE SE NECESITE Y FINALMENTE ACTUALIZAR LA BD
Ahora os pongo el código que estoy empleando para probar la actualización de los datos en la BD:
<sub>
Try
'1 * Creamos el comando
Dim CmdMarcador As MySql.Data.MySqlClient.MySqlCommand = _
_
New MySql.Data.MySqlClient.MySqlCommand( _
"Select * from marcador_0708", _
Conexion_BD.MyADOCnn)
'2 * Crear Creamos el adaptador
MyADMarcador = _
_
New MySql.Data.MySqlClient.MySqlDataAdapter(CmdMarcado r)
' 3* PARA EVITAR ERRORES AL ACTUALIZAR Y DEMÁS
Dim MyCommandBuilder As MySql.Data.MySqlClient.MySqlCommandBuilder = _
New MySql.Data.MySqlClient.MySqlCommandBuilder(MyADMar cador)
Dim MyDataset As DataSet = New DataSet()
MyADMarcador.Fill(MyDataset, "tblMarcador")
dgMarcador.DataSource = MyDataset.Tables("tblMarcador")
'Configurarar propiedades para el DataGridView
With dgMarcador
.MultiSelect = False
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End With
With MyDataset.Tables("tblMarcador")
' Indicar en la propiedad Sort el campo por el cual buscar
.DefaultView.Sort = "id_marcador"
' asignar el origen de datos a la grilla
dgMarcador.DataSource = .DefaultView
End With
Dim tanteo As Integer = txtbuscar.Text
MyDataset.Tables("tblMarcador").Rows(0)("sets_win" ) = tanteo
MyDataset.AcceptChanges()
txtlog.Text = _
MyCommandBuilder.GetUpdateCommand.CommandText
MyADMarcador.Update(MyDataset.GetChanges("tblMarca dor"))
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
</sub>
Este comando hace referencia a una tabla Mysql con el siguiente formato:
<sub>
CREATE TABLE `marcador_0708` (
`id_marcador` smallint(2) NOT NULL COMMENT 'ID EQUIPO',
`team_small` tinytext NOT NULL COMMENT 'NOMBRE EN SIGLAS',
`team` tinytext NOT NULL COMMENT 'NOMBRE EQUIPO',
`ptos_temp` tinytext NOT NULL COMMENT 'PUNTOS PARCIALES',
`sets_win` smallint(2) NOT NULL default '0' COMMENT 'SETS GANADOS',
`set1_ptos` smallint(2) NOT NULL default '0' COMMENT 'PUNTOS SET 1',
`set2_ptos` smallint(2) NOT NULL default '0' COMMENT 'PUNTOS SET 2',
`set3_ptos` smallint(2) NOT NULL default '0' COMMENT 'PUNTOS SET 3',
`set4_ptos` smallint(2) NOT NULL default '0' COMMENT 'PUNTOS SET 4',
`set5_ptos` smallint(2) NOT NULL default '0' COMMENT 'PUNTOS SET 5',
PRIMARY KEY (`id_marcador`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
</sub>
Ahora cuando ejecuto esta sentencia el Datagrid se me actualiza correctamente y me genera bien el comando update pero me da un error a la hora de actualizar la base de datos:
CONVERSION FROM STRING "tblMarcador" TO TYPE 'INTEGER' IS NOT VALID
En este ejemplo solo intento actualizar un dato el de SET GANADOS DEL EQUIPO LOCAL.
Espero que alguien pueda ayudarme porque llevo una semana parado intentando aprender este sistema de trabajo y ya me empieza a parecer que soy un gran torpe.
Antes usaba conexiones y desconexiones constantes mediante cmds MYSQL y este método que no soy capaz de implementar me parece mucho más efectivo y le va mucho mejor a mi aplicacion
Gracas y siento el ladrillo