powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
6 сообщений из 6, страница 1 из 1
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
    #35850677
Бока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Команда PowerBuilder-а <Имя DataWindow>.update генерирут команду UPDATE без префикса "N" перед значением стрингового поля типа NVARCHAR в операнде SET для SQL Server-а.
Если во введенном пользователем для этого поля значениии есть определенные спецсимволы, то введенное значение после апдейтирования воспроизводится неправильно, смотрите ниже пример:

BEGIN TRAN
UPDATE A SET V1='Ә۝Ŏ';
COMMIT TRAN

(1 row(s) affected)
-------------------------------------


SELECT * FROM A

V1
----------
??O

(1 row(s) affected)
---------------------------------------


BEGIN TRAN
UPDATE A SET V1= N 'Ә۝Ŏ';
COMMIT TRAN

(1 row(s) affected)
--------------------------------------------


SELECT * FROM A

V1
----------
Ә۝Ŏ

(1 row(s) affected)


Вопрос : как решить вышеописанную проблемы при использовании PowerBuilder команды <Имя DataWindow>.update ??
...
Рейтинг: 0 / 0
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
    #35865526
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я просю просченья, давненько не брал в руку шашку.
Если правильно помню, есть такой эвент sqlpreview.
Вот там надо Вам пымать параметр sqlsyntax, и в нем на это POLE, что должно быть Nvarchar, навесить convert(nvarchar(200),POLE).
Нетривиально, но решаемо.
Не судите строго, если что не так.
...
Рейтинг: 0 / 0
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
    #35865573
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На всякий случай в,догонку, цитата из HELP
Usage
Some uses for the sqlsyntax argument are:
· Changing the SQL to be executed (you can get the value of sqlsyntax, modify it, and call SetSQLPreview)
...
Рейтинг: 0 / 0
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
    #35870033
Бока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOLCHOZ_POSTEVENTЯ просю просченья, давненько не брал в руку шашку.
Если правильно помню, есть такой эвент sqlpreview.
Вот там надо Вам пымать параметр sqlsyntax, и в нем на это POLE, что должно быть Nvarchar, навесить convert(nvarchar(200),POLE).
Нетривиально, но решаемо.
Не судите строго, если что не так.Спасибо, это тоже буду пробовать.

Но вот, что выяснилось в результате экспериментов:

- если операнд DisableBind параметра DbParm транзакции неопределен, т.е. по умолчанию равен 0 (нулю), то команда <Имя DataWindow>.Update вносит любые спец-символы в поля типа NVARCHAR в SQL Server-е нормально, но зато тогда падает с ошибкой по синтаксису такой SELECT
SELECT count('x') Into :i_count FROM Ltable L
WHERE L.UNIT_ID = :i_uid
AND L.NAME = :s_name
AND L.CID <> :l_cid
AND L.EID >= 0
AND NOT EXISTS ( SELECT 'X' FROM SLtable SL
WHERE SL.ITEM_ID1 = :l_cid
AND SL.TABLE_ID = 388 )
USING tr_id;

хотя нормально выполняется такой SELECT
SELECT count('x') Into :i_count FROM Ltable L
WHERE L.UNIT_ID = :i_uid
AND L.NAME = :s_name
AND L.CID <> :l_cid
AND L.EID >= 0
AND NOT EXISTS ( SELECT 'X' FROM SLtable SL
WHERE SL.ITEM_ID1 = 0 // В этой строке отличие
AND SL.TABLE_ID = 388 )
USING tr_id;


- если же операнд DisableBind параметра DbParm транзакции определен равным 1 (единице), то тогда оба выиеуказанных SELECTа нормально работают, но зато команда <Имя DataWindow>.Update вносит любые спец-символы в поля типа NVARCHAR в SQL Server-е неправильно .

Может быть у кого-нибудь есть какие-либо соображения по этому поводу ?
...
Рейтинг: 0 / 0
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
    #35872386
Бока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOLCHOZ_POSTEVENTНа всякий случай в,догонку, цитата из HELP
Usage
Some uses for the sqlsyntax argument are:
· Changing the SQL to be executed (you can get the value of sqlsyntax, modify it, and call SetSQLPreview)Мы проверили и пришли к выводу, что евент SetSQLPreview только показывает сгенерированную SQL-команду, но при выполнении команды <Имя DataWindow>.Update, показанная в евенте SetSQLPreview SQL-команда не используется.
...
Рейтинг: 0 / 0
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
    #35890505
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я опять-таки просю просченья,
SetSQLPreview, всё-таки не евент, а функция для корректировки того SQLя, который DW пошлёт базе.
То, что предстоит подправить ловится в евенте sqlpreview.
А если SQL из скрипта не проходит, сделайте datawindow малюсенькое с нормальным SQLем.
Но перед этим попробуйте tr_id.autocommit=true.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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