Уважаемые программисты вот такие дела!!
При составлении отчета из базы через Query делается запрос и выводится в ексел таким образом...
j:=1;
query1.close;
query1.SQL.Add('select sum(price) as SUMPRICE,Company,GroupTov, AdvrtName,ConstrType from comcon2.db where GroupTov='''+Edit1.Text+''' group by Company, AdvrtName, ConstrType,GroupTov');
query1.Open;
Query1.First;
While not Query1.Eof do
begin
XArr[5]:=Query1.FieldByName('SumPrice').AsString;
XArr[2]:=Query1.FieldByName('AdvrtName').AsString;
XArr[3]:=Query1.FieldByName('ConstrType').AsString;
XArr[4]:=Query1.FieldByName('GroupTov').AsString;
XArr[1]:=Query1.fieldbyName('Company').asstring;
при этом данные выводятся в столбец по такому методу
Name Type Type1 Price
1 a a1 65464
1 a a2 32154
и т.д. надо чтобы было так....
Name
1 Type
a Type1 Price
a1 3245
a2 2151
Посоветовали сделать вложенные циклы на перебор Name, Type, Type1>>>>>
сделала вот так но он не показывает данные хотя видно что цикл происходит прошу помогите в чем дело?????....
срочно надо
const
xlWBATWorksheet = $FFFFEFB9;
var
XL, XLS, XLR, XArr: Variant;
fname,st1:String;
tshor,tempstr:String;
j,i:integer;
begin
XArr:=VarArrayCreate([1,10],varVariant);
XL:=CreateOLEObject('Excel.Application');
XL.WorkBooks.add(xlWBATWorksheet); // добавляет только один лист
XLS:=XL.Workbooks[1].ActiveSheet; // рабочий лист
XL.DisplayAlerts:=false; // отключение сообщений Екселя
XL.visible:=true;
j:=1;
query1.close;
query1.SQL.Add('select sum(price) as SUMPRICE,Company,GroupTov, AdvrtName,ConstrType from comcon2.db where GroupTov='''+Edit1.Text+''' group by Company, AdvrtName, ConstrType,GroupTov');
query1.Open;
Query1.First;
tempstr:=Query1.fieldbyName('Company').asstring;
While not Query1.Eof do
begin
if Query1.fieldbyName('Company').asstring=tempstr then
begin
XArr[2]:=Query1.FieldByName('AdvrtName').AsString;
XArr[3]:=Query1.FieldByName('ConstrType').AsString;
XArr[4]:=Query1.FieldByName('GroupTov').AsString;
XArr[1]:=Query1.fieldbyName('Company').asstring;
Здравствуйте CO0lGirL, Вы писали:
COGL>при этом данные выводятся в столбец по такому методу COGL>Name Type Type1 Price COGL>1 a a1 65464 COGL>1 a a2 32154 COGL>и т.д. надо чтобы было так.... COGL>Name COGL>1 Type COGL> a Type1 Price COGL> a1 3245 COGL> a2 2151
tempstr:='';
tempstr1:='';
While not Query1.Eof do
begin
if Query1.fieldbyName('Company').asstring = tempstr then
begin
// предполагаю что ConstrType и есть Type
if Query1.fieldbyName('ConstrType').asstring = tempstr1 then
begin
XArr[2]:=' '
XArr[3]:=' ';
XArr[4]:=Query1.FieldByName('GroupTov').AsString;
XArr[1]:= ' ';
XArr[5]:=Query1.FieldByName('SumPrice').AsString;
{вставить строку в ексель}
Query1.next;
end
else
begin
tempstr1 := Query1.fieldbyName('ConstrType').asstring;
XArr[1]:=' ';
XArr[2]:=' ';
XArr[3]:=Query1.fieldbyName('ConstrType').asstring;
XArr[4]:= ' ';
XArr[5]:=' ';
{вставить строку в ексель}
end
end
else
begin
tempstr:=Query1.fieldbyName('Company').asstring;
XArr[1]:=Query1.fieldbyName('Company').asstring;
XArr[2]:=Query1.FieldByName('AdvrtName').AsString;
XArr[3]:=' ';// ну или название полей если нужны
XArr[4]:= ' ';
XArr[5]:=' ';
{вставить строку в ексель}
end