Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

uniqueidentifier и UpdateSQL [D7, MSSQL]


Gandrey ©   (2003-12-08 16:22:00) 

Проблема с полями типа 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}"

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


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

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

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


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

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


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

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


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

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


sniknik   (2003-12-08 17:41:00) [5]

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

uniqueidentifierconstants

uniqueidentifierconstants 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-08 17:23:00) [6]

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

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 16:32:00) [7]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо