|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
Есть макрос, который вызывает ХПР. Процедура возвращает таблицу значений, многие из колонок которой пустые. Как их скрыть сразу после выполнения процедуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2012, 18:40 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
Вообще-то про телепатию написано в правилах. )) Предположительно это эксель, но все же надо пояснить, а так же указать, как именно формируется таблица значений (привести фрагмент кода) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2012, 18:50 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
Грамотно написать Селект, и дело в шляпе. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2012, 19:52 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
Теперь в деталях: MS Excel 2010. Макрос берет переменную (имя человека) -> передает ее в процедуру -> процедура возвращает все записи, созданные юзером. В каждой записи процентов 90% колонок пустые (регистрируются ошибки по кодам). Т.к. выводится весь список записей, через какое-то время все колонки будут задействованы. Желаемый макрос должен срабатывать по кнопке (желатеьно по той же, что и процедура). VladConnГрамотно написать Селект, и дело в шляпе. а можно поподробней? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2012, 21:44 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
medea_blessVladConnГрамотно написать Селект, и дело в шляпе. а можно поподробней?ХП редактировать можно? Просто не возвращать колонки (правильнее в данном случае называть их полями), в которых нет данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 09:25 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
Я думала об этом варианте, но в таблице, откуда берутся значения, около 200 полей (столбцов) и перечислять их все через Код: sql 1.
не совсем удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 10:13 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
where blabla тут никак не поможет, ибо это отбор записей, а не столбцов. вообще, если у вас такое количество незначащих столбцов, скорее всего неверно спроектирована база, из-за чего теперь вы расплачиваетесь проблемами программирования, ну да ладно. скорее всего тут решалось бы все созданием динамического запроса типа Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 11:18 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
База собирает сведения об ошибках, которые все идут под разными кодами. Поэтому абсолютно все колонки нужны, ибо записи изменяются во временем. По поводу запроса не совсем понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 13:04 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
medea_blessБаза собирает сведения об ошибках, которые все идут под разными кодами.medea_blessПоэтому абсолютно все колонки нужнынет тут причинно-следственно связи. Можно писать все в одну таблицу - распределяя по записям, а не по полям. То есть не абоненткод1код2код3абонент1значениезначениезначениеабонент2значениезначениезначениеабонент2значениезначениезначениеа абоненткодзначениеабонент1код1значениеабонент1код2значениеабонент1код3значениеабонент2код1значениеабонент3код1значениеабонент3код3значение ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 13:11 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
medea_blessПо поводу запроса не совсем понятно.ну так ведь и подробностей нет ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 13:12 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
авторМожно писать все в одну таблицу - распределяя по записям, а не по полям нельзя. Итак начнем сначала. Есть 2 Infopath формы, которые передают информацию в базу. Для короткой справки: Infopath работает только с уже созданными полями SQL. Незаполненным полям присваивается значение NULL. С этих 2 форм в Excel генерируются отчеты по заданным условиям. Например, для данного пользователя посчитать сумму всех ошибок по кодам/типам, общую сумму ошибок; количество листов чертежа с ошибкой данного типа/кода, среднее количество ошибок на лист и т.д. Т.к. полей очень много (около 214) и убрать их нельзя (форма не будет работать если поле не создано в базе), некоторые из них пустые. Вот их по запросу выводить не нужно. Схема работы отчета: 1. выбирается пользователь (с таблиц, привязанных к формам) 2. кликается на кнопку "получить отчет" (подвязана к макросу, вызывающему ХРП) 3. подгружается отчет со всеми записями. Для удобства чтения хотелось бы пустые колонки скрыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 13:23 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
medea_blessС этих 2 форм в Excel генерируются отчеты по заданным условиям. Например, для данного пользователя посчитать сумму всех ошибок по кодам/типам, общую сумму ошибок; количество листов чертежа с ошибкой данного типа/кода, среднее количество ошибок на лист и т.д.А почему бы эти отчеты не генерировать прям в процедуре на сервере? Это гораздо логичнее, в сто раз быстрее и меньше данных передавать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 13:31 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
Отчет там и генерируется. Со всеми полями (колонками), которые и выводятся пустыми. Вот их в Excel быть не должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 13:32 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
medea_blessавторМожно писать все в одну таблицу - распределяя по записям, а не по полям нельзя. Итак начнем сначала. Есть 2 Infopath формы, которые передают информацию в базу. Для короткой справки: Infopath работает только с уже созданными полями SQL. Незаполненным полям присваивается значение NULL. С этих 2 форм в Excel генерируются отчеты по заданным условиям. Например, для данного пользователя посчитать сумму всех ошибок по кодам/типам, общую сумму ошибок; количество листов чертежа с ошибкой данного типа/кода, среднее количество ошибок на лист и т.д. Т.к. полей очень много (около 214) и убрать их нельзя (форма не будет работать если поле не создано в базе), некоторые из них пустые. Вот их по запросу выводить не нужно. Схема работы отчета: 1. выбирается пользователь (с таблиц, привязанных к формам) 2. кликается на кнопку "получить отчет" (подвязана к макросу, вызывающему ХРП) 3. подгружается отчет со всеми записями. Для удобства чтения хотелось бы пустые колонки скрыть. Ну так пройдитесь по колонкам с Код: vbnet 1.
В чем проблема то? Шокеру +1. Весь процесс явно криво настроен. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 13:36 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
Код: vbnet 1.
Найдете вариант, как лучше как передавать инфу с Infopath напрямую в 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.
Первый раз скрывает все верно, но после выбора отчета по следующему исполнителю информация не апдейтится т.е. перечень колонок остается от прежнего пользователя. Есть ли возможность при каждом клике на кнопку сначала все показать, а потом уже скрывать в зависимости от заполненной инфы? Мой вариант не прошел. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 13:55 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
medea_blessОтчет там и генерируется. Со всеми полями (колонками), которые и выводятся пустыми.medea_blessС этих 2 форм в Excel генерируются отчеты по заданным условиям.На сервере генерируется не отчет, как я понимаю, а просто сырые данные, которые передаются в эксель. Отчеты генерируются в экселе, судя по вашим же словам. Я предлагаю генерировать ЭТИ отчеты прямо на сервере. "Например, для данного пользователя посчитать сумму всех ошибок по кодам" Впрочем - да, я углубился, в правильность архитектуры, чем в реальную помощь вам medea_blessЕсть ли возможность при каждом клике на кнопку сначала все показать, а потом уже скрывать в зависимости от заполненной инфы? Почему бы это не делать сразу в цикле: вместо: Код: vbnet 1. 2. 3.
сделать Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 14:48 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
Отчет генерируется на сервере, т.е. все суммы уже посчитаны, а процедура просто вытягивает инфу со view. Но пустые столбцы все равно есть: например пользователь Иванов не сделал ни одной ошибки типа 1.1.1.1 т.е. количество ошибок данного типа - 0. Зато сделал ошибку 1.1.1.2. Но вью содержит инфу по всем пользователям, а не только по Иванову и в Excel передается полный перечень полей. Что касается макроса, то проблема не решена. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 15:29 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
medea_blessЧто касается макроса, то проблема не решена.можно еще раз полный текст с изменениями. ЗЫ: после HideIt = False очень логично разместить Exit For, ибо зачем мучать столбец дальше, если уже все ясно ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 15:33 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
А вообще, что значит "не прошел"? Ошибку выдает? Скрывает все столбцы? Не скрывает ни одного столбца? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 15:34 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
как-то поправила, но срабатывает только по повторному нажатию на кнопку. + я поместила его в макрос вызова процедуры и теперь при загрузке Excel выглядит страшновато :) Собственно код: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 17:09 |
|
Скрыть пустые колонки после выполнения процедуры
|
|||
---|---|---|---|
#18+
Ой, ну зачем же столбец сто раз туда-сюда дергать в цикле? Я же по другому предлагал Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 17:17 |
|
|
start [/forum/topic.php?fid=60&fpage=68&tid=2157397]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 155ms |
0 / 0 |