Поле даты не надо делать строковым, это изврат и гемор
Согласен. Но в данном случае это выход, т.к. таблица вспомогательная и ни на что не завязана это просто отчет, поэтому главное, чтобы он работал.
Лучше покажи код, что не получился и формат таблицы DailySales.
Это код:
- Код: Выделить всё
Private Sub Кнопка35_Click()
DoCmd.RunSQL "DELETE * FROM [DailySales]"
Dim dbsTemp As Database, i As Date
Set dbsTemp = CurrentDb
Dim g As String
g = "1"
For i = CDate(Me.fldDateFrom) To CDate(Me.fldDateTo)
ConnectOutput dbsTemp, _
"dBASETable", _
"dBase IV;DATABASE=D:\ARCHIV\SALEARCH", _
"SALE" & Format(Month(i), "00") & Format(Day(i), "00")
DoCmd.RunSQL "INSERT INTO DailySales ( Data, Store, Amount ) " & _
"SELECT dBASETable.DATE, dBASETable.STORE, Sum(IIf([OPERATION]='P',[DELTASUM],-[DELTASUM])) AS Amount " & _
"FROM dBASETable GROUP BY dBASETable.DATE, dBASETable.STORE"
DoCmd.RunSQL "UPDATE DailySales SET DailySales.dn =" + g + " WHERE DailySales.Dn IS NULL AND DailySales.Data= '" + Format(i, "dd.mm.yyyy") + "'"
dbsTemp.TableDefs.Delete "dBASETable"
g = Str(Val(g) + 1)
' за тот же день предыдущей недели
ConnectOutput dbsTemp, _
"dBASETable", _
"dBase IV;DATABASE=D:\ARCHIV\SALEARCH", _
"SALE" & Format(Month(i - 7), "00") & Format(Day(i - 7), "00")
DoCmd.RunSQL "INSERT INTO DailySales ( Data, Store, Amount ) " & _
"SELECT dBASETable.DATE, dBASETable.STORE, Sum(IIf([OPERATION]='P',[DELTASUM],-[DELTASUM])) AS Amount " & _
"FROM dBASETable GROUP BY dBASETable.DATE, dBASETable.STORE"
DoCmd.RunSQL "UPDATE DailySales SET DailySales.dn =" + g + " WHERE DailySales.Dn IS NULL AND DailySales.Data= '" + Format(i - 7, "dd.mm.yyyy") + "'"
dbsTemp.TableDefs.Delete "dBASETable"
g = Str(Val(g) + 1)
Next
DoCmd.OpenReport "rptПродажи", acViewPreview
End Sub
Все-таки преобразовал поле DailySales.Data к текстовому типу так заработало. Но когда добавил еще одно услове (чтобы он не обновлял, то, что уже обновил по второму разу):
это
- Код: Выделить всё
WHERE DailySales.Dn IS NULL
он начал обновлять все поле на нули
. мне уже смешно становится такие косяки...
Тип данных в таблице DailySales:
Поле Data - текстовый;
Поле Dn- числовой. (можно было бы и его в текстовый, чтобы апдейт заработал нормально, но это нельзя - по нему потом упорядочиается все)