Главная страница
    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.038 c
6-1092270292
bles
2004-08-12 04:24
2004.10.24
утилита для пингования


3-1096204814
SH
2004-09-26 17:20
2004.10.24
Регистрация базы и пользователя


1-1097467293
TeNY
2004-10-11 08:01
2004.10.24
Как рисовать на экране?


3-1096010114
oleg krechetov
2004-09-24 11:15
2004.10.24
Опять даты


4-1094031371
Fabo
2004-09-01 13:36
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский