![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка сервера. Excel. [D7, XP]
VOPROS © (2006-12-13 09:57:00)Здравствуйте, уважаемые мастера!
Есть БД (FoxPro), ADO. Формирую запрос, результат нужно перекинуть в Excel. У меня все работает (XP, Office2003), на других машинах с 98 и 97 соответственно тоже работает, но на нужном компьютере в программе выходит ошибка: "Ошибка сервера" при перекидывании данных из запроса в Excel. Код на кнопку для Excel следующий:
DBGrid1.DataSource.DataSet.First;
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.WorkBooks.Add(xlWBatWorkSheet);
ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Статданные';
mem := TMemo.Create(Self);
mem.Visible := false;
mem.Parent := Form1;
mem.Clear;
Mem.Lines.Add('Статданные вызовов '+datetostr(DTP_nach.date));
mem.Lines.Add(statusbar1.Panels[0].Text+', '+Statusbar1.Panels[1].Text+', '+Statusbar1.Panels[2].Text);
for col := 0 to DBGrid1.FieldCount-1 do
sline := sline + DBGrid1.Fields[col].DisplayLabel + #9;
mem.Lines.Add(sline);
for row := 0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
begin
sline := '';
for col := 0 to DBGrid1.FieldCount-1 do
sline := sline + DBGrid1.Fields[col].AsString + #9;
oemtoansi(pchar(sline),pchar(sline));
mem.Lines.Add(sline);
DBGrid1.DataSource.DataSet.Next;
end;
ExcelApp.Range['a1'].Font.Bold:=true;
mem.SelectAll;
mem.CopyToClipboard;
ExcelApp.Workbooks[1].WorkSheets['Статданные'].Paste;
ExcelApp.Selection.VerticalAlignment:=xlTop;
ExcelApp.Selection.Borders.Weight:=xlThin;
ExcelApp.ActiveSheet.PageSetup.Orientation := xlLandscape;
for col := 0 to DBGrid1.FieldCount-1 do
ExcelApp.Columns[col+1].ColumnWidth:=15;
ExcelApp.Selection.Wraptext:=true;
ExcelApp.Selection.Wraptext:=true;
ExcelApp.Range['a1','a2'].Wraptext:=false;
ExcelApp.Visible := true;
В чем собака порылась? Очень нужна ваша помощь. Спасибо заранее всем.
VOPROS (2006-12-22 09:38:00) [1]to umbraСпасибо большое, так заработало :) - шаманство, почему такой вариант работает?
umbra (2006-12-15 12:22:00) [2]прошу прощения, ошибочка
ExelApp.Workbooks.OpenText...
VOPROS (2006-12-15 06:37:00) [3]Пробую на другой машине 98 и офис 97 - заругался на PageSetup, комментирую эту строку - работает. Пойду пробовать на той машине, где не работало.
> только что проверил - в экселе97 все данные попадают именно
> в первый столбец
почему-то у меня не попадают - все разложено по столбцам как нужно
> попробуйте сохранить мемо в файл (mem.Lines.SaveToFile('c:
> \test.txt')), а затем открыть этот файл в Экселе
> ExelApp.OpenText(FileName:='C:\test.txt, Origin:=xlWindows,
> Tab:=True);
> Исчезла ошибка в Экселе97?
Спасибо за помощь, но ругается "OpenText not supported"
umbra (2006-12-14 11:09:00) [4]
> данные на всех кроме одного из проверяемых компьютеров (а
> проверялось на 4) попадают куда нужно - в нужные столбцы
только что проверил - в экселе97 все данные попадают именно в первый столбец
umbra (2006-12-14 10:30:00) [5]попробуйте сохранить мемо в файл (
mem.Lines.SaveToFile('c:\test.txt')), а затем открыть этот файл в Экселе
ExelApp.OpenText(FileName:='C:\test.txt, Origin:=xlWindows, Tab:=True);
Исчезла ошибка в Экселе97?
VOPROS (2006-12-14 09:12:00) [6]
> ошибка на какой строке?
не знаю, на моем компьютере с Delphi, никаких ошибок не возникает
> судя по тому, что Вы делаете, все
> данные попадают в первый столбец. Если в мемо есть строки
> длиннее 255 символов, то это и будет источником ошибки.
данные на всех кроме одного из проверяемых компьютеров (а проверялось на 4) попадают куда нужно - в нужные столбцы, не работает программа только на одном стареньком компьютере - вылетает вышеуказанная ошибка
umbra (2006-12-13 12:33:00) [7]ошибка на какой строке? судя по тому, что Вы делаете, все данные попадают в первый столбец. Если в мемо есть строки длиннее 255 символов, то это и будет источником ошибки.
VOPROS (2006-12-13 11:09:00) [8]стоит 97
Megabyte (2006-12-13 10:51:00) [9]А Excel там стоит?