Страница 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;
Вот так
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, поэтому приводить код преобразования не буду, так как это не по теме. Если кому интересно то приведу в этой ветке...