Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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:="&#209;&#244;&#238;&#240;&#236;&#232;&#240;&#238;&#226;&#224;&#242;&#252;";
  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.47 MB
Время: 0.033 c
14-1096920771
matt
2004-10-05 00:12
2004.10.24
Рекомендации по построению GUI


3-1096309007
Denisov
2004-09-27 22:16
2004.10.24
Работа с BLOB.


14-1096730173
QuestionX
2004-10-02 19:16
2004.10.24
Множество try except finally ?


14-1096597213
KSergey
2004-10-01 06:20
2004.10.24
Обращение к студентам и "сочувствующим"


3-1096381121
AlexXn
2004-09-28 18:18
2004.10.24
Оракл тупит