|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
Друзья, помогите с экспортом в эксель или направьте в правильное русло. Есть таблицы, которые созданы по подобию страниц в файле шаблона. Оригинальный файл содержит более 50 листов. Тут приаттачил легкое подобие. Задача заполнить экселевский файл на основе данных из этих таблиц. Они заполняются по определенному алгоритму... Идея такая, что через функцию передается имя листа, который нужно заполнить. Это имя в 100% случаев буде совпадать с именем таблицы в БД, а вот поля некоторые могут иметь отличия . Это скорее исключения, связанное с тем, что некоторые символы в именах полей запрещены. И вроде все красиво можно вставлять через рекордсет xlSheet.Range("A3").CopyFromRecordset rst, но может измениться версия шаблона, например на какой-то странице появится новая колонка. И тогда данные могут съехать. Не соображу, как лучше организовать проверку имен полей из SQL-запроса с именами колонок в файле шаблона. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2021, 21:43 |
|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
Архимедофф, в файле шаблона в первой строке где должны быть данные вписываете имена колонок, для быстроты поиска - строке можно присвоить имя по определенной маске, например tablename.Recordset дaлее в цикле перебириаете рэнжи, фильтруем только те что соответсвуют маске "*.Recordset", из них собираем список колонок, формируем запрос, а дальше как предложили copyfromrecordset. Главное что бы не боло объединенных строк. Таким образом может существоватт даже несколько версий одного отчета. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2021, 10:51 |
|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
Swa111, Дело в том, что первая строка в оригинальном шаблоне это объединенные ячейки. Да и вообще, сам файл шаблона предоставлен производителем оборудования. В нем более 70 страниц и много кода на VBA. Фактически заполнять можно только то, что разрешено. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 12:03 |
|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
Архимедофф, имелось ввиду первая строка с данными а не шапка. Если файл нельзя менять (кроме данных) в таком случае рядом держать файл с метаинформацией на какую страницу какие поля вывести. Плюс ввести понятие контрольных ячеек, при измении которых не давать построить отчет по данному метафайлу. Если число столбцов фиксировано, то все столбцы в контрольные ячейки занести. Т.Е. Как то так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
в результате сначала сверяем контрольные точки, если все равны - строим запрос Код: sql 1.
и начиная с строки 2 разносим поля ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 13:06 |
|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
Архимедофф, а не проще ли импортировать таблицу без строки заголовков,затем вставить вырезанную в буфер строку заголовков,если необходимо их сохранить или "обозвать" как Вам надо ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 13:38 |
|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
sdku, Боюсь что не проще. Оригинальный файл могу выслать на почту, т.к. тут слишком мальникий размер можно приаттачить. Админам пора увеличить квоту хотя бы до мегабайта :). Более того, в файле могут быть поля (столбцы) с точками. Акс этого не любит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 13:00 |
|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
Архимедофф Более того, в файле могут быть поля (столбцы) с точками. Акс этого не любит. Акс не такой уж и тупой ;) По существу вопроса: можно завести темповую таблицу с именем листа с каким-либо префиксом, например, tmp_sheet1. Заливать полностью содержимое листа в эту таблицу без указанию полей Сравнивать первую строку темп таблицы с названиями и количеством столбцов с метаданными таблицы, в которую будем импортировать. Рекордсеты в помощь Настраиваем импорт из темп таблицы в нужную. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 15:01 |
|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
Прогер_самоучка, я не сомневаюсь в ваших способностях, судя по количеству сообщений :) Напишите мне на почту, в профиле указан адрес, я вышлю файл. Сейчас я использую всего 8 временных таблиц для заполнения много большего количества листов экселя-темплэйта. Хочу более универсальный инструмент сделать, т.к. у меня сейчас костыль, хотя и рабочий. Иногда легче и быстрее допилить запрос под новые нужды, чем сделать то, до чего не доходят руки или не хватает мозгов. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 20:48 |
|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
Архимедофф, А чё Вы не прислушаетесь к тому что говорят и создаете трудности\проблемы,которых нет, а затем пытаетесь их героически преодолевать (8 временных таблиц....Однако) sdku Архимедофф, а не проще ли импортировать таблицу без строки заголовков,затем вставить вырезанную в буфер строку заголовков,если необходимо их сохранить или "обозвать" как Вам надо Прогер_самоучка По существу вопроса: можно завести темповую таблицу с именем листа с каким-либо префиксом, например, tmp_sheet1. Заливать полностью содержимое листа в эту таблицу без указанию полей Сравнивать первую строку темп таблицы с названиями и количеством столбцов с метаданными таблицы, в которую будем импортировать. Рекордсеты в помощь Настраиваем импорт из темп таблицы в нужную. Всего одна строка кода (где можно указать диапазон\лист) + необходимое количество строк для "допиливания" в EXCEL(при необходимости) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 22:35 |
|
Экспорт в XLS на основе шаблона, где нужно выполнить проверку имен полей запроса и шаблона
|
|||
---|---|---|---|
#18+
Архимедофф, я бы завёл спецтаблицу спецификаций с полями "имя листа", "номер столбца", "имя поля" (может быть пустым). В функции первым делом открываем Recordset на нужных записях, отсортированных по номеру столбца, в цикле по записям формируем строку с перечнем полей, где вместо пустого значения вставляем слово "Null", а затем вставляем это в SQL выражение и выполняем Может быть даже не одну, а две таблицы, где в первой имя листа и адрес первой ячейки с данными, а в связанной все остальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2021, 08:25 |
|
|
start [/forum/topic.php?fid=45&msg=40092656&tid=1609613]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
127ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 254ms |
0 / 0 |