Consultas con VBA
Tengo una base de datos en un servidor y un formulario con este código (Access 2003) en otro ordenador.
Private Sub Form_Open(Cancel As Integer)
On Error GoTo Err_Form_Open
Dim miBd As Database
Dim miQd As QueryDef
Dim SQL2 As String
Set miBd = CurrentDb()
Set miQd = miBd.CreateQueryDef("TotalesPORPosiciones", "SELECT [43PosicionAlbaranProveedor].IdPosicionPedidoProveedor, Sum([43PosicionAlbaranProveedor].CantidadBuenas) AS SumaDeCantidadBuenas, Sum([43PosicionAlbaranProveedor].CantidadMalas) AS SumaDeCantidadMalas, Nz(Sum([CantidadBuenas]+[CantidadMalas]),'0') AS TOTAL, [43PosicionAlbaranProveedor].Borrado FROM 43PosicionAlbaranProveedor GROUP BY [43PosicionAlbaranProveedor].IdPosicionPedidoProveedor, [43PosicionAlbaranProveedor].Borrado HAVING ((([43PosicionAlbaranProveedor].Borrado)<>-1))")
SQL2 = "SELECT [38PedidosProveedores].IdPedidoProveedor, [39PosicionPedidoProveedores].NºPosicion, [38PedidosProveedores].ID, [39PosicionPedidoProveedores].IdProducto, [39PosicionPedidoProveedores].DatosProducto, [38PedidosProveedores].FechaPedido, [39PosicionPedidoProveedores].Cantidad,"
SQL2 = SQL2 & "Nz([TotalesPORPosiciones].TOTAL,'0') AS HAY,"
SQL2 = SQL2 & "[Cantidad]-Nz([TotalesPORPosiciones].TOTAL,'0') AS FALTAN,"
SQL2 = SQL2 & "[39PosicionPedidoProveedores].IdPosicionPedidoProveedor FROM 38PedidosProveedores INNER JOIN (39PosicionPedidoProveedores LEFT JOIN TotalesPORPosiciones ON [39PosicionPedidoProveedores].IdPosicionPedidoProveedor = [TotalesPORPosiciones].IdPosicionPedidoProveedor) ON [38PedidosProveedores].IdPedidoProveedor = [39PosicionPedidoProveedores].IdPedidoProveedor WHERE ((([Cantidad]-Nz([TotalesPORPosiciones].TOTAL,'0'))>0))"
Me.RecordSource = SQL2
miQd.Close
miBd.Close
Exit_Form_Open:
Exit Sub
Err_Form_Open:
MsgBox Err.Description
Resume Exit_Form_Open
End Sub
Compilo el proyecto, creo archivo .MDE y me funciona. Pero al copiarlo en un tercer ordenador no me aparece ningún valor. ¿Por qué ocurre esto?.
Muchas gracias.
Private Sub Form_Open(Cancel As Integer)
On Error GoTo Err_Form_Open
Dim miBd As Database
Dim miQd As QueryDef
Dim SQL2 As String
Set miBd = CurrentDb()
Set miQd = miBd.CreateQueryDef("TotalesPORPosiciones", "SELECT [43PosicionAlbaranProveedor].IdPosicionPedidoProveedor, Sum([43PosicionAlbaranProveedor].CantidadBuenas) AS SumaDeCantidadBuenas, Sum([43PosicionAlbaranProveedor].CantidadMalas) AS SumaDeCantidadMalas, Nz(Sum([CantidadBuenas]+[CantidadMalas]),'0') AS TOTAL, [43PosicionAlbaranProveedor].Borrado FROM 43PosicionAlbaranProveedor GROUP BY [43PosicionAlbaranProveedor].IdPosicionPedidoProveedor, [43PosicionAlbaranProveedor].Borrado HAVING ((([43PosicionAlbaranProveedor].Borrado)<>-1))")
SQL2 = "SELECT [38PedidosProveedores].IdPedidoProveedor, [39PosicionPedidoProveedores].NºPosicion, [38PedidosProveedores].ID, [39PosicionPedidoProveedores].IdProducto, [39PosicionPedidoProveedores].DatosProducto, [38PedidosProveedores].FechaPedido, [39PosicionPedidoProveedores].Cantidad,"
SQL2 = SQL2 & "Nz([TotalesPORPosiciones].TOTAL,'0') AS HAY,"
SQL2 = SQL2 & "[Cantidad]-Nz([TotalesPORPosiciones].TOTAL,'0') AS FALTAN,"
SQL2 = SQL2 & "[39PosicionPedidoProveedores].IdPosicionPedidoProveedor FROM 38PedidosProveedores INNER JOIN (39PosicionPedidoProveedores LEFT JOIN TotalesPORPosiciones ON [39PosicionPedidoProveedores].IdPosicionPedidoProveedor = [TotalesPORPosiciones].IdPosicionPedidoProveedor) ON [38PedidosProveedores].IdPedidoProveedor = [39PosicionPedidoProveedores].IdPedidoProveedor WHERE ((([Cantidad]-Nz([TotalesPORPosiciones].TOTAL,'0'))>0))"
Me.RecordSource = SQL2
miQd.Close
miBd.Close
Exit_Form_Open:
Exit Sub
Err_Form_Open:
MsgBox Err.Description
Resume Exit_Form_Open
End Sub
Compilo el proyecto, creo archivo .MDE y me funciona. Pero al copiarlo en un tercer ordenador no me aparece ningún valor. ¿Por qué ocurre esto?.
Muchas gracias.
1 Respuesta
Respuesta de kepasada
1