![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод значений в Excel [D6, IB6.x]
Jaxtor © (2003-03-24 11:40:00)Уважаемые мастера!
У меня не получается составить алгоритм для одной прораммы.
Суть заключается в том, что нужно вывести в файл Excel
цена1,цена2,цена3, дилер1,дилер2,дилер 3 и строку
адреса и состояние склада.
var Columns:=TStringList.Create;
ExcelCol:=TExcelColForm.Create(Application);
i:=ExcelCol.ShowModal-1;
if i>0 then
begin
Columns:=TStringList.Create;
if (i and 1)>0 then Columns.Add("Price1");
if (i and 2)>0 then Columns.Add("Price2");
if (i and 4)>0 then Columns.Add("Price3");
if (i and 8)>0 then Columns.Add("Dealer1");
if (i and 16)>0 then Columns.Add("Dealer2");
if (i and 32)>0 then Columns.Add("Dealer3");
if (i and 64)>0 then Columns.Add("Address");
if (i and 128)>0 then Columns.Add("Stock");
Excel:=CreateOleObject("Excel.Application");
while not EOF do //вставлям данные; EOF - конец набора данных
//qrProd1
begin
Inc(Row); //следующий Excel ряд
// вывод значений для определенного ряда PN, Product, Waranty
Excel.ActiveSheet.Cells[Row,11].Value:=FieldByName("PN").AsString;
Excel.ActiveSheet.Cells[Row,12].Value:=FieldByName("Product").AsString;
Excel.ActiveSheet.Cells[Row,13].Value:=FieldByName("Waranty").AsString;
for i:=0 to (Columns.Count-1) do begin
// запись значений для определенного ряда Price1,
//Price2, //Price3, Dealer1, Dealer2, Dealer3, Address, Stock
// из набора данных qrProd1
// i - это сдвиг ячейки
// Если выбраны цены:
Excel.ActiveSheet.Columns[14+i].ColumnWidth:=10;
Excel.ActiveSheet.Cells[Row,14+i].Value:=FormatFloat("0.00",FieldByName(Columns[i]).asFloat);
Excel.ActiveSheet.Cells[Row,14+i].Value:=" http://www.xxxxxx.xx/index.phtml?WFi=19&WFgrup="+FieldByName("ProdGrID").AsString+"&WFw=ProdID="+FieldByName("ProdID").AsString;
//Если вместе с ценами выбран и склад
//поиск у вендоров определенной позиции
dmTsn.qrVenStSearch.ParamByName("ProdID").AsString:=FieldByName("ProdID").AsString;
dmTsn.qrVenStSearch.Open;
// запись значений для определенного ряда (состояние склада)
Excel.ActiveSheet.Cells[Row,14+i].Value:=dmTsn.qrVenStSearch.FieldByName("State").AsString;
dmTsn.qrVenStSearch.Close;
end;//for i
Next;
end;// //while not EOF
Соловьев (2003-03-24 12:09:00) [1]Т.е. ты решил что мы рассмотрим твой код сами, а тебе лень это сделать? Так никогда не научишся...
ИМХО, не нужно этот цыкл
> for i:=0 to (Columns.Count-1) do begin
сделай как
> // вывод значений для определенного ряда PN, Product, Waranty
Jaxtor (2003-03-24 12:02:00) [2]Да, поля смещены....
Соловьев (2003-03-24 11:55:00) [3]
> Не правильно данные в Excele показывает.
Это как понимать? смещены поля или что?
Jaxtor (2003-03-24 11:53:00) [4]Не правильно данные в Excele показывает.
Соловьев (2003-03-24 11:51:00) [5]http://www.delphikingdom.com/helloworld/excelsm.htm
> Да тут все работает только нужно было добавить строку адреса
>
> и состояние склада.
А в чем трабл? Ошибку выдает или что?
Jaxtor (2003-03-24 11:46:00) [6]Да тут все работает только нужно было добавить строку адреса
и состояние склада.
Wellslava (2003-03-24 11:45:00) [7]я использую одну библиотечку SMExport... там все очень хорошо реализовано и в Exel и в Word и др.