VB.net error en Rows(Fila).Delete()

Estoy pasando de VB6 a VB Express 2008 y el cambio en el tratamiento de las Bases de Datos es muy distinto y me está costando mucho trabajo.
Estoy tratando de actualizar, insertar y eliminar una fila, y en todos los casos me da el mismo error, me podéis indicar que es lo que falta o esta mal.
Adjunto el sencillo código con el que estoy trabajando.
Dim MiConexion As OleDb.OleDbConnection
Dim MiDataAdapter As OleDb.OleDbDataAdapter
Dim MiDataSet As DataSet
Dim MiPath As String
Dim MiBD_Access As String
Dim StrConexion As String
Dim Fila As Integer
______________________________
MiPath = CurDir()
MiBD_Access = "\Concilia.mdb"
StrConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MiPath & MiBD_Access
MiConexion = New OleDb.OleDbConnection
MiConexion.ConnectionString = StrConexion
MiConexion.Open()
MiDataAdapter = New OleDb.OleDbDataAdapter("Select Cod, Titulo from MayorM ORDER BY COD", MiConexion)
MiDataSet = New DataSet
MiDataAdapter.Fill(MiDataSet)
fila=8
MiDataSet.Tables(0).Rows(Fila).Delete()
MiDataAdapter.Update(MiDataSet)
Me da el siguiente error en esta última linea.
La generación SQL dinámica para DeleteCommand no es compatible con SelectCommand, que no devuelveninguna información sobre columnas clave.
{"lat":41.1124687891809,"lng":0.439453125}

1 respuesta

Respuesta
1
No recuerdo si en VB6 se puede hacer de la forma que te voy a recomendar pero para VB 2005 en adelante te recomiendo cheques estos videos:
http://msdn.microsoft.com/en-us/vbasic/ff718212
No creo me sirvan estos videos, solo quiero programar con código... y allí usan otros métodos.
Mandame tu proyecto y tu base de datos para analizarlo.
[email protected]
O puedes intentar ejecutando en modo Debugg presionando F8 para cada movimiento y veas cual linea es la que tiene el problema.
Creo que el problema es que utilizas una consulta SELECT, luego borras una fila del Dataset e intentas Actualizar la tabla así, lo correcto seria usar una "secuencia" DELETE y no SELECT, y ejecutar el Query, no "llenar" el dataset, y te falta una variable de tipo OleDb. OleDbCommand que es la que se encarga de ejecutar este tipo de "Querys"
Te pongo un ejemplo y lo adaptas a tu caso:
Try
            Dim Sql As String = "DELETE FROM mgw10005 WHERE ccodigop01 = 'RP001'"
            Using con As New OleDb.OleDbConnection("Provider=vfpoledb;Data Source=C:\Temp\;Collating Sequence=general;")
                'Si la coneccion esta cerrada, la abre (Es necesario para secuencias DELETE e INSERT
                If con.State = ConnectionState.Closed Then con.Open()
                Using comm As New OleDb.OleDbCommand(Sql, con)
                    comm.ExecuteNonQuery()
                End Using
            End Using
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas