|
|
|
| Access 2003.
Цель: Как обычно нужно данные из excel файла добавить к данным в access.
Нюансы: Есть таблица связанная с файлом *.xls. Но в таблицу *.mdb также импортируются и пустые строки, т.к. в *.xls забита формула на 50000 строк (значений нет, а формулы есть). Поэтому сразу добавить данные из Связанной Таблицы в Основную Таблицу нельзя, дабы не копировать каждый раз по 30000…40000 пустых строчек. А удалить пустые строчки из Связанной таблицы нельзя.
Следовательно, есть в access запрос, который создаёт копию Связанной Таблицы, и вот из неё и нужно удалить программным путём пустые строки.
Подскажите как это сделать?
Может оно легче было бы написать код прямой загрузки данных из файла в нужную таблицу (исключая пустые строки), но… пока нет таких знаний :) | |
|
| |
|
|
|
| Следовательно, есть в access запрос, который создаёт копию Связанной Таблицы |
А в этом запросе сразу указать условие что бы сразу отбирал только записи с заполненными полями нельзя?
Тогда добавятся только нужные записи и удалять ничего не придется | |
|
| |
|
|
|
| Можно не делать "копию Связанной Таблицы", а сразу добавлять записи с непустыми полями из Связанной таблицы в Основную Таблицу:
INSERT INTO [Основная Таблица] ... SELECT ... FROM [Связанная Таблица] As t WHERE (((t.Поле1) Is Not Null));
|
Можно обойтись и без связанной таблицы (например, импорт из файла C:\Book1.xls, с листа Лист1:
INSERT ... FROM [Лист1$] As t IN 'C:\Book1.xls'[Excel 8.0;] WHERE (((t.Поле1) Is Not Null));
|
| |
|
| |
|
|
|
| Я в access профан, как выглядит полностью тело кода без пропусков?
если например:
"C:\Book1.xls", с листа "Лист1" данные из области A1:F10000 (где первая строчка - заголовки идентичные заголовкам в таблице access; а так же последние 8000 строк могут быть пустыми) =>(добавление в) "dateSale" (название Осноной Таблицы в access) | |
|
| |
|
|
|
| INSERT INTO [dateSale] SELECT * FROM [Лист1$A1:F10000] As t IN 'C:\Book1.xls'[Excel 8.0;HDR=True;IMEX=1] WHERE (((t.[Поле1]) Is Not Null));
Вместо "Поле1" укажите имя любого столбца, где есть пустые ячейки. | |
|
| |
|
|
|
|
Private Sub Кнопка2_Click()
INSERT INTO [newSALE] SELECT * FROM [data$A1:F10000] As t IN 'с:\newSALE.xls' [Excel 8.0;HDR=True;IMEX=1] WHERE(((t.[Article]) Is Not Null))
End Sub
|
так? не работает. понимаю, что не так написано. А как нужно? Только полностью. | |
|
| |
|
|
|
| Насмешили...
Private Sub Кнопка2_Click()
CurrentDb.Execute "INSERT INTO [newSALE] SELECT * FROM [data$A1:F10000] As t IN 'с:\newSALE.xls' [Excel 8.0;HDR=True;IMEX=1] WHERE(((t.[Article]) Is Not Null))"
End Sub
|
| |
|
| |