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

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Dyoma
Сообщения: 19
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Хабаровский край СП "Аркаим"
Контактная информация:

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

Сообщение Dyoma »

Ребята кто нибудь знает, может сталкивался как посредству Buildera подключиться к галактической базе (через BDE вроде как все нормально проходит, но не доганяет значения в поле nRec (в галактике формат поля COMP, а Builder его не догоняет))может кто знает?
bs
Сообщения: 11
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Саратов
Контактная информация:

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

Сообщение 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)
Особых примечаний нет
Dyoma
Сообщения: 19
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Хабаровский край СП "Аркаим"
Контактная информация:

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

Сообщение Dyoma »

Попробывал как ты написал, но чего то он на начинает ругаться на, что после слова SELECT стоит (CONVERT и т.д.). Может поподробней напишешь (какой сервер баз данных используешь? у меня Pervasiv 7.0) ???
bs
Сообщения: 11
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Саратов
Контактная информация:

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

Сообщение bs »

У нас Pervasive 2000.
Читай доку про SQL к первасиву.
И напиши запрос свой и как ругается -- мб сразу будет ясно где ошибку искать.
Тестить запросы можно в первасивном контроль центре.
Особых примечаний нет
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

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

Сообщение GTHack »

может правильнее использовать спец.компоненты доступа к первасиву ?
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Dyoma
Сообщения: 19
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Хабаровский край СП "Аркаим"
Контактная информация:

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

Сообщение Dyoma »

Большое спасибо все получилось связи работают под Pervasive 2000.
DmitryZ
Сообщения: 1
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение DmitryZ »

можно через АДО - ОДБСи Провайдер

единственное чть не нравится - нужно все поля типа Comp (в Билдере TFloatField) перевести в TVariantField, тогда все работает и добавить и т.п.
Dee
Сообщения: 4
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение Dee »

Дополнение к посту выше от Dmitry

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

удачи
IgorA
Постоянный обитатель
Сообщения: 192
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Красноярск

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

Сообщение IgorA »

Гениальная идея - добавить "m" в конце записи.

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

Большое спасибо LightImage.
АлексейН
Сообщения: 15
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение АлексейН »

Можно боле простой вопрос -
как сравнить даты (Pervasiv2000 +CBuilder+PDAC) -
выражения вида
katsopr.dsopr = '01.01.90'
katsopr.dsopr = '01/01/90' не проходят.
SQL ругается :-[
АлексейН
Сообщения: 15
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение АлексейН »

ага, все

надо '1990-01-01' =)
bs
Сообщения: 11
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Саратов
Контактная информация:

Про даты

Сообщение bs »

2 АлексейН
В первасивном хелпе в указателе смотри Date arithmetic
2 IgorA
Идея не моя, меня надо благодарить только за то что я тут лишний раз её повторил =)
Особых примечаний нет
kircom
Посетитель
Сообщения: 34
Зарегистрирован: 29 мар 2005, 17:49

Re: Про даты

Сообщение kircom »

Через dbExpress (см. Delphi6-7 а на Pervasive драйвер для этого) кто нибудь ходил к БД Галактики?
malor
Сообщения: 19
Зарегистрирован: 16 фев 2006, 20:29
Откуда: Vologda

Сообщение malor »

Как прописать файлы примеров из DEMODATA(т.е. те, что поставляются в составе Pervasive) в BDE Administrator ?
Намечаю поработать с базами PSQL в BuilderC++. Жму правой кнопкой на слове Databases->New...
Появляется окошечко New Database Alias с предложением выбрать Database Driver Name. Какое выбирать ?
igornov
Постоянный гость
Сообщения: 70
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Украина ИВЦ при Ингулецком ГОКе
Контактная информация:

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