![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
экспорт из IBQuery в Excel [D6, D7, IB6.x]
merko$ © (2007-03-05 09:02:00)Уважаемые Мастера, поднимаю опять старую тему т.к. с вопросом не разобрался. Подскажите пожалуйста как правильно сделать цикл, чтоб результат запроса IBQuery экспортировался весь в Excel, (т.е. все записи), а не только первая запись?
Заранее благодарю!
Пробовал сделать так но не получается
var
i:integer;
begin
with IBQuery1 do while not Eof do
ExcelWorksheet1.Cells.Item[2+i,3].Value:=fOtRem.IBQuery1.FieldValues['DATA_REM'];
Next; Inc(i);
YurikGL (2007-03-05 20:00:00) [1]Пример экспорта в Excel через OLE, XML, ADO и CVS.
http://kladovka.net.ru/index.cgi?pid=board&rid=363
Krants (2007-03-05 13:04:00) [2]Почему ConnectTo, Disconnect?, а где стандартные Create, Close?
И как может экспорт происходить еще не в созданный файл?
merko$ (2007-03-05 10:46:00) [3]Но если я таким же образом вывожу данные из IBTable, то все работает
ЮЮ (2007-03-05 10:38:00) [4]Это, похоже, вопрос не по БД, а по серверу Excel. (боюсь, что и безо всякого вывода из БД должно всё повиснуть с таким количеством ConnectTo/ConnectTo :). Сорри, здесь я не спец и этим не пользуюсь.
merko$ (2007-03-05 10:09:00) [5]procedure TfOtRem.Button2Click(Sender: TObject);
var
FileName:OleVariant;
i:integer;
begin
with IBQuery1 do
while not Eof do begin
ExcelWorksheet1.Cells.Item[2+i,3].Value:=fOtRem.IBQuery1.FieldValues['DATA_REM'];
Next;
Inc(i);
end;
FileName:=OpenDialog1.FileName;
ExcelApplication1.Connect;
if ExcelApplication1.Workbooks.Count=0 then
ExcelApplication1.Workbooks.Add(FileName,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.ActiveSheet as ExcelWorkSheet);
ExcelApplication1.Visible[0]:=true;
ExcelWorksheet1.Disconnect;
ExcelWorkbook1.Disconnect;
ExcelApplication1.Disconnect;
end;
end.
ЮЮ (2007-03-05 10:06:00) [6]Все равно не работает. Открывается Excel и виснет и Excel и приложение
Именно так должно было вести себя приложение с твоим кодом, а говоришь - работало :)
Delphi пишет:
[Warning] Unit16.pas(259): Variable 'i' might not have been initialized
И я о том же - Delphi пишет, а ты не реагируешь. Следует установить начальное значение перед использованием.
Приведи свой код целиком. И с заголовеом метода (процедуры)
merko$ (2007-03-05 09:57:00) [7]Delphi пишет:
[Warning] Unit16.pas(259): Variable 'i' might not have been initialized
merko$ (2007-03-05 09:54:00) [8]Все равно не работает. Открывается Excel и виснет и Excel и приложение
ЮЮ (2007-03-05 09:39:00) [9]у тебя вообще нет ни выхода из цикла, не перемещения по датасету:
with IBQuery1 do
while not Eof do begin
ExcelWorksheet1.Cells.Item[2+i,3].Value:=fOtRem.IBQuery1.FieldValues['DATA_REM'];
Next;
Inc(i);
end;
merko$ (2007-03-05 09:32:00) [10]Если я пишу
ExcelWorksheet1.Cells.Item[2+i,3].Value:=fOtRem.IBQuery1.FieldValues['DATA_REM'];
то выводится текущая запись.
А мне нужно чтобы вываливались все записи из IBQuery в Excel, но ниже приведенный код не работает.
var
i:integer;
begin
with IBQuery1 do while not Eof do
ExcelWorksheet1.Cells.Item[2+i,3].Value:=fOtRem.IBQuery1.FieldValues['DATA_REM'];
Next; Inc(i);
ЮЮ (2007-03-05 09:24:00) [11]Что именно не получается? Нормально оформит код? Избавиться от сообщений компилятора, обнаруживших кучу "логических" ошибок? Понять почему всё зависло? Или что ещё?