Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка сервера. 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 там стоит?


Наверх

Титульная страница Поиск, карта сайта Написать письмо