Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
1-25376
J
2003-12-24 23:45
2004.01.09
Как перехватить нажатие Ins...


14-25505
vajo
2003-12-16 16:58
2004.01.09
Delphi + Реестр


14-25540
давыд
2003-12-18 22:02
2004.01.09
Глюк с PPP


3-25258
Andriy Tysh
2003-12-13 13:18
2004.01.09
Подгруппа в группе QuickReport a


3-25215
Patrick
2003-12-11 13:33
2004.01.09
dbGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский