Ayuda con SQL en VB 6.0 update, select, etc.

Tengo una BD en Access con una tabla MERCADERÍAS relacionada de uno a varios con otra llamada PRODUCTOS_ASOCIADOS y necesito agregar al formulario un botón que me permita modificar los campos de un registro y para ello también tengo un datagrid que en el evento click me llena los datos de las columnas en los respectivos textbox, tengo el RS y la conexión en el mismo formulario de la siguiente manera,
Dim cnBase As New ADODB.Connection
Dim rsArticGrilla As New ADODB.Recordset
Sub conexionbase()
With cnBase
    .CursorLocation = adUseClient
    .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\The Ocean Blue\Escritorio\Programa Ingreso Rollos de Tela\Ingreso_Rollos.mdb;Persist Security Info=False"
End With
End Sub
Sub cargagrilla()
With rsArticGrilla
    If .State = 1 Then .Close
    .Open "select MECODINT as CODIGO, MECODIGO as CODIGO_BARRA, MEDESCRI as DESCRIPCION, MEMEDIDA as MEDIDA, MEPROV as PROVEEDOR, MESECCIO as SECCION, MEOBS as OBSERVACION, METIPOMER as TIPO from MERCADERIAS where METIPOMER =" & 1, cnBase, adOpenStatic, adLockOptimistic
End With
End Sub
Private Sub btnmodificar_Click()
If rsArticGrilla.BOF Or rsArticGrilla.EOF Then Exit Sub
If text1.Text = "" Then
    MsgBox "Debe seleccionar un registro de la lista", vbExclamation + vbOKOnly, "ABM Mercaderias"
    Else
     Dim modif As String
     modif = "update MERCADERIAS set MECODIGO = '" & Text2.Text & "',MEDESCRI = '" & Text3.Text & "',MEMEDIDA = '" & Text4.Text & "',MEPROV ='" & Text5.Text & "',MESECCIO = '" & Text6.Text & "',MEOBS = '" & Text7.Text & "',METIPOME = '" & Text8.Text & "'where MECODINT ='" & text1.Text & "'"
     Set rsArticGrilla = cnBase.Execute(modif)
End If
End Sub
btnmodificar seria el boton pero a hacer click me arroja el siguiente error " no se han especificado valores para los parametros requeridos" y al depurar va a la linea Set rsArticGrilla = cnBase.Execute(modif).
Ah, he borrado todos los datos en la Tabla PRODUCTOS_ASOCIADOS para hacer la prueba ya que con la relación no me permite solo actualizar los datos en la tabla primaria, esto por lo de la integridad de la BD pero, ¿existe algún truquito para actualizar los datos en la tabla primaria sin modificar la relacionada? Yo probé borrando el registro y volverlo a insertar pero debido al uso que tendrá el sistema la relación es de 1 a varios y tendría que borrar todos los registros en donde el COD de la Tabla Primaria sea igual al COD de la tabla relacionada.

1 Respuesta

Respuesta
1
EN primer lugar execute no devuelve un recordset pues un update devuelve es un entero, ese puede ser el error que te esta dando, debe sverificar lo que ue devuelve la ejecución de la sentencia SQl que ejecutas.
Cuando vayas a eliminar los registros debes eliminar los registros de la tabla de detalle, o sea en donde se genera la relación, donde tienes los códigos de los productos.
Hola Experto, gracias por tu pronta respuesta, no entendí muy bien eso de que execute no devuelve un recorset, de todos modos también he probado con cnBase.Execute(modif) sin colocar el set ... al principio y de igual manera me da el mismo error y por otro lado, la forma más sencialla para mi que encontré de modificar un registro que tiene una relación es creando otra tabla tipo back up, es decir, mi tabla principal es MERCADERÍAS y en donde se produce la relación es PRODUCTOS_ASOCIADOS, entonces, cree otra tabla llamada PROD_ASOC con los mismos campos y tipos en donde también se van guardando al par que van ingresando los datos y en el botón Modificar lo que hago es, borrar los campos en la tabla PRODUCTOS_ASOCIADOS, ¿modifico el registro en MERCADERÍAS y por ultimo copio los datos de la tabla PROD_ASOC a la tabla PRODUCTOS_ASOCIADOS donde el código es igual al que fue modificado entiendes? El problema seria cuando ya existan muchos registros, llevara un cierto tiempo hacer el cambio, la verdad soy muy novato en esto, ¿esta bien esto?
Revísate el curso de VB6 del guille, lo encuentras en www.elguille.info, aunque te recomiendo que mejor desarrolles en laplataforma .NET con VB.NET pues ya VB6 esta fuera de soporte por Microsoft en este 2010.
Con respecto a la tabla no deberías duplicar los datos en otra tabla simplemente leerlos y modificarlos, luego actualizar la tabla con una sentencia sql UPDATE.
Gracias Experto, pero justamente porque no me permite realizar cambios a la tabla en donde esta la relación es que probé creando otra tabla entiendes, y el UPDATE no me funciona, también he estado haciendo algunas cosas con .net pero este es un trabajito que me han pedido y como es para ganar algún dinero extra lo acepte,
En la sentencia Update el where esta pegadoa una ' esta: "'where eso da error, dale un espacio.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas