Problema con Secuencia SQL en Access 2010

Ante todo, desearos un buen año nuevo y daros las gracias por vuestro tiempo y atención.

Poco a poco, y gracias a la ayuda de personas como vosotros, uno le va perdiendo el miedo (no el respeto) a la programación. Así pues me he aventurado a montar una mini aplicación de gestión en Access 2010. Todo parece ir bien por separado, pero al intentar montar una sección de Facturación me encuentro con este problema, os explico.

Tengo 3 tablas Tbl_GesFacturas, Tbl_GesAlbaranes y TblLineasDetalle.

Estoy en el punto de convertir un Albarán en Factura, para lo cual, he desarrollado este fragmento de código, que os adjunto:

----------------------------------------------------------------

Private Sub Btn_ConvertirEnFactura_Click()
Dim Tbl_GesAlbaranes As Recordset
Dim Tbl_GesFacturas  As Recordset
Dim Tbl_LineasDetalle As Recordset
Dim NumeroFactura, Fecha, Doc As String
Dim SQL As String
DoCmd.SetWarnings False     ' Desactivar avisos del sistema
' Obtener registros de Detalle mediante consulta
    SQL = "SELECT Tbl_LineasDetalle.NumDoc, Tbl_LineasDetalle.Descripcion, Tbl_LineasDetalle.Cantidad, " & _
        "Tbl_LineasDetalle.Precio INTO Temporal From Tbl_LineasDetalle " & _
        "WHERE (((Tbl_LineasDetalle.NumDoc)=[Formularios]![Frm_GesAlbaranes]![NumDoc]));"
    DoCmd.RunSQL SQL
    Set Tbl_GesFacturas = CurrentDb.OpenRecordset("Tbl_GesFacturas")
    Tbl_GesFacturas.AddNew
' Añadir nueva Factura y actualizar el número de Documento
    NumeroFactura = LTrim(Str(Year(Now()))) & "/FA" & Format(Tbl_GesFacturas!NumFactura.Value, "00000")
    Fecha = LTrim(Str(Year(Now())))
    Doc = Format(Tbl_GesFacturas!NumFactura.Value, "00000")
' Duplicar registros como entradas de Factura
    SQL = "INSERT INTO Tbl_LineasDetalle ( NumDoc, Descripcion, Cantidad, Precio ) " & _
        "SELECT [" & NumeroFactura & "], Temporal.Descripcion, Temporal.Cantidad, Temporal.Precio FROM Temporal;"
    DoCmd.RunSQL SQL
    Tbl_GesFacturas!NumDoc = NumeroFactura
    Tbl_GesFacturas!NumCli = Me!NumCli
    Tbl_GesFacturas!Fecha = Now()
    Tbl_GesFacturas.Update
    Tbl_GesFacturas.Close
' Registro añadido
    Facturado = True        ' Marcar campo Facturado como Si
    DoCmd.DeleteObject acTable, "Temporal"      ' Eliminar Tabla Temporal
DoCmd.SetWarnings True      ' Reactivar avisos del Sistema
End Sub

------------------------------------------------------------------------

El código cumple mis necesidades de:

1.- Añadir un registro en la tabla de Facturas

2.- Aumentar el contador de las mismas

3.- Duplicar las líneas de detalle, con lo que las tengo tanto para el Albarán con su correspondiente número de documento, como para la Factura.

Pero al escribir el nuevo número de documento, en las líneas de detalle de la Factura (corresponde al segundo (DoCmd. RunSQL SQL), me aparece un cuadro de diálogo, que me solicita el valor del mismo.

Donde me veo obligado a copiar y pegar el número en cuestión.

No consigo entender el motivo de este suceso, supongo que debo haber escrito mal la sentencia SQL, o quizás algún carácter extraño...

Mi petición es, si por favor alguien puede darme una solución a este "desastre". Una anotación más, quiero que la barra inclinada aparezca.

1 Respuesta

Respuesta
1

El error lo tienes en la construcción de esta SQL:

SQL = "INSERT INTO Tbl_LineasDetalle ( NumDoc, Descripcion, Cantidad, Precio ) " & _
        "SELECT [" & NumeroFactura & "], Temporal.Descripcion, Temporal.Cantidad, Temporal.Precio FROM Temporal;"

NumeroFactura no es un campo de la tabla Temporal, por tanto te lo interpreta como un parámetro y por eso te sale la ventana pidiéndote que introduzcas el valor.

Inténtalo así, a ver si te funciona:

SQL = "INSERT INTO Tbl_LineasDetalle ( NumDoc, Descripcion, Cantidad, Precio ) " & _
        "SELECT [" & NumeroFactura & "] As NumeroFactura, Temporal.Descripcion, Temporal.Cantidad, Temporal.Precio FROM Temporal;"

Un saludo.


Nuevo foro de Access y VBA, visítanos: http://nksvaccessolutions.com/Foro/ 

¡Gracias! 

He probado tu sugerencia, pero sigue haciendo lo mismo. Reaparece la ventana solicitando el valor del parámetro.

Seguiremos investigando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas