C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Нужно прочитать поля базы данных(InterBase), Нужно прочитать поля базы данных
/Den/
  Отправлено: 07.05.2004, 16:29


Ученик-кочегар

Группа: Участник
Сообщений: 3



Нужно прочитать поля базы данных(InterBase) и вывести их в Excel.
Выводить записи за выбранный пользователем интервал дат в таблицу EXCEL ,таблица проиндекирована по полю DATA.
C экселем более менее понятно ,подскажите как читать поля в базе и "соорудить"выборку по датам.
Заранее благодарен.
olegenty
Отправлено: 11.05.2004, 07:31


Ветеран

Группа: Модератор
Сообщений: 2412



SELECT ... FROM ... WHERE DATE_FIELD <= :DATE_START AND DATE_FIELD>=:DATE_FINISH
** /DEN/
Отправлено: 11.05.2004, 10:32


Не зарегистрирован







А как с помощью OLE читать поля?
olegenty
Отправлено: 11.05.2004, 11:47


Ветеран

Группа: Модератор
Сообщений: 2412



из Interbase? ну посредством ADO, написуя макросы на VBA, естественно, а ты как хотел? smile.gif
/Den/
Отправлено: 11.05.2004, 13:31


Ученик-кочегар

Группа: Участник
Сообщений: 3



Можеш привести описание функций,или пример.
olegenty
Отправлено: 11.05.2004, 13:34


Ветеран

Группа: Модератор
Сообщений: 2412



если я правильно тебя понял, и тебе надо, находясь на листе Excel, вытащить данные из Interbase и разместить их на листе, то могу.
olegenty
Отправлено: 11.05.2004, 14:03


Ветеран

Группа: Модератор
Сообщений: 2412



Вот тебе файл с примером. Там я цепляюсь к файлу ISC4.GDB (в нём все пользователи твои описаны), и выцепляю все логины, которые и выводятся на лист. Макрос прописан на событии нажатия на кнопку. Всё, что тебе надо, чтобы пример заработал, это подставить свою строку коннекта. А для её создания тебе нужен либо ODBC драйвер для Interbase/Firebird/Yaffil, либо OLEDB провайдер. это добро можешь качнуть на IBASE.RU. предполагаю так же, что понятие о том, что такое строка коннекта, ты имеешь.
olegenty
Отправлено: 11.05.2004, 14:07


Ветеран

Группа: Модератор
Сообщений: 2412



упс. вот файл:

User Attached Image Скачать файл
Example.zip


/Den/
Отправлено: 11.05.2004, 15:47


Ученик-кочегар

Группа: Участник
Сообщений: 3



Это не то.Я имел в ввиду вот это
[CODE]
void __fastcall TForm1::bToExcelClick(TObject *Sender)
{


// устанавливаем путь к файлу шаблона
AnsiString sFile = GetCurrentDir()+"\\NaclSf.xlt";

// инициализируем Excel, открываем этот шаблон
try {
App=Variant::GetActiveObject("Excel.Application");
} catch(...) {
try { App=Variant::CreateObject("Excel.Application"); }
catch (...) {
Application->MessageBox("Невозможно открыть Microsoft Excel!"
" Возможно этого приложения на компьютере не установлено.","Ошибка",MB_OK+MB_ICONERROR);
}}
try {
App.OlePropertyGet("WorkBooks").OleProcedure("Open",sFile.c_str(),0,false,1);
Sh=App.OlePropertyGet("WorkSheets",1);
} catch(...) {
Application->MessageBox("Ошибка открытия книги Microsoft Excel!","Ошибка",MB_OK+MB_ICONERROR);
}

// определяем в n количество (строк для ввода в шаблон)
Table1->First();
int n = 0;
while(!Table1->Eof)
{ n++;
Table1->Next();
}

// вставляем в шаблон нужное количество строк
Variant C;
App.OlePropertyGet("WorkSheets",1).OleProcedure("Select");
C=App.OlePropertyGet("Range","ТоварСФ");
C=App.OlePropertyGet("Rows",(int) C.OlePropertyGet("Row")+1);
for(int i=1;i
App.OlePropertyGet("WorkSheets",2).OleProcedure("Select");
C=App.OlePropertyGet("Range","ТоварНАКЛ");
C=App.OlePropertyGet("Rows",(int) C.OlePropertyGet("Row")+1);
for(int i=1;i
// вывод данных из накладной в эти строки
Table1->First();
int i = 0;
while(!Table1->Eof){
//выводим в Excel
toExcel(App,"ТоварНАКЛ",i,Table1KR->Value.c_str());
..........................
...........................
................................
.........................................
i++; Table1->Next();
}
}
//---------------------------------------------------------------------------
[CODE]



почти написал,появился глюк:после вывода шаблон не открывается
или показывает ерунду.(код правильный)

Спасибо за ответ.

Вернуться в Работа с базами данных в C++Builder