Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: CL | DM;

Вниз

uniqueidentifier и UpdateSQL   Найти похожие ветки 

 
Gandrey ©   (2003-12-08 16:22) [0]

Проблема с полями типа uniqueidentifier при работе с MSSQL посредством BDE
когда запрашиваются поля типа uniqueidentifier , то Query воспринимает их как поля типа Tbyte.
Модификацию таблиц я проивожу посредством UpdateSQL, например
Update table1 set
Field1=:Field1
where id=:old_id

на сервер в результате летит (смотрел в профайлере) что то вроде такого
Update table1 set
Field1=12
where id=0x9ac01d9356c9844da03803fc6e8a9cd6
а по идее должно выглядеть так
Update table1 set
Field1=12
where id="{931DC09A-C956-4D84-A038-03FC6E8A9CD6}"

Подскажите пожалуйста как с этим бороться


 
sniknik ©   (2003-12-08 16:32) [1]

> id=0x9ac01d9356c9844da03803fc6e8a9cd6
это есть правильно, т.ю. uniqueidentifier это
TGUID = packed record
D1: Longword;
D2: Word;
D3: Word;
D4: array[0..7] of Byte;
end;
а не строка как может показатся.


 
Gandrey ©   (2003-12-08 17:23) [2]

исправление формулировки

update я делаю хранимой процедурой и в modifySQL компонента UpdateSQL у меня записано
exec SpUpdate_rah
( :OLD_N_R_Rah_id_rah
:V_U_Rah_KodRah,
:V_U_Rah_ImRah,
:V_U_Rah_TPAX)
на сервер прилетает
exec SpUpdate_rah
( 0x9ac01d9356c9844da03803fc6e8a9cd6
"12121",
"fghf",
2.0)
помгите мастера преобразовать Tbyte в uniqueidentifier


 
sniknik ©   (2003-12-08 17:41) [3]

проба номер 2.
заглянем в BOL

uniqueidentifier constants

uniqueidentifier constants are a string representing a globally unique identifier (GUID) value. They can be specified in either a character or binary string format. Both of these examples specify the same GUID:

"6F9619FF-8B86-D011-B42D-00C04FC964FF"
0xff19966f868b11d0b42d00c04fc964ff

перевод последней строки оба этих примера определяют один и тотже GUID(значение).

своими словами: на сервер прилетает правильно, в чем проблема?

p.s. если уж приспичило чтонибудь преобразовать то за это в MSSQL отвечают функции CAST & CONVERT.


 
Gandrey ©   (2003-12-09 09:39) [4]

Спасибо, помогло разобраться в проблеме


 
tchn ©   (2003-12-09 13:00) [5]

да делов-то? нужно завести поля таблицы, и автоинкрементному полю явно указать значения:
AutoGenerateValue = arAutoInc
FieldKind = fkInternalCalc
тогда все заработает как часы, и не нужно городить ничего


 
Пётр   (2003-12-09 14:30) [6]

uniqueidentifier - большая гадость. Работать с ним очень сложно, поэтому везде, где нужно, преобразую его в varchar(38) и всё работает нормально. С параметрами тоже нет ни каких проблем, если uniqueidentifier передавать просто, как строку.


 
Gandrey ©   (2003-12-10 19:00) [7]

В адо с этим типом никаких проблем нет ...
А вот в BDE приходится извращаться

что касаемо uniqueidentifier (Может кому интересно)
нарыл в SQL функцию
declare @b varbinary(16)
set @b=0x9ac01d9356c9844da03803fc6e8a9cd6
master.dbo.fn_varbintohexstr(@b)
возращает "0x9ac01d9356c9844da03803fc6e8a9cd6"



Страницы: 1 вся ветка

Текущий архив: 2004.01.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
14-25612
Doc
2003-12-14 19:52
2004.01.09
Уровень преподователей по информатике


14-25509
РВА
2003-12-16 13:27
2004.01.09
Подключение к сети


3-25263
3LoBit
2003-12-08 14:30
2004.01.09
Странное выполнение OnCalcFields в TSQLQuery


8-25457
Raper
2003-09-05 10:02
2004.01.09
Подскажите как проиграть mp3 и в нужный момент остановить его..


1-25281
int64
2003-12-22 13:08
2004.01.09
Как конвертнуть бинарный *.dmf в текстовый формат?