подключение к БД Галактики при помощи C++Builder
Модераторы: m0p3e, edward_K, Модераторы
-
- Сообщения: 19
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Хабаровский край СП "Аркаим"
- Контактная информация:
подключение к БД Галактики при помощи C++Builder
Ребята кто нибудь знает, может сталкивался как посредству Buildera подключиться к галактической базе (через BDE вроде как все нормально проходит, но не доганяет значения в поле nRec (в галактике формат поля COMP, а Builder его не догоняет))может кто знает?
Re: подключение к БД Галактики при помощи C++Builder
Вообще-то поиском можно попользоваться, обсуждалось уже когда-то вроде бы
А нреки мне когда-то посоветовали доставать так:
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;
Вот так
А нреки мне когда-то посоветовали доставать так:
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;
Вот так
Особых примечаний нет
-
- Сообщения: 19
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Хабаровский край СП "Аркаим"
- Контактная информация:
Re: подключение к БД Галактики при помощи C++Builder
Попробывал как ты написал, но чего то он на начинает ругаться на, что после слова SELECT стоит (CONVERT и т.д.). Может поподробней напишешь (какой сервер баз данных используешь? у меня Pervasiv 7.0) ???
Re: подключение к БД Галактики при помощи C++Builder
У нас Pervasive 2000.
Читай доку про SQL к первасиву.
И напиши запрос свой и как ругается -- мб сразу будет ясно где ошибку искать.
Тестить запросы можно в первасивном контроль центре.
Читай доку про SQL к первасиву.
И напиши запрос свой и как ругается -- мб сразу будет ясно где ошибку искать.
Тестить запросы можно в первасивном контроль центре.
Особых примечаний нет
-
- Местный житель
- Сообщения: 517
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск Новосибирск
- Контактная информация:
Re: подключение к БД Галактики при помощи C++Builder
может правильнее использовать спец.компоненты доступа к первасиву ?
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
-
- Сообщения: 19
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Хабаровский край СП "Аркаим"
- Контактная информация:
Re: подключение к БД Галактики при помощи C++Builder
Большое спасибо все получилось связи работают под Pervasive 2000.
Re: подключение к БД Галактики при помощи C++Builder
можно через АДО - ОДБСи Провайдер
единственное чть не нравится - нужно все поля типа Comp (в Билдере TFloatField) перевести в TVariantField, тогда все работает и добавить и т.п.
единственное чть не нравится - нужно все поля типа Comp (в Билдере TFloatField) перевести в TVariantField, тогда все работает и добавить и т.п.
Re: подключение к БД Галактики при помощи C++Builder
Дополнение к посту выше от Dmitry
нужно руками!
1 в объект TADODataSet добавить необходимые поля
2 удалить поля которые в галке типа Comp - в бормане TFloatField
3 вместо них добавить одноименные но типа TVariantField
удачи
нужно руками!
1 в объект TADODataSet добавить необходимые поля
2 удалить поля которые в галке типа Comp - в бормане TFloatField
3 вместо них добавить одноименные но типа TVariantField
удачи
Re: подключение к БД Галактики при помощи C++Builder
Гениальная идея - добавить "m" в конце записи.
Я столько мучился с конвертацией comp, но так и не врубился, зачем BDE , конветрированное мной в строку поле, преобразует в Float.
Большое спасибо LightImage.
Я столько мучился с конвертацией comp, но так и не врубился, зачем BDE , конветрированное мной в строку поле, преобразует в Float.
Большое спасибо LightImage.
Re: подключение к БД Галактики при помощи C++Builder
Можно боле простой вопрос -
как сравнить даты (Pervasiv2000 +CBuilder+PDAC) -
выражения вида
katsopr.dsopr = '01.01.90'
katsopr.dsopr = '01/01/90' не проходят.
SQL ругается :-[
как сравнить даты (Pervasiv2000 +CBuilder+PDAC) -
выражения вида
katsopr.dsopr = '01.01.90'
katsopr.dsopr = '01/01/90' не проходят.
SQL ругается :-[
Re: подключение к БД Галактики при помощи C++Builder
ага, все
надо '1990-01-01' =)
надо '1990-01-01' =)
Про даты
2 АлексейН
В первасивном хелпе в указателе смотри Date arithmetic
2 IgorA
Идея не моя, меня надо благодарить только за то что я тут лишний раз её повторил =)
В первасивном хелпе в указателе смотри Date arithmetic
2 IgorA
Идея не моя, меня надо благодарить только за то что я тут лишний раз её повторил =)
Особых примечаний нет
Re: Про даты
Через dbExpress (см. Delphi6-7 а на Pervasive драйвер для этого) кто нибудь ходил к БД Галактики?
Как прописать файлы примеров из DEMODATA(т.е. те, что поставляются в составе Pervasive) в BDE Administrator ?
Намечаю поработать с базами PSQL в BuilderC++. Жму правой кнопкой на слове Databases->New...
Появляется окошечко New Database Alias с предложением выбрать Database Driver Name. Какое выбирать ?
Намечаю поработать с базами PSQL в BuilderC++. Жму правой кнопкой на слове Databases->New...
Появляется окошечко New Database Alias с предложением выбрать Database Driver Name. Какое выбирать ?
-
- Постоянный гость
- Сообщения: 70
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Украина ИВЦ при Ингулецком ГОКе
- Контактная информация:
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, поэтому приводить код преобразования не буду, так как это не по теме. Если кому интересно то приведу в этой ветке...
Я по привычке работаю через 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, поэтому приводить код преобразования не буду, так как это не по теме. Если кому интересно то приведу в этой ветке...