Заполните пропущенные пропуски в таблице Access данными предыдущего дня, используя vba - PullRequest
0 голосов
/ 18 марта 2020

Я импортирую данные в таблицу, которая включает данные за месяц, но только по рабочим дням. Мне нужно добавить выходные и праздничные дни в таблицу с данными за предыдущую дату (т. Е. Данные за пятницу должны повториться для субботы и воскресенья). Кроме того, мне нужно, чтобы это происходило для 2 групп данных в таблице.

Пример моих данных

As of Date  Group  Amount1  Amount2  Amount3
10/1/2019   Test1   $50.00   $60.00   $70.00
10/1/2019   Test2   $50.00   $20.00   $80.00
10/2/2019   Test1   $54.00   $62.00   $73.00
10/2/2019   Test2   $51.00   $25.00   $81.00
10/3/2019   Test1   $52.00   $61.00   $70.00
10/3/2019   Test2   $54.00   $23.00   $82.00
10/4/2019   Test1   $50.00   $60.00   $70.00
10/4/2019   Test2   $55.00   $25.00   $85.00
10/7/2019   Test1   $52.00   $62.00   $72.00
10/7/2019   Test2   $53.00   $24.00   $82.00

Мне нужно, чтобы данные выглядели следующим образом:

As of Date  Group  Amount1  Amount2  Amount3
10/1/2019   Test1   $50.00   $60.00   $70.00
10/1/2019   Test2   $50.00   $20.00   $80.00
10/2/2019   Test1   $54.00   $62.00   $73.00
10/2/2019   Test2   $51.00   $25.00   $81.00
10/3/2019   Test1   $52.00   $61.00   $70.00
10/3/2019   Test2   $54.00   $23.00   $82.00
10/4/2019   Test1   $50.00   $60.00   $70.00
10/4/2019   Test2   $55.00   $25.00   $85.00
**10/5/2019   Test1   $50.00   $60.00   $70.00
10/5/2019   Test2   $55.00   $25.00   $85.00
10/6/2019   Test1   $50.00   $60.00   $70.00
10/6/2019   Test2   $55.00   $25.00   $85.00**
10/7/2019   Test1   $52.00   $62.00   $72.00
10/7/2019   Test2   $53.00   $24.00   $82.00

Строки для отсутствующих дат выходных (5/5/2019 и 6 октября 2009 г.) должны быть вставлены в таблицу и заполнены данными от 4 октября 2009 г. для обеих групп. Это должно l oop для каждой пропущенной даты (выходной или праздничный день) месяца.

1 Ответ

1 голос
/ 18 марта 2020

Вот один из способов достижения sh. Это очень простой код и не будет препятствовать дублированию записей. Может установить таблицу с составным индексом для полей AsOfDate и Group, чтобы предотвратить дублирование пар. Группа - это зарезервированное слово, и в действительности не следует использовать зарезервированные слова в качестве имен для чего-либо. Также советуем не использовать пробелы или знаки препинания / специальные символы в соглашении об именах.

Используйте имена таблиц и полей, где это необходимо. Добавьте критерии диапазона дат в предложение WHERE, если вы хотите уменьшить размер набора данных.

Sub MakeRecs()
Dim db As DAO.Database, rs As DAO.Recordset
Set db = CurrentDb
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Table1 WHERE Weekday([AsOfDate])=6")
Do While Not rs.EOF
    db.Execute "INSERT INTO Table1(AsOfDate, [Group], Amount1, Amount2, Amount3)" & _
            "Values(#" & rs!AsOfDate + 1 & "#,'" & rs!Group & "'," & rs!Amount1 & "," & rs!Amount2 & "," & rs!Amount3 & ")"
    db.Execute "INSERT INTO Table1(AsOfDate, [Group], Amount1, Amount2, Amount3)" & _
            "Values(#" & rs!AsOfDate + 2 & "#,'" & rs!Group & "'," & rs!Amount1 & "," & rs!Amount2 & "," & rs!Amount3 & ")"
    rs.MoveNext
Loop
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...