Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

Проблема с формированием отчета   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
14-1096901158
kaZaNoVa
2004-10-04 18:45
2004.10.24
API &amp; VCL быстрее, проще, лучше !


4-1095781410
Th
2004-09-21 19:43
2004.10.24
Проблема с вызовом CreateProcess из сервиса


14-1096062906
Мазут Береговой
2004-09-25 01:55
2004.10.24
А такая тема была уже? Про дырку в JPEG.


4-1095835762
SkyN
2004-09-22 10:49
2004.10.24
Выводить текст шрифтом, не устанавливая его в системе.


3-1095714619
Maxim______
2004-09-21 01:10
2004.10.24
тормоза BLOB в GDB





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский