Guardar datos en Access con vba

Estoy intentando insertar registros en dos tablas de Access mediante vba, (los datos que quiero insertar los saco de un excel). El código que utilizo es el siguiente:
Public Function insertarCantidad(ByVal colum As String, ByVal cant As String, ByVal centroDif As String) As Boolean
' Método para insertar la cantidad "cant" en la columna correspondiente "colum"
insertarCantidadr = True
Dim SQL As String
Dim db As Object
Dim rst As Object
Dim dato As Variant
On Error GoTo error_1
' Asocio a la BD actual
Set db = OpenDatabase(CurrentDb.Name)
On Error Resume Next
    SQL = "UPDATE [LISTADOS_MATERIALES_M-Z] SET " & colum & "='" & cant & "' WHERE [CENTRO_DIFUSOR] = " & centroDif
      db.Execute SQL, DB_UPDATABLEFIELD
      db.Update (dbUpdateRegular)
If Not rst Is Nothing Then rst.Close
    Set rst = Nothing
If Not db Is Nothing Then db.Close
    Set db = Nothing
    insertarCantidad = True
exit_Function:
   Exit Function
error_1:
    MsgBox Err.Description
    'MsgBox "Ha habido un erroral insertar una cantidad en la tabla M-Z.", vbCritical, "ERROR"
    insertarCantidad = False
        Resume exit_Function
End Function
El problema es que abro la tabla y no hay nada, no sé por qué no se guardan los datos...
¿Alguien sabe cómo solucionar esto?

1 respuesta

Respuesta
1
Estas haciendo un UPDATE no un INSERT
Update actualiza los datos si ya existen. Supongo que con la condición 'Where' que has puesto no selecciona nada.
Insert: Inserta un nuevo dato y es lo que debes utilizar la primera vez.
El esquema normal que se usa es :
Primero intento insertar (Insert)
Si puedo insertar todo Ok y se acaba el proceso.
Si no puedo ( PORQUE duplicada) Es que el registro existe entonces actualizo la información (Update).
Permite vincular tablas 'excel' por lo que si haces la vinculación lo mismo te ahorras el código.
Muchas gracias por la respuesta.
No se vincular la tabla excel porque es algo complejo: tengo unos preciarios de distintos ítems en excel de los que tengo que extraer la cantidad (columna de al lado). En total tengo 200 posibles items, pero en cada excel sólo aparecerán unos pocos.
Tengo una tabla con la descripción de los 200 ítems y un nombre de columna asociado a ese ítem. Entonces el proceso es:
leeo el excel, busco en la tabla a qué columna corresponde ese ítem, voy a la tabla donde está la columna e inserto la cantidad.
El caso es que todo esto es para meter las cantidades en otro excel, así que estoy pensando que puede que sea mejor pasar de un excel a otro excel aunque me queden muchas líneas de código para meter las cantidades en unas celdas concretas...
Otra opción sería poner toda la tabla de cantidades a 0 y así sí que podría utilizar el código que cito arriba, ¿no?
¿Qué es mejor?
Muchísimas gracias
Por lo que dices creo que con Excel lo podrías resolver todo más sencillamente.
Necesitarías una hoja para la relación delos 200 items y las cantidades
Y otra u otras para el resto. Las puedes poner separadas o bien añadir una columna 'Grupo' para tenerlo todo junto pero poderlo filtrar o clasificar según necesites.
http://sites.google.com/site/expertmrtool/archvios-de-ayuda-para-msexcel
Mira aquí que hay varios ejemplos. Quizás el control de Inventario o el LIstado de llamadas te sirva.
Con el que sea más parecido me cuentas y terminamos de ver el tema.
Lo que necesito es más complejo y lo tengo que programar con vba. Voy a pensarlo y a ver que sale...
Muchas gracias por todo.
Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas