|
|
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
Я как-то никак не могу въехать что к чему. Такое дело, в базу данных сохраняетса dw_1.Object.DataWindow.Syntax (DW Грид) каждый раз когда юзверь открывает репорт, я проверяю изменилась ли процедура для етого репорта в базе данных, т.е. были ли убраны, добавлены колонки, изменён порядок возврата или имена этих колонок в селекте. Eсли нет, гружу репорт в таком виде как его сохранили в последнуй раз. Eсли изменён, делаю абракодабру на базе процедуры строю новое datawindow (шобы не было там всяких invalid column мессаджей и т.д.) a на базе "старого" синтакса окна редактирую layouts. Всё работает как положено, но вот такая закавыка: a. Юзверь сохранил окно с фильтром "association_id <> 99" b. Кто-то изменил процедуру и убрал колонку association_id из селекта. c. перед построением нового окна я сохраняю s_old_filter из старого синтакса d. Строю окно е. Пытаюсь добавить на него s_old_filter IF NOT IsNull(s_s_old_filter) and Len(s_s_old_filter) > 1 THEN i_rc = dw_1.SetFilter(s_filter) //i_rc, -1 не возвращает ... IF i_rc = 1 THEN i_rc = dw_1.Filter() //i_rc, -1 опять не возвращает ... END IF IF i_rc <> 1 THEN MessageBox(This.Title, 'Unable to set Report Filter.', Exclamation!) END IF END IF В ре3ультате юзверь не знает что фильтра там уже нет, хотя если он нажмёт кнопку FILTER с кодом: string s_null setnull(s_null) IF dw_1.SetFilter(s_null) = 1 THEN dw_1.Filter() END IF открываетса expression в котором написано "association_id <> 99" жмём кнопку validate, получаем invalid expression. вообшем ботва. Пробуем s_old_filter = dw_1.Modify('DataWindow.Table.Filter="' + s_old_filter + '"') s_old_filter возвращает "" типа "all good" но вываливаетса datawindow error messagebox с "invalid expression" Как бы мне ето дело поймать, убрать и предупредить. я тут наткнулся на TRY CATCH END TRY что-то типа: try s_filter = dw_1.Modify('DataWindow.Table.Filter="' + s_filter + '"') catch (DWRuntimeError myDWError) end try хотя явно, я понятия пока не имею шо я делаю. Буду благодарен за помошь. спасиба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 19:23 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
Я в аналогичном случае - модификация SQLSelect,Modify или Create(syntax) - сначала провожу все операции на локально доступном datastore. Если в синтаксисе проявляются ошибки - то никаких event-ов y datastore не срабатывает, просто возврат строки с описанием ошибки. А потом можно через Get/SetFullState можно перенести все в datawindow ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 20:08 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
voronkЯ как-то никак не могу въехать что к чему. Пробуем s_old_filter = dw_1.Modify('DataWindow.Table.Filter="' + s_old_filter + '"') s_old_filter возвращает "" типа "all good" но вываливаетса datawindow error messagebox с "invalid expression" Как бы мне ето дело поймать, убрать и предупредить. я тут наткнулся на TRY CATCH END TRY... Не надо никаких TRY CATCH END TRY Попробуй это: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 21:07 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
Филипп, большое спасибо. То что доктор прописал, всё работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 21:25 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
Упс, немного поторопился. /* кондиции: сохранённый фильтр "association_id<>99" в старом окне, в новом окне колонки association_id - НЕТ поэтому и фильтра такого существовать не должно. */ s_filter = старое_окно.Object.DataWindow.Table.Filter .... код, код, код ... .... новое_окно.Modify("DataWindow.NoUserPrompt='yes'") новое_окно_1.Object.DataWindow.Table.Filter = s_filter новое_окно.Modify("DataWindow.NoUserPrompt='no'") Код ошибки не даёт, но добавляет в новое_окно, в проперти filter "association_id<>99". мне надо, если колонка отсутсвует: а. в новое_окно в проперти filter "association_id<>99" не добавлять б. оповестить юзверя, что фильтр "association_id<>99", сохранённый в старое_окно, более не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 22:04 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
voronkEсли изменён, делаю абракодабру на базе процедуры строю новое datawindow (шобы не было там всяких invalid column мессаджей и т.д.) a на базе "старого" синтакса окна редактирую layouts. Всё работает как положено, но вот такая закавыка: a. Юзверь сохранил окно с фильтром "association_id <> 99" b. Кто-то изменил процедуру и убрал колонку association_id из селекта. c. перед построением нового окна я сохраняю s_old_filter из старого синтакса Убрать пункт c. Иначе тебе придёться парсать s_old_filter на предмет наличия колонок упомянутых в нём в новом синтаксе, что есть неблагодарная (и подверженная ошибкам) задача... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 23:49 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
Не могу комрад. Прийдётса что-то выкручивать. У клиентов есть по сотне одинаково-сохранённых репортов но с разными фильтрами и сортами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 23:57 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
Ну я думаю, что для начала проверить количество колонок, чтобы найти явное несоответствие или попробовать сделать sql-запрос извлеченный из dw (как раз ошибка колонки и вылезет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 08:57 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
voronkНе могу комрад. Прийдётса что-то выкручивать. У клиентов есть по сотне одинаково-сохранённых репортов но с разными фильтрами и сортами. Странно, в 9.0.3.8614 SetFilter ошибку возвращает. Выражение можно проверить при помощи Find или Describe('Evaluate... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 18:14 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
9.0.2 7610 нет. как можно проверить фильтр типа: isNull( tax_id ) and amount >= 1000 and (upper(Right(first_name, 2)) = 'TH' or UPPER(left( first_name, 5)) <> 'MICHA') например если колонок tax_id, first_name больше нет. Oleg1 Странно, в 9.0.3.8614 SetFilter ошибку возвращает. Выражение можно проверить при помощи Find или Describe ('Evaluate... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 23:09 |
|
||
|
Ребята подскажите с TRY CATCH END TRY плиз.
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. 11 билдер ошибку возврашает. Так как с девятки мы будем прыгать сразу на него, то и вопрос больше не стоит. ПеСе 11, заколбасил нашу аппликацию через .NET WEB Forms Application Wizard на тестировочный сервак ... работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 17:16 |
|
||
|
|

start [/forum/topic.php?fid=15&fpage=66&tid=1337556]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
21ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 288ms |

| 0 / 0 |
