Que hago mal en esta instruccion insert ?

Tengo un problema con el procedimiento que te adjunto. No me graba nada en la tabla Listas_Ficheros.

La ejecuto paso a paso y miro los valores que se van guardando en cada variable, y son correctos, pero luego miro la tabla y no hay nada grabado. Me puedes ayudar a ver cual es el problema.

Muchas gracias.

'----------------------------- GRABA LISTA DESDE ALBUM COMPLETO------------------------
Private Sub ListaGraba_Click()
Dim Ruta As String, i As Integer, existe As Boolean, coleccion_archivos As New Collection, Archivo As String
RutaGraba = rutaCarpeta("Listas") & NombreLista & "\"
Archivo = Dir(Me.Carpeta_Album & "\*.*")

'nc = 0
Do Until Archivo = ""
nc = nc + 1
nca = Right(1000 + nc, 3)
' Destino = RutaGraba & nc & "-" & Archivo
' FileCopy Me.Carpeta_Album & Archivo, Destino
Direccion = Me.Carpeta_Album & Archivo
CurrentDb.Execute "INSERT INTO [Listas_Ficheros] (Nombre_Lista, Direccion_Fichero, Orden) VALUES('" & NombreLista & "','" & Direccion & "','" & nca & "')"
coleccion_archivos.Add Archivo
Archivo = Dir()
' Refresh
Loop
'Me.wpl.Visible = True
MsgBox "Grabado :" & Carpeta_Album & "", vbOKOnly

End Sub

2 Respuestas

Respuesta
1

Hay algunos posibles problemas:

1. La variable "Ruta" se declara pero no se utiliza en el procedimiento. En su lugar, se utiliza la variable "RutaGraba" para construir la ruta de grabación.

2. No se declara la variable "nc" antes de usarla en el bucle "Do Until". Es recomendable declarar todas las variables antes de utilizarlas para evitar problemas de compilación.

3. En la línea "nca = Right(1000 + nc, 3)", parece que intenta agregar ceros a la izquierda del número "nc" para que tenga siempre tres dígitos. Sin embargo, el código actual no logrará ese objetivo. Podría corregirlo de la siguiente manera: "nca = Right("000" & nc, 3)".

4. Comenta las líneas de código que involucran las variables "Destino" y "FileCopy". Si estas líneas son necesarias para el funcionamiento del programa, asegúrese de descomentarlas eliminando el apóstrofe al inicio de cada línea.

5. En la línea "CurrentDb.Execute", está insertando los valores directamente en la consulta SQL sin tener en cuenta la necesidad de escapar las comillas simples en el valor de "NombreLista". Esto puede generar errores si el valor contiene comillas simples. Para solucionarlo, puede utilizar el método Replace para duplicar las comillas simples en el valor antes de insertarlo en la consulta SQL. Por ejemplo: Replace(NombreLista, "'", "''").

6. No se declara la variable "Direccion" antes de utilizarla en la consulta SQL. Debe declararla antes de la línea "CurrentDb.Execute".

Respuesta
1

Tengo dudas, la condición del bucle no me parece la correcta pero se indica que las variables obtienen valores correctos.

No se publico la función 'RutaCarpeta' y hay líneas comentadas.

Como la grabación se de datos (SQL de inserción) se efectúa en el bucle, un seguimiento paso a paso (punto de interrupción y tecla F8 para caminar), se puede verificar si realmente pasa por el bucle y graba el registro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas