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

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


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