Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
22.04.2011, 09:17
|
|||
---|---|---|---|
|
|||
Ошибка 3190 при TransferSpreadsheet acExport в Excel |
|||
#18+
Добрый день. Нужна помощь с вот такой штукой: Есть медицинская база данных в Access, там есть один запрос, который находит всех должников по обследованиям, он хоть и большой но о 255 полях даже речи нет, выполняется он замечательно и вручную в Excel экспортируется тоже замечательно (вручную, т.е. через Файл - Экспорт). А вот, когда я его програмно хочу вывести в эксель - ошибка 3190 - Определено слишком много полей. А его надо отдельно по каждому участку делать, и участков этих не мало... Вобщем надо решать проблему - почему при програмном экспорте Access ругается... Вот код: Public Sub MakeOtchet(qsql As String, FileAndQueryName As String) DoCmd.Hourglass True Dim tempQ As QueryDef 'создадим запрос на основе строки qsql Call DelQuery(FileAndQueryName) 'удаляем запрос с такие именем, если вдруг он есть Set tempQ = CurrentDb.CreateQueryDef(FileAndQueryName, qsql) 'создаем новый запрос 'DoCmd.OpenQuery FileAndQueryName 'экспортируем результат запроса DoCmd.TransferSpreadsheet acExport, , FileAndQueryName, CurrentProject.Path & "\отчеты\" & FileAndQueryName & ".xls" tempQ.Close DoCmd.Hourglass False End Sub а вот строка qsql SELECT Patients.num, Patients.sname AS Фамилия, Patients.fi AS Имя, Patients.SI AS Отчество, Patients.NUCH as Уч , Patients.STREET AS Улица, Patients.NHOUSE as Дом, Patients.KORP as Корп, Patients.NAPPART as Кв, TER as тер, NEVR as невр,ENDO as энд, OFT as офт, LOR as лор, HRG as хир, GNK as гин, URL as урл, OAK as ОАК, OAM as ОАМ, EKG as ЭКГ, FG as ФГ, HOL as Хол, Biohim as Виох, OnkoM as Онком, UZI_MG as УЗИ_МЖ,UZI_TAZA as УЗИ_ОМТ, UZI_BP as УЗИ_БП , spr.NAME AS ТИП FROM ( Patients ) INNER JOIN SPR ON Patients.TYPE=SPR.ID WHERE SPR.NSPR=3 AND del=0 and type<>8 and not(lie=true) and cgb and (([Patients].[Fin]=0)) and patients.TYPE=2 ORDER BY FIN DESC ; ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.04.2011, 15:08
|
|||
---|---|---|---|
|
|||
Ошибка 3190 при TransferSpreadsheet acExport в Excel |
|||
#18+
Shart_Soniaесть один запрос, выполняется он замечательно и вручную в Excel экспортируется тоже замечательно (вручную, т.е. через Файл - Экспорт). А вот, когда я его програмно хочу вывести в эксель - ошибка 3190 - Определено слишком много полей. Странно. Какая версия Акса и Ёкселя? Может у TransferSpreadsheet явно указать тип acSpreadsheetTypeExcel9? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.04.2011, 17:56
|
|||
---|---|---|---|
|
|||
Ошибка 3190 при TransferSpreadsheet acExport в Excel |
|||
#18+
Не совсем разобралась почему это было, но заметила, что если очистить каталог с отчетами, то новые отчеты выходят без этой ошибки.(Т.е. удалила файлы, ранее созданных отчетов, которые имели то же имя, что и вновь создающиется). Обычно они просто перезаписываются, поэтому я даже не подумала на это... Вот бы теперь еще програмно каталог почистить.... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.04.2011, 18:11
|
|||
---|---|---|---|
|
|||
Ошибка 3190 при TransferSpreadsheet acExport в Excel |
|||
#18+
Добавила в заголовок модуля: Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long И перед строкой с экспортом добавила строку DeleteFile CurrentProject.Path & "\отчеты\" & FileAndQueryName & ".xls" чтобы совсем спокойно было... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.04.2011, 18:22
|
|||
---|---|---|---|
|
|||
Ошибка 3190 при TransferSpreadsheet acExport в Excel |
|||
#18+
Shart_Soniaесли очистить каталог с отчетами, то новые отчеты выходят без этой ошибки.(Т.е. удалила файлы, ранее созданных отчетов, которые имели то же имя, что и вновь создающиется). Обычно они просто перезаписываются, поэтому я даже не подумала на это... TransferSpreadsheet не перезаписывает файлы, т.е. не заменяет старый файл новым. При первом экспорте создается файл с листом, имеющим имя (например "Экспорт") и диапазоном с тем же именем, представляющим все ячейки с выгруженными данными. При следующем экспорте в тот же файл данные в диапазоне "Экспорт" (имя листа уже не имеет значения) заменяются новыми, при необходимости раздвигая диапазон вниз и вправо. Для успешного "раздвигания" вправо необходимо, чтоб все столбцы справа от диапазона были девственно чисты (т.е. туда ничего не вносилось/удалялось). В некоторых случаях это удобно. Кстати, у TransferSpreadsheet в аргументе Range можно указать произвольное имя и листу/диапазону будет присвоено оно, а не имя запроса. Т.е. можно выполнить экспорт одного и того же запроса в один и тот же файл, указывая разные имена и вы получите файл с несколькими листами. Shart_SoniaВот бы теперь еще програмно каталог почистить.... Цикл с функцией Dir и Kill каждого найденного файла. Или с помощью FSO удалить все файлы сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.04.2011, 18:28
|
|||
---|---|---|---|
|
|||
Ошибка 3190 при TransferSpreadsheet acExport в Excel |
|||
#18+
Анатолий ( Киев )Для успешного "раздвигания" вправо необходимо, чтоб все столбцы справа от диапазона были девственно чисты (т.е. туда ничего не вносилось/удалялось). Может в этом дело было... Будем знать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=45&mobile=1&tid=1613101]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
111ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 371ms |
total: | 594ms |
0 / 0 |