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

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

GUID из БД


Страницы:   1 2

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 а типа массив


Страницы:   1 2

Наверх

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