Access - Consulta de creación de tabla

 
Vista:
sin imagen de perfil
Val: 59
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Consulta de creación de tabla

Publicado por Juanjo (37 intervenciones) el 10/10/2021 12:30:54
Hola a todos y gracias de antemano por la ayuda.

En el siguiente código recorro los registros de una consulta y los pego "n" veces cada uno de ellos en una nueva tabla. Todo va bien porque no tengo errores pero el problema surge porque en el DoCmd.RunSQL "INSERT INTO ... necesito utilizar en el WHERE el criterio numped que es un valor establecido en el código pero no lo reconoce.
Espero haberme explicado bien. ¿Alguien me puede ayudar?. Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Private Sub Comando199_Click()
 
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim bultos As Integer
Dim numped As Integer
Set db = CurrentDb
 
DoCmd.RunSQL "DELETE * from [ETIQUETAS IMPRIMIR]"
 
Set rs = db.OpenRecordset("ETIQUETAS CANASTA", dbOpenDynaset)
 
Do While Not rs.EOF
 
    bultos = rs!cajas
    numped = rs!IdPedido
 
    Dim i As Byte
    For i = 1 To bultos
 
        DoCmd.RunSQL "INSERT INTO [ETIQUETAS IMPRIMIR] SELECT PEDIDOS.FechaFabrica, [DETALLE PEDIDOS].IdPedido, PRODUCTOS.Producto, [DETALLE PEDIDOS].CantidadP AS Cajas " & _
        "FROM PEDIDOS INNER JOIN (PRODUCTOS INNER JOIN ([DETALLE PRODUCTOS] INNER JOIN [DETALLE PEDIDOS] ON [DETALLE PRODUCTOS].IdDetalleProducto = [DETALLE PEDIDOS].IdDetallePro) ON PRODUCTOS.IdProducto = [DETALLE PRODUCTOS].IdProducto) ON PEDIDOS.IdPedido = [DETALLE PEDIDOS].IdPedido " & _
        "WHERE (((PEDIDOS.FechaFabrica)=#10/8/2021#) AND (([DETALLE PEDIDOS].IdPedido)=numped))"
 
    Next
 
    rs.MoveNext
    DoEvents
 
Loop
 
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta de creación de tabla

Publicado por Anonimo (3316 intervenciones) el 10/10/2021 16:21:03
Para que Access reconozca la variable (cualquier variable) ha de estar fuera de la cadena de texto que siempre sera tomada como un literal.

La diferencia:
Original:
1
.... WHERE (((PEDIDOS.FechaFabrica)=#10/8/2021#) AND (([DETALLE PEDIDOS].IdPedido)=numped))"

Lo correcto:
1
.... WHERE (((PEDIDOS.FechaFabrica)=#10/8/2021#) AND (([DETALLE PEDIDOS].IdPedido)= " & numped & "))"

Es fácil de verificar con un simple Msgbox

MsgBox "INSERT INTO [ETIQUETAS IMPRIMIR] SELECT PEDIDOS.FechaFabrica, [DETALLE PEDIDOS].IdPedido, PRODUCTOS.Producto, [DETALLE PEDIDOS].CantidadP AS Cajas " & _
"FROM PEDIDOS INNER JOIN (PRODUCTOS INNER JOIN ([DETALLE PRODUCTOS] INNER JOIN [DETALLE PEDIDOS] ON [DETALLE PRODUCTOS].IdDetalleProducto = [DETALLE PEDIDOS].IdDetallePro) ON PRODUCTOS.IdProducto = [DETALLE PRODUCTOS].IdProducto) ON PEDIDOS.IdPedido = [DETALLE PEDIDOS].IdPedido " & _
"WHERE (((PEDIDOS.FechaFabrica)=#10/8/2021#) AND (([DETALLE PEDIDOS].IdPedido)=numped))"


Y despues con 'la otra version'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 59
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Consulta de creación de tabla

Publicado por Juanjo (37 intervenciones) el 10/10/2021 16:25:36
Muchas gracias. A veces uno se siente estúpido de no poder resolver estas cuestiones por uno mismo. Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de creación de tabla

Publicado por Anonimo (3316 intervenciones) el 10/10/2021 20:26:27
El método de 'ver' lo que se le envía a Access, es una forma sencilla de localizar errores (hubieras apreciado que salía el nombre de la variable y no su contenido).

Otra metodología de localizar inconsistencias consiste en añadir un punto de interrupción y cuando se llega a la línea (y en todo el código implicado) pasar con el ratón por encima de las variables, si las reconoce: mostrara su valor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar