Этот вопрос мне любопытен.
Я создал следующую функцию в VBA
Public Function ContajeDeMaterialAUnaFecha(DFechaDeContaje As String, _
StrDescMatProveedor As String) As Single
Dim rst As DAO.Recordset
Dim rstResultado As DAO.Recordset
Dim strSQL As String
Dim sngUnidadesContadas As Single
Dim intCuentas As Integer
strSQL = "SELECT materialproalbsub.nalbpro, materialproveedor.DESC_MAT_PROVEEDOR, " & _
"materialproalbsub.TOTALCANTIDAD, materialproalbsub.precioud, materialproalbsub.falbaran " & _
"FROM materialproveedor INNER JOIN materialproalbsub ON materialproveedor.idmaterialemp = " & _
"materialproalbsub.idmaterialemp " & _
"ORDER BY materialproalbsub.falbaran;"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot, dbSeeChanges)
rst.Filter = "materialproalbsub.falbaran<=#" & DFechaDeContaje & "# " & _
"AND materialproveedor.DESC_MAT_PROVEEDOR='" & StrDescMatProveedor & "'"
Set rstResultado = rst.OpenRecordset
If rstResultado.RecordCount > 0 Then
intCuentas = 0
sngUnidadesContadas = 0
rstResultado.MoveLast
rstResultado.MoveFirst
Debug.Print rstResultado.RecordCount, StrDescMatProveedor
Do Until rstResultado.EOF
sngUnidadesContadas = sngUnidadesContadas + rstResultado.Fields("TOTALCANTIDAD")
rstResultado.MoveNext
intCuentas = intCuentas + 1
Loop
Debug.Print DFechaDeContaje, sngUnidadesContadas
ContajeDeMaterialAUnaFecha = sngUnidadesContadas
End If
rst.Close
Set rst = Nothing
rstResultado.Close
Set rstResultado = Nothing
End Function
Эта функция вызывается в Query from Access, как эта (в SQL mode):
SELECT materialproalbsub.nalbpro, materialproveedor.DESC_MAT_PROVEEDOR, materialproalbsub.TOTALCANTIDAD, materialproalbsub.precioud, materialproalbsub.falbaran, ContajeDeMaterialAUnaFecha([falbaran],[materialproveedor]![DESC_MAT_PROVEEDOR]) AS TotalesAFecha
FROM materialproveedor INNER JOIN materialproalbsub ON materialproveedor.idmaterialemp = materialproalbsub.idmaterialemp
WHERE (((materialproveedor.DESC_MAT_PROVEEDOR)<>"- Seleccione uno de la lista -"))
ORDER BY materialproalbsub.falbaran;
Функция отлично работает, а также запрос из MS Access, но есть серьезная проблема: запрос постоянно пересчитывается после выполнения (любой выбор ячейки в результате, любая прокрутка) .
Возможно ли выполнить его только один раз?
Заранее спасибо