Страница 1 из 1

подключение к БД Галактики при помощи C++Builder

Добавлено: 19 фев 2003, 11:01
Dyoma
Ребята кто нибудь знает, может сталкивался как посредству Buildera подключиться к галактической базе (через BDE вроде как все нормально проходит, но не доганяет значения в поле nRec (в галактике формат поля COMP, а Builder его не догоняет))может кто знает?

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 19 фев 2003, 12:07
bs
Вообще-то поиском можно попользоваться, обсуждалось уже когда-то вроде бы
А нреки мне когда-то посоветовали доставать так:
void __fastcall TForm_SubdivChoice::BtnSubdivOKClick(TObject *Sender)
{
retv.ChosenDepName = Query1->FieldByName("name")->AsString;
Query1->Close();
Query1->SQL->Text = "select CONVERT(NRec, SQL_CHAR)+'m' "
"from katpodr where name='"
+ retv.ChosenDepName + "'";
Query1->Open();
retv.ChosenDepNrec = Query1->Fields->Fields[0]->AsString;
retv.ChosenDepNrec.SetLength(retv.ChosenDepNrec.Length()-1);
}
Примечание: поле retv класса TForm_SubdivChoice у меня объявлено так:
struct myst {
AnsiString ChosenDepNrec, // Nrec (галактический) выбранного подразделения
ChosenDepName; // Имя выбранного подразделения
} retv;
Вот так 8)

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 20 фев 2003, 05:00
Dyoma
Попробывал как ты написал, но чего то он на начинает ругаться на, что после слова SELECT стоит (CONVERT и т.д.). Может поподробней напишешь (какой сервер баз данных используешь? у меня Pervasiv 7.0) ???

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 20 фев 2003, 15:18
bs
У нас Pervasive 2000.
Читай доку про SQL к первасиву.
И напиши запрос свой и как ругается -- мб сразу будет ясно где ошибку искать.
Тестить запросы можно в первасивном контроль центре.

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 21 фев 2003, 12:33
GTHack
может правильнее использовать спец.компоненты доступа к первасиву ?

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 25 фев 2003, 09:13
Dyoma
Большое спасибо все получилось связи работают под Pervasive 2000.

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 08 мар 2003, 00:22
DmitryZ
можно через АДО - ОДБСи Провайдер

единственное чть не нравится - нужно все поля типа Comp (в Билдере TFloatField) перевести в TVariantField, тогда все работает и добавить и т.п.

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 28 мар 2003, 20:19
Dee
Дополнение к посту выше от Dmitry

нужно руками!
1 в объект TADODataSet добавить необходимые поля
2 удалить поля которые в галке типа Comp - в бормане TFloatField
3 вместо них добавить одноименные но типа TVariantField

удачи

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 22 май 2003, 10:04
IgorA
Гениальная идея - добавить "m" в конце записи.

Я столько мучился с конвертацией comp, но так и не врубился, зачем BDE , конветрированное мной в строку поле, преобразует в Float.

Большое спасибо LightImage.

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 26 май 2003, 13:08
АлексейН
Можно боле простой вопрос -
как сравнить даты (Pervasiv2000 +CBuilder+PDAC) -
выражения вида
katsopr.dsopr = '01.01.90'
katsopr.dsopr = '01/01/90' не проходят.
SQL ругается :-[

Re: подключение к БД Галактики при помощи C++Builder

Добавлено: 26 май 2003, 14:10
АлексейН
ага, все

надо '1990-01-01' =)

Про даты

Добавлено: 26 май 2003, 15:13
bs
2 АлексейН
В первасивном хелпе в указателе смотри Date arithmetic
2 IgorA
Идея не моя, меня надо благодарить только за то что я тут лишний раз её повторил =)

Re: Про даты

Добавлено: 11 июл 2003, 18:33
kircom
Через dbExpress (см. Delphi6-7 а на Pervasive драйвер для этого) кто нибудь ходил к БД Галактики?

Добавлено: 01 янв 2007, 19:49
malor
Как прописать файлы примеров из DEMODATA(т.е. те, что поставляются в составе Pervasive) в BDE Administrator ?
Намечаю поработать с базами PSQL в BuilderC++. Жму правой кнопкой на слове Databases->New...
Появляется окошечко New Database Alias с предложением выбрать Database Driver Name. Какое выбирать ?

Добавлено: 05 янв 2007, 15:26
igornov
Hi!

Я по привычке работаю через BDE... и естественно была проблема с
отображением и использованием nrec-ков.

Одним из решений было создать в MS SQL пользовательскую функцию:

CREATE FUNCTION dbo.bi_(@nrec binary(8))
RETURNS varchar(18) AS
BEGIN
declare @str varchar(18)
exec master..xp_varbintohexstr @nrec, @str out
return @str
END

и дать права execute на xp_varbintohexstr (Extended) роли public.

затем все нужные поля с nrec-ами вызывать в запросе как

select dbo.bi_(f$nrec) from таблица...


Вторым решением это преобразование tbytesfield в Builder-е... (это немного сложнее), но я на самом деле использую Delphi, поэтому приводить код преобразования не буду, так как это не по теме. Если кому интересно то приведу в этой ветке...