Главная страница
    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.46 MB
Время: 0.037 c
14-1096874987
vopros
2004-10-04 11:29
2004.10.24
Что за дрянь такая?


3-1096273990
msguns
2004-09-27 12:33
2004.10.24
Параметры в TADOQuery


3-1096042068
TTTT
2004-09-24 20:07
2004.10.24
RecordCount


4-1094820495
AllDer
2004-09-10 16:48
2004.10.24
TextOut в win2000


1-1097495177
dd
2004-10-11 15:46
2004.10.24
сообщения от колёсика мыши и фокус





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский