Excell ‘den ole ile veri çekme

0
(0)

Delphi 2010 ‘da odbc kullanmadan ole ile veri çekme komutu..

butonumuz’un içeriği

procedure TAnaForm.cxButton1Click(Sender: TObject);
var
    book:variant;
    excel,sheet:variant;
    satir, sutun,i,RehID,d:integer;
    DbS,ExcelS:string;

    function excelsonsatir(AColumn: Integer): Integer;
    const
    xlUp = 3;
    begin
     Result := excel.Range[Char(96 + AColumn) + IntToStr(65536)].end[xlUp].Rows.Row;
    end;
begin

  excel := CreateOleObject('Excel.Application');
  OpenDialog1.Title := 'Excel Dosyasını Aç';
  OpenDialog1.Filter := 'Excel Dosyaları *.xls';

//  if OpenDialog1.Execute then begin
    book := Excel.WorkBooks.Open(cxTextEdit1.text);

    try
    Screen.Cursor := crHourGlass;
    sheet := book.worksheets[1];
    cxLabel1.Caption := 'Excelden veriler aktarılıyor.Bekleyiniz...';
    cxProgressBar1.Properties.Max := excelsonsatir(1)+1;

      for satir := 2 to excelsonsatir(1)+1 do begin

        cxProgressBar1.Position := satir;
        cxProgressBar1.Refresh;

          if VarToStr(sheet.cells[satir,2]) <> '' then
          begin
            tablo.ADOQuery1.Close;
            tablo.ADOQuery1.SQL.Text:='select * from ILSEMT where SEMTADI='''+trim( VarToStr(sheet.cells[satir,2]) )+'''';
            tablo.ADOQuery1.Open;

                  DbS:=trim(Tablo.ADOQuery1.FieldByName('SEMTADI').AsString);
                  ExcelS:=trim(VarToStr(sheet.cells[satir,2]));

                  if DbS=ExcelS then
                  begin
                     //showmessage(Tablo.ADOQuery1.FieldByName('SEMTADI').AsString+'-'+VarToStr(sheet.cells[satir,2])+' AYNI eklenmeyecek');
                  end else
                  begin
//                    showmessage('insert into ILSEMT(ILNO,SEMTADI,UZAKLIK)  values('''+trim( VarToStr(sheet.cells[satir,1]) ) +''','''+trim( VarToStr(sheet.cells[satir,2]) )+''','''+trim( VarToStr(sheet.cells[satir,3]) )+''')  ');
                      cxMemo1.Lines.Add(VarToStr(sheet.cells[satir,2]));
                      tablo.ADOQuery1.Close;
                      tablo.ADOQuery1.SQL.Text:='insert into ILSEMT(ILNO,SEMTADI,UZAKLIK)  values('+trim( VarToStr(sheet.cells[satir,1]) ) +','''+trim( VarToStr(sheet.cells[satir,2]) )+''','''+StringReplace(trim( VarToStr(sheet.cells[satir,3]) ),',','.',[rfReplaceAll])+'''); select scope_identity() as deger;  ';
                      tablo.ADOQuery1.open;
                  end;

//            showmessage('diğer kayda geçiyor');
          end;

         if tablo.ADOQuery1.fields[0].asinteger>0 then  d:=tablo.ADOQuery1.fields[0].AsInteger;

       //nakliye ye giriş
//         tablo.ADOQuery1.Close;
//         tablo.ADOQuery1.SQL.Text:='insert into NAKLIYE(SEMTNO,TUTAR,ALT,UST)  values('+trim( inttostr(d) ) +','+trim( VarToStr(sheet.cells[satir,6]) ) +','''+trim( VarToStr(sheet.cells[satir,4]) ) +''','''+trim( VarToStr(sheet.cells[satir,5]) ) +''')  ';
//         tablo.ADOQuery1.execsql;
        //nakliyeye giriş

      end;
      excel.DisplayAlerts := False;
      excel.quit;
      excel := Unassigned;
      Application.Messagebox(PChar('Veriler kaydedilmiştir.'),Pchar('uyarı'),MB_OK);
    finally
      Screen.Cursor:=crDefault;
    end;
//  end;
end;

 

Bu yazıyı faydalı buldunuz mu?

Değerlendirmek için yıldızlara tıklayın.

Ortalama puan 0 / 5. Toplam oy: 0

Bu yazıyı henüz kimse değerlendirmemiş. İlk siz oy verin !

Bu yazıyı faydalı bulmadığınız için çok üzüldük.

Görüşleriniz bizim için çok değerli.

Nasıl daha faydalı bir yazı hazırlayabiliriz?