Текущий архив: 2004.10.24;
Скачать: CL | DM;
ВнизПроблема с формированием отчета Найти похожие ветки
← →
Jiny (2004-09-25 11:44) [0]1 вопрос : при запуске данного отчета на локальной базе все нормально, но стоит подключиться к удаленному IP, после второго захода на запрос - выдает ошибку : «Dynamic SQL error : SQL error code = -104, user name required”
Хотя трассировал код, база, на которую смотрит компонент IBquery – connected, следовательно,
логин и пароль давно одобрен сервером.
2 вопрос : кот-нить может выслать инфу по оформлению Excel документа через OLE, т.к. то что я нашел в инете, не очень мне помогло, С экспортом связался недавно, так что, простите за безграмотность.
procedure TFrmAnal_klDocObor.BtnExcelClick(Sender: TObject);
const TmpFinalJrn: array [0..5] of string=("FP1_","FR1_","FrFil1_","Spi1_","FP2_","FR2_");
var
TmpDateFilter,TmpDateTitle,TmpKlFilter,tmpKlTitle,TmpKatFilter,TmpKatTitle,TmpUSERFilter,TmpUserTitle,tmpSelFields: String;
i,j,Jrn,tmpSer,tmpRepRecs: Integer;
xl: variant;
begin
{Поля учавствующие в отчете}
tmpSelFields:="";
for i:=0 to lvFields.Items.Count-1 do
begin
If lvFields.Checked[i]=true then
begin
tmpSelFields:=tmpSelFields+tmpFieldArr[i]+","; //данные из глобального массива, где загнаны названия полей
end;
end;
If tmpSelFields<>"" then
tmpSelFields:=Copy(TmpSelFields,1,length(TmpSelFields)-1);
{Категории, учавствующие в отчете}
for i:=0 to lvKat.Items.Count-1 do
begin
If lvKat.Checked[i]=true then
begin
TmpKatFilter:=TmpKatFilter+" kat="+inttostr(tmpKatNum[i])+" or ";
end;
end;
If TmpKatFilter<>"" then
TmpKatFilter:=" and ("+Copy(TmpKatFilter,1,length(TmpKatFilter)-4)+") ";
{Установка фильтра по дате}
Case rgFilter.ItemIndex of
0: begin
TmpDateFilter:=" and data_sd between """+DateToSTr(dEdtFrom.date)+""" and """+DateToSTr(dEdtTo.date)+"""";
TmpDateTitle:="За период с "+DateToSTr(dEdtFrom.date)+" по "+DateToSTr(dEdtTo.date)+";";
end;
1: begin
TmpDateFilter:=" and Extract(month from data_sd)="+IntToSTr(cmbMonth.ItemIndex+1)+" and Extract(year from data_sd)="+IntToSTr(sEdtYearM.AsInteger);
TmpDateTitle:="За "+cmbMonth.Text+" "+inttostr(sEdtYearM.AsInteger)+" г.";
end;
2: begin
TmpDateFilter:=" and Extract(year from data_sd)="+IntToSTr(sEdtYear.AsInteger);
TmpDateTitle:="За "+inttostr(sEdtYearM.AsInteger)+" г.";
end;
3: begin
TmpDateFilter:="";
TmpDateTitle:="За весь период";
end;
end;
{Фильтр по контрагенту}
if LblKlName.Tag>0 then
begin
TmpKlFilter:=" and num_kl="+Inttostr(LblKlName.Tag)+" ";
tmpKlTitle:=", по котрагенту : """+LblKlName.Caption+"""";
end
else
begin
TmpKlFilter:="";
tmpKlTitle:="";
end;
{ANALIZ}
BtnExcel.Enabled:=False;
BtnExcel.Caption:="экспорт...";
Application.ProcessMessages;
jrn:=cmbJrn.ItemIndex;
With dmReport.qrRepExpr do
begin
dmSklad.TmpSkladTransac.Commit;
SQL.Clear;
SQL.Add("SELECT count(*) FROM "+TmpFinalJrn[Jrn]+"1 ");
SQL.Add("WHERE isActive=1 and "+TmpFinalJrn[Jrn]+"1.flag=1"+" "+TmpDateFilter+TmpKlFilter+TmpKatFilter+" order by "+TmpFinalJrn[Jrn]+"1.id");
dmSklad.TmpSkladTransac.StartTransaction;
Open;
tmpRepRecs:=Fields[0].AsInteger;
// tmpSelFields:="id,data_sd,data_val,name_doc,name_acc,name_kl,sum_sd,sum_skd,sum_ndc";
SQL.Clear;
SQL.Add("SELECT "+tmpSelFields+" FROM "+TmpFinalJrn[Jrn]+"1 ");
SQL.Add("WHERE isActive=1 and "+TmpFinalJrn[Jrn]+"1.flag=1"+" "+TmpDateFilter+TmpKlFilter+TmpKatFilter+" order by "+TmpFinalJrn[Jrn]+"1.id");
Open; //Здесь и выдается ошибка при обращении на удаленный сервер
end;
BtnExcel.Enabled:=True;
BtnExcel.Caption:="Ñôîðìèðîâàòü";
Application.ProcessMessages;
If dmReport.qrRepExpr.IsEmpty then
begin
Showmessage("Нет данных для экспорта !!!");
dmReport.qrRepExpr.Close;
exit;
end;
Application.ProcessMessages;
{Export ту Эксел}
xl:=CreateOleObject("Excel.Application");
xl.Workbooks.add;
For i:=1 to tmpRepRecs do
begin
For j:=1 to dmReport.qrRepExpr.FieldCount do
begin
xl.cells[i,j]:=dmReport.qrRepExpr.Fields[j-1].AsVariant;
end;
dmReport.qrRepExpr.next;
end;
Xl.Columns.AutoFit ;
Xl.Visible:=true;
BtnExcel.Enabled:=True;
BtnExcel.Caption:="В Excel";
end;
← →
vv_fran (2004-09-25 16:14) [1]А ты не пользуйся OLE. У меня тоже все виснет и ломается, если через ОЛЕ пытаюь вытащить в Ексель более 3000 записей. Глючит он не по детски. Или через DDE, а проще всего - через компонент EhGrid, и быстрей и без всяких глюков.
Страницы: 1 вся ветка
Текущий архив: 2004.10.24;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.037 c