![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GUID из БД
ujhtw © (2006-09-21 11:12:00)Доброго времени суток!
Есть БД на ORACLE. PK всех таблиц есть GUID. Для доступа используется ADO. Необходимо получить PK таблицы в программе.
var
s: string;
begin
...
s := DataSource.DataSet.FieldByName('field').AsString;
...
В s записывается какая-то чушь. Заранее спасибо за ответы.
ujhtw (2006-09-21 12:16:00) [1]Спасибо всем! проблема разрешилась... средствами Oracle. При запросе к полю PK прменялась функция rawtohex(PK) b все ок.
ЮЮ (2006-09-21 12:04:00) [2]
> Приходит VarByteField
И какой у него DataSize?
roottim (2006-09-21 12:03:00) [3]pk - это varchar2?
alex_*** (2006-09-21 11:57:00) [4]есть мнение что дело не в АДО и вот так просто перепрыгивать с одного провайдера на другой на середине проекта из-за такой мелочи не есть правильно
zdm (2006-09-21 11:56:00) [5]а у тебя windows лецинзионный стоит? а он тоже платный :)
ujhtw (2006-09-21 11:55:00) [6]
> попробуй не ADO, а типа ODAC
Так он вроде платный
zdm (2006-09-21 11:54:00) [7]может действительно в самой or-е , провайдере, или её локализации трабла?
попробуй не ADO, а типа ODAC
ujhtw (2006-09-21 11:52:00) [8]
> А какого типа получается, есле в дизайнере поле добавить.
> если не TGUIDField, то бесполезно и неправильно его так
> насильно приводить.
Приходит VarByteField
> НЕ может быть. Я тебе из рабочего кода пример вырвал.
> Правда я не с Oracle, а с MSSQL работаю. Но это не должно,
> по идее, никакой роли играть...
Не работает. Похоже разница все таки есть.
> а что приходит-то? по идее AsString должно работать. Попробуй
> AdoCommand. Через OLEDB лезешь?
Что приходит: абракадабра какая-то. Да через OLE DB.
Ega23 (2006-09-21 11:47:00) [9]
> Я так уже пробовал. Не работает.
> Все время в s приходит что-то, но не то, что нужно.
НЕ может быть. Я тебе из рабочего кода пример вырвал.
Правда я не с Oracle, а с MSSQL работаю. Но это не должно, по идее, никакой роли играть...
zdm (2006-09-21 11:47:00) [10]да, извините, я просто не правильно понял вопрос и погнал не в ту сторону
alex_*** (2006-09-21 11:46:00) [11]а что приходит-то? по идее AsString должно работать. Попробуй AdoCommand. Через OLEDB лезешь?
ЮЮ (2006-09-21 11:46:00) [12]TGUIDField(FieldByName('CLSGUID')).
А какого типа получается, есле в дизайнере поле добавить. если не TGUIDField, то бесполезно и неправильно его так насильно приводить.
Ega23 (2006-09-21 11:45:00) [13]
> ega, я вопрос что-ли не понял?
>
1. GUID - 16 байт.
2. Строковое его представление занимает 38 символов (если с фигурными скобочками)
3. Не путай String и ShortString
ujhtw (2006-09-21 11:41:00) [14]
> var
> s:string;
>
> With adsClasses do
> begin
> s:=TGUIDField(FieldByName('CLSGUID')).AsString;
> ....
> end;
Я так уже пробовал. Не работает.
Все время в s приходит что-то, но не то, что нужно.
Может с настройками ADO не правильно. Или провайдер не тот?
alex_*** (2006-09-21 11:40:00) [15]действительно, не гони.
1 - используется guid длина которго фиксирована и много < 255
2 - длина string ограничивается далеко не 255 Байт
zdm (2006-09-21 11:38:00) [16]ega, я вопрос что-ли не понял?
Ega23 (2006-09-21 11:37:00) [17]
> Если значений больше 255, то в string не поместится
Не гони. LMD.
zdm (2006-09-21 11:34:00) [18]
> Ega23 © (21.09.06 11:31) [5]
>
> > Поэтому тебе нужен не string а типа массив
>
>
> Не гони.
Если значений больше 255, то в string не поместится
Ega23 (2006-09-21 11:31:00) [19]
> Поэтому тебе нужен не string а типа массив
Не гони.
zdm (2006-09-21 11:30:00) [20]погоди, я торможу что-ли? тебе что нужно? получить значения этого поля?так оно ни одно, их много. Поэтому тебе нужен не string а типа массив