|
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
|
|||
---|---|---|---|
#18+
Команда 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 ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 13:22 |
|
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
|
|||
---|---|---|---|
#18+
Я просю просченья, давненько не брал в руку шашку. Если правильно помню, есть такой эвент sqlpreview. Вот там надо Вам пымать параметр sqlsyntax, и в нем на это POLE, что должно быть Nvarchar, навесить convert(nvarchar(200),POLE). Нетривиально, но решаемо. Не судите строго, если что не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2009, 17:15 |
|
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
|
|||
---|---|---|---|
#18+
На всякий случай в,догонку, цитата из 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) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2009, 17:28 |
|
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
|
|||
---|---|---|---|
#18+
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-е неправильно . Может быть у кого-нибудь есть какие-либо соображения по этому поводу ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2009, 18:53 |
|
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
|
|||
---|---|---|---|
#18+
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-команда не используется. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 18:23 |
|
Проблема команды <Имя DataWindow>.update стрингового поля типа NVARCHAR в SQL Server
|
|||
---|---|---|---|
#18+
Я опять-таки просю просченья, SetSQLPreview, всё-таки не евент, а функция для корректировки того SQLя, который DW пошлёт базе. То, что предстоит подправить ловится в евенте sqlpreview. А если SQL из скрипта не проходит, сделайте datawindow малюсенькое с нормальным SQLем. Но перед этим попробуйте tr_id.autocommit=true. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2009, 13:01 |
|
|
start [/forum/topic.php?fid=15&fpage=35&tid=1336335]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 145ms |
0 / 0 |