Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вот такой вопрос ... (datawindow vs stored procedure) / 4 сообщений из 4, страница 1 из 1
28.07.2005, 21:38
    #33190455
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот такой вопрос ... (datawindow vs stored procedure)
Добрый день.

PB9.0.2 / mssql 2K


1. написал просиджер (select a, b, c from abcdef).
2. на его базе сделал datawindow dw_test.
3. сохранили синакс в DB.

Открываем окно, зовём синтакс из DB.
делаем
dw_1.Create(s_dwsyntax_str, s_errors)

делаем
dw_1.SetTransObject (i_tr_sql)

делаем
dw_1.Retrieve()

Всё в порядке.

Kто-то меняет просиджер на (select a, d, b, f, c, a from abcdef).

я етого не знаю, делаю очередной dw_1.Retrieve(), и ессесвенно имею:
/*
sql code 0
Select Error: column list do not match.
*/

Вопрос:
как бы перед тем как делать Retrieve(), проверить сохранённый синтакс (количество, название, последовательность колонок) против вызываемого просиджер, и если они не соответствуют, STOP, а ещё лучше, подправить синтакс.


Заранее благодарен.
...
Рейтинг: 0 / 0
28.07.2005, 23:17
    #33190488
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот такой вопрос ... (datawindow vs stored procedure)
Создавать datawindow динамически, через SyntaxFromSQL...
...
Рейтинг: 0 / 0
29.07.2005, 19:05
    #33192530
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот такой вопрос ... (datawindow vs stored procedure)
Сенькс, вчера дошурупил, начальство сказало, перекраивать datawindow под просиджер не надо, только остановить, что бы усера не видели угрожаюших месаджей.

Сделал так, может кому пригодитса.

dw_1 = datawindow, То чего они увидят.
l_ds = datastore, То с чем я буду его сравнивать.

Если у кого есть поправки... please.

dw_1.SetRedraw(FALSE)

dw_1.Create(s_dwsyntax_str, s_errors)

IF Len(s_errors) > 0 THEN
dw_1.SetRedraw(TRUE)
MessageBox(This.Title, 'SQLCreate Failed. Errors: ' + s_errors)
RETURN
END IF

l_ds = create datastore

s_procedure = dw_1.Object.DataWindow.Table.procedure

l_pos = Pos(s_procedure, '=')

s_dwsyntax_str = Left(s_procedure, l_pos + 1) + '0'
s_dwsyntax_str = SQLCA.SyntaxFromSQL(s_dwsyntax_str, &
'style(type=grid)', s_errors)

IF Len(s_errors) > 0 THEN
dw_1.SetRedraw(TRUE)
MessageBox('Caution', 'SyntaxFromSQL caused these errors: ' + s_errors)
RETURN
END IF

l_ds.Create(s_dwsyntax_str, s_errors)

IF Len(s_errors) > 0 THEN
dw_1.SetRedraw(TRUE)
Destroy(l_ds)
MessageBox('Caution', 'Create cause these errors: ' + s_errors)
RETURN
END IF

s_columns = dw_1.Object.DataWindow.Table.columns
s_ds_columns = l_ds.Object.DataWindow.Table.columns

destroy l_ds

IF s_columns <> s_ds_columns THEN
dw_1.DataObject = ''
dw_1.SetRedraw(TRUE)
MessageBox(This.title, 'Procedure has been changed, ' + &
report can not be loaded.', Exclamation!)
RETURN
END IF

dw_1.SetRedraw(TRUE)

................................
...
Рейтинг: 0 / 0
01.08.2005, 17:50
    #33194986
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вот такой вопрос ... (datawindow vs stored procedure)
Красиво, но можно гораздо короче, у dw есть стандартное событие dberror, там все это и перехватывается
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вот такой вопрос ... (datawindow vs stored procedure) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]