Access Import/Export,Multi Threading, TryKillProcessByMainWindowHwnd

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using Bobo.Common;
using Bobo.BL;
using System.Collections;
using System.Threading;
using DevExpress.XtraGrid;
using System.Runtime.InteropServices;
using ADOX;
using System.Data.OleDb;
using System.IO;
namespace Bobolojik.Anlasma
{
    public partial class TopluAnlasmaZam : DevExpress.XtraEditors.XtraForm
    {
        #region Constructor
        // Log parametre bilgisi
        /*  FL_ISLEM_DURUMU
                    1 – Başlandı.
                    2 – Tamamlandı.
                    3 – İptal Edildi.
                    4 – Hata Oluştu.
            FL_ISLEM_TURU
                    1- Accesse Aktarım
                    2- Accessden Aktarım
         */
        //Genel
        string error = string.Empty;
        string sqKontrol = string.Empty;
        //Constructor
        int islemTuru = 0; //1 Accesse Aktarım // 2 Accessden Aktarım
        string kullaniciNo = string.Empty; // Login Olan Kullanıcı
        string kullaniciAdSoyad = string.Empty;  // Login Olan Kullanıcı
        string ip = string.Empty;  // Login Olan Bilgisayar
        // DataOlustur
        DataTable dt = null; // Bütün Operasyon Bunun Üzerinden Yapılıyor.
        int toplamSatirSayisi = 0; // Hesaplamalar İçin Gerekli.
        // Acces’e Aktarım – btnAccessAktar_Click – AccessAktarimThreadHataIslemleri – YeniAccessDosyasiOlustur
        Thread tidAccesseAktarim = null;
        Thread tidAccessAktarimProgressBar = null;
        ThreadStart tsAccesseAktarim = null;
        ThreadStart tsAccessAktarimProgressBar = null;
        CatalogClass cat = null;
        Table nTable = null;
        string tmpStr = string.Empty;
        string fileName = string.Empty;
        string dbTabloIsmi = “MUSTERI”;
        string cmdBeforeValues = string.Empty;
        string cmdAfterValues = string.Empty;
        string cmdText = string.Empty;
        bool accessAktarimiCalisiyorMu = false;
        OleDbConnection cn = null;
        OleDbCommand Cmd = null;
        // Seçilen Access Dosyasından Veri Çekiliyor – AccessdenVeriAktar –  btnAccessdenAktar_Click
        ThreadStart tsAccessedenAktarim = null;
        ThreadStart tsAccessdenAktarimProgressBar = null;
        Thread      tidAccessdenAktarim = null;
        Thread      tidAccessdenAktarimProgressBar = null;
        bool veriAktarimiDevamEdiyorMu = false;
        string  degisimDegeri = string.Empty;
        string  skgArasiBirimFiyat = string.Empty;
        string  sfiyat = string.Empty;
        string yuzdeOran = string.Empty;
        string dosyaFiyat = string.Empty;
        string anlasmaNo = string.Empty;
        string basKgDesi = string.Empty;
        string bitKgDesi = string.Empty;
        string hat = string.Empty;
        decimal fiyat = 0;
        decimal kgArasiBirimFiyat = 0;
        decimal yeniFiyat = 0;
        decimal yeniKgArasiBirimFiyat = 0;
        decimal eklenecekCikarilacakTutar = 0;
        decimal islemYuzdesi = 0;
        OleDbConnection con = null;
        OleDbDataAdapter da = null;
        DataSet dsAccess = null;
        int parcaBasiYuzdesel = 0; //1 Parçabaşı // 2 Yüzdesel
        public TopluAnlasmaZam()
        {
            CheckForIllegalCrossThreadCalls = false;
            PopupTopluAnlasmaIslemSecimi frm = new PopupTopluAnlasmaIslemSecimi();
            frm.ShowDialog();
            islemTuru = frm.islemTuru; //1 Accesse Aktarım // 2 Accessden Aktarım
            kullaniciNo = frm.kullaniciNo;
            kullaniciAdSoyad = frm.kullaniciAdSoyad;
            ip = frm.ip;
            frm.Dispose();
            InitializeComponent();
            // Ekran Gösterimleri
            // Buton
            btnAccessAktar.Visible = islemTuru == 1 ? true : false;
            btnAccessdenAktar.Visible = islemTuru == 2 ? true : false;
            btnAnlasmaGetir.Enabled = islemTuru == 1 ? true : false;
            btnAccessAktar.Enabled = false;
            btnAccessdenAktar.Enabled = islemTuru == 2 ? true : false;
            btnIptal.Enabled = false;
            //Label
            islemDurumu(0); // Hazır
            lblAnlasmaSayisi.Text = “-“; // Anlaşma Sayısı
            lbPath.Text = “-“;           // Kullanıcının Seçtiği Dosyanın Kaydedileceği Yer
            lblPersonel.Text = kullaniciAdSoyad;
            lblPathBilgi.Text = islemTuru == 1 ? “Dosyanın Kaydedileceği Yer” : “Güncelleme Yapılacak Yer”;
        }
        #endregion
        #region Aktif Anlaşmaları Getirir – btnAnlasmaGetir_Click –  DataOlustur – parcaBasiAnlasmaListesi_Click – yuzdeselAnlasmaListesi_Click – btnAnlasmaGetir_Click
        private void btnAnlasmaGetir_Click(int pListeNo)
        {
                islemDurumu(0); // Hazır
                lblAnlasmaSayisi.Text = “-“; // Anlaşma Sayısı
                lbPath.Text = “-“;           // Kullanıcının Seçtiği Dosyanın Kaydedileceği Yer
                btnAnlasmaGetir.Enabled = false;
                btnAccessAktar.Enabled = false;
                DataOlustur(pListeNo);
                btnAnlasmaGetir.Enabled = true;
                btnAccessAktar.Enabled = true;
        }
        public void DataOlustur(int pSecilenAnlasmaTipi) // Aktif Anlaşma Bilgisini Burada Atar
        {
            try
            {
                dt = BL.BLAnlasmaPackage.TopluAnlasmaZamAccess(pSecilenAnlasmaTipi.ToString(),out error);
                dt = Utility.SiraNoEkle(dt);
                dt.AcceptChanges();
                gcListe.DataSource = dt;
                toplamSatirSayisi = dt.Rows.Count; //  Hesaplamalar İçin Gerekli.
                lblAnlasmaSayisi.Text = toplamSatirSayisi.ToString(); // Ekranda Gösterim
            }
            catch (Exception ex) // Veritabanından bilgi getirilirken hata oluştu.
            {
                LogKaydiOlustur(“3”, “1”, kullaniciNo, ip, accessAktarimiCalisiyorMu ? “1” : “2”, “Aktif Anlaşma Listesi Veritabanından Çekilemedi.Method..: DataOlustur. Hata..:”+ex.Message);
                btnAnlasmaGetir.Enabled = true;
                btnAccessAktar.Enabled = false;
                btnIptal.Enabled = false;
            }
        }
        private void btnAnlasmaGetir_Click(object sender, EventArgs e)
        {
            cMenuAnlasmaDurumu.Show(Cursor.Position.X, Cursor.Position.Y);
        }
        private void parcaBasiAnlasmaListesi_Click(object sender, EventArgs e)
        {
            parcaBasiYuzdesel = 1;
            colFIYAT.Visible = true;
            colKG_ARASI_BIRIM_FIYAT.Visible = true;
            colDOSYA_FIYAT.Visible = false;
            colYUZDE_ORAN.Visible = false;
            btnAnlasmaGetir.Text = “Aktif Anlaşmaları Getir” + Environment.NewLine + “(Seçilen Parça Başı)”;
            btnAccessAktar.Text = “Access Aktarımına Başla” + Environment.NewLine + “(Seçilen Parça Başı)”;
            btnAnlasmaGetir_Click(parcaBasiYuzdesel);
        }
        private void yuzdeselAnlasmaListesi_Click(object sender, EventArgs e)
        {
            parcaBasiYuzdesel = 2;
            colFIYAT.Visible = false;
            colKG_ARASI_BIRIM_FIYAT.Visible = false;
            colDOSYA_FIYAT.Visible = true;
            colYUZDE_ORAN.Visible = true;
            btnAnlasmaGetir.Text = “Aktif Anlaşmaları Getir” + Environment.NewLine + “(Seçilen Yüzdesel)”;
            btnAccessAktar.Text = “Access Aktarımına Başla” + Environment.NewLine + “(Seçilen Yüzdesel)”;
            btnAnlasmaGetir_Click(parcaBasiYuzdesel);
        }
        #endregion
        #region Acces’e Aktarım – btnAccessAktar_Click – AccessAktarimThreadHataIslemleri – YeniAccessDosyasiOlustur
        private void btnAccessAktar_Click(object sender, EventArgs e)
        {
            MainTimerStop();
            FlagSifirla(string.Empty,false);
            btnAccessAktar.Enabled = false;
            btnIptal.Enabled = true;
            // Datatableda Aktif Anlaşma Kaydı Var Mı
            if (dt.Rows.Count > 0)
            {
                SaveFileDialog s = new SaveFileDialog();
                s.Filter = “Microsoft Access File (.mdb)|*.mdb”;
                s.ShowDialog();
                fileName = s.FileName;
                try
                {
                    AccessIslemleriSonlandir();
                    // daha önceden dosya varsa sil
                    if (File.Exists(fileName))
                    {
                        AccessIslemleriSonlandir();
                        File.Delete(fileName);
                    }
                }
                catch (Exception)
                {
                    FlagSifirla(“Anlaşma Aktarımı İçin Dosya Oluşturma Yetkiniz Yok. IT ile irtaba geçiniz.”,true);
                    return;
                }
                if (fileName.Trim().Length > 0)
                {
                    lbPath.Text = fileName;
                }
                else
                {
                    FlagSifirla(“Dosya Kayıt Yeri Seçilmeden İşlemlere Başlanmayacaktır.”, true);
                    return;
                }
            }
            else
            {
                FlagSifirla(“Aktarım Yapılacak Kayıt Bulunamadı.”, true);
                return;
            }
             bool mdbOlustuMu = (YeniAccessDosyasiOlustur(fileName));
             if (!mdbOlustuMu)
             {
                 FlagSifirla(“Aktarımın Yapılacağı Dosya Oluşturulamadı. Lütfen Tekrar Deneyiniz.”, true);
                 return;
             }
             bool mdbTabloOlustuMu = (AccessteTablolariOlustur());
             if (!mdbTabloOlustuMu)
             {
                 FlagSifirla(“Aktarımın Yapılacağı Dosyadaki Tablolar Oluşturulamadı. Lütfen Tekrar Deneyiniz.”, true);
                 return;
             }
            // Thread İşlemleri Başlamalı
             tsAccesseAktarim = new ThreadStart(SetSelectedFeedIntoDB);
             tsAccessAktarimProgressBar = new ThreadStart(ProgressBarCalistir);
             tidAccesseAktarim = new Thread(tsAccesseAktarim);
             tidAccessAktarimProgressBar = new Thread(tsAccessAktarimProgressBar);
             try
             {
                 islemDurumu(1); // İşleme başlandı
                 Thread.Sleep(1000); // 1 sn.Bekle
                 tidAccesseAktarim.Start(); // Access e Aktarımı Başlat
                 Thread.Sleep(1000); // 1 sn.Bekle
                 tidAccessAktarimProgressBar.Start(); // Alt Kısım Process Bar ı Başlat
                 // Threadler Başarıyla Başlarsa Kayıt Atılsın.
                 LogKaydiOlustur(“1”, “1”, kullaniciNo, ip,”1″, parcaBasiYuzdesel == 1 ? “Parça Başı ” : “Yüzdesel” + ” Anlaşmalar İçin Accesse Aktarım İşlemine Başlandı{ThreadStart}”);
             }
             catch (ThreadStartException sie)
             {
                 AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{ThreadStart}.. : ” + sie.Message, 4, true);
                 return;
             }
             catch (ThreadAbortException the)
             {
                 AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{ThreadAbort}.. : ” + the.Message, 4, true);
                 return;
             }
             catch (ThreadInterruptedException saf)
             {
                 AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{ThreadInterrupted}.. : ” + saf.Message, 4, true);
                 return;
             }
             catch (ThreadStateException tse)
             {
                 AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{ThreadState}.. : ” + tse.Message, 4, true);
                 return;
             }
        }
        public  bool YeniAccessDosyasiOlustur(string filename)
        {
            try
            {
                cat = new CatalogClass();
                tmpStr = “Provider=Microsoft.Jet.OLEDB.4.0;”;
                tmpStr += “Data Source=” + filename + “;Jet OLEDB:Engine Type=5”;
                cat.Create(tmpStr);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        public  bool AccessteTablolariOlustur()
        {
            try
            {
                    nTable = new Table();
                    nTable.Name = “MUSTERI”;
                    cmdBeforeValues = “( “;
                    nTable.Columns.Append(“SIRA_NO”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “SIRA_NO, “;
                    nTable.Columns.Append(“ANLASMA_NO”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “ANLASMA_NO, “;
                    nTable.Columns.Append(“MUSTERI_NO”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “MUSTERI_NO, “;
                    nTable.Columns.Append(“MUSTERI_AD”, DataTypeEnum.adLongVarWChar, 500); cmdBeforeValues += “MUSTERI_AD, “;
                    nTable.Columns.Append(“ANLASMA_TURU”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “ANLASMA_TURU, “;
                    nTable.Columns.Append(“GONDERI_TIPI_ADI”, DataTypeEnum.adVarWChar, 100); cmdBeforeValues += “GONDERI_TIPI_ADI, “;
                    nTable.Columns.Append(“KAPSAM”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “KAPSAM, “;
                    nTable.Columns.Append(“BASLANGIC_TARIHI”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “BASLANGIC_TARIHI, “;
                    nTable.Columns.Append(“OPSIYON_TARIHI”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “OPSIYON_TARIHI, “;
                    nTable.Columns.Append(“BITIS_TARIHI”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “BITIS_TARIHI, “;
                    nTable.Columns.Append(“BAREM_SIRASI”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “BAREM_SIRASI, “;
                    nTable.Columns.Append(“BAS_KG_DESI”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “BAS_KG_DESI, “;
                    nTable.Columns.Append(“BIT_KG_DESI”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “BIT_KG_DESI, “;
                    nTable.Columns.Append(“HAT”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “HAT, “;
                if(parcaBasiYuzdesel==1)
                {
                    nTable.Columns.Append(“FIYAT”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “FIYAT, “;
                    nTable.Columns.Append(“KG_ARASI_BIRIM_FIYAT”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “KG_ARASI_BIRIM_FIYAT, “;
                }
                else
                {
                    nTable.Columns.Append(“YUZDE_ORAN”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “YUZDE_ORAN, “;
                    nTable.Columns.Append(“DOSYA_FIYAT”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “DOSYA_FIYAT, “;
                }
                    nTable.Columns.Append(“DEGISIM_DEGERI”, DataTypeEnum.adVarWChar, 50); cmdBeforeValues += “DEGISIM_DEGERI”;
                    cmdBeforeValues += ” )”;
                    cat.Tables.Append(nTable);
                    return true;
            }
            catch(Exception)
            {
                return false;
            }
        }
        public  void SetSelectedFeedIntoDB()
        {
            if (!accessAktarimiCalisiyorMu)
            {
                accessAktarimiCalisiyorMu = true;
                 cn = new OleDbConnection(tmpStr);
                 Cmd = new OleDbCommand();
                 Cmd.Connection = cn;
                try
                {
                    if (cn.State != ConnectionState.Open) // Bağlantı Açık Değilse
                    {
                        cn.Close();
                        cn.Open();
                    }
                }
                catch (Exception ex)
                {
                    cn.Close();
                    AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{AccessBaglantiHatasi}.. : ” + ex.Message, 5, false);
                    return;
                }
                try
           {
                    islemDurumu(2); // İşleme başlandı
                    int sayac = 0 ;
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (iptalEdildi) { break; }
                        sayac++;
                        #region Tek tek veritabanına kayıt yapar
                        cmdText = @”INSERT INTO ” + dbTabloIsmi + ” ” + cmdBeforeValues + ” ” + “VALUES” + ” “;
                        cmdAfterValues = @”( “;
                        for (int i = 0; i < dr.ItemArray.Length; i++)
                        {
                            cmdAfterValues += string.Format(“\”{0}\””, dr.ItemArray[i].ToString() == “” ? “NULL” : dr.ItemArray[i].ToString()) + (i != dr.ItemArray.Length – 1 ? “, ” : “”);
                        }
                        cmdAfterValues += ” )”;
                        cmdText += cmdAfterValues;
                        #endregion
                        Cmd.CommandText = cmdText;
                        Cmd.ExecuteNonQuery();
                        cmdText = string.Empty;
                        cmdAfterValues = string.Empty;
                        islemYuzdesi = (sayac * 100) / dt.Rows.Count;
                        lblIslemDurumu.Text = “% ” + Convert.ToString(islemYuzdesi);
                    }
                    if (!iptalEdildi)
                    {
                        LogKaydiOlustur(“2”, “1”, kullaniciNo, ip, “1”, parcaBasiYuzdesel == 1 ? “Parça Başı ” : “Yüzdesel” + ” Anlaşmalar İçin Accesse Aktarım İşlemi Başarıyla Tamamlandı.”);
                        dosyaKullanilabilir = true;
                        lbPath.ForeColor = Color.DarkBlue;
                        lbPath.Text = lbPath.Text + ” ** Dosyayı Açmak İçin Üzerine Tıklayınız.”;
                        islemDurumu(3); // İşleme Tamamlandı
                        Thread.Sleep(1000);
                        islemDurumu(0); // Hazır etiket bilgisi
                    }
                    else
                    {
                        islemDurumu(6); // iptal edildi
                        Thread.Sleep(1000);
                        islemDurumu(0); // Hazır etiket bilgisi
                    }
                    accessAktarimiCalisiyorMu = false; // process bar ı durdurmak için
                    AccessIslemleriSonlandir();
                    btnIptal.Enabled = false;
                }
                catch (Exception ex)
                {
                    cn.Close();
                    lbPath.Text = “-“;
                    AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{DMLISLEMLERI” + islemTuru + “}.. : ” + ex.Message, 5, false);
                }
                finally
                {
                    cn.Close();
                    FlagSifirla(string.Empty, false);
                    dosyaKullanilabilir = true;
                }
            }
        }
        #endregion
        #region Accessden Aktarım – btnAccessdenAktar_Click – AccessdenVeriAktar – parcaBasiAktarimtoolStrip_Click – yuzdeselAktarimtoolStrip_Click
        #region btnAccessdenAktar_Click
        private void parcaBasiAktarimtoolStrip_Click(object sender, EventArgs e)
        {
            parcaBasiYuzdesel = 1;
            btnAccessdenAktar.Text = “Accessden Aktarımına Başla” + Environment.NewLine + “(Seçilen Parça Başı)”;
            btnAccessdenAktar_Click(parcaBasiYuzdesel);
        }
        private void yuzdeselAktarimtoolStrip_Click(object sender, EventArgs e)
        {
            parcaBasiYuzdesel = 2;
            btnAccessdenAktar.Text = “Accessden Aktarımına Başla” + Environment.NewLine + “(Seçilen Parça Başı)”;
            btnAccessdenAktar_Click(parcaBasiYuzdesel);
        }
        private void btnAccessdenAktar_Click(int parcaBasiMiYuzdeselMi)
        {
            MainTimerStop();
            FlagSifirla(string.Empty, false);
            btnAccessdenAktar.Enabled = false;
            btnIptal.Enabled = true;
            OpenFileDialog of = new OpenFileDialog();
            of.Filter = “Microsoft Access File (.mdb)|*.mdb”;
            of.ShowDialog();
            fileName = of.FileName;
            lbPath.Text = fileName;
            if (of.FileName.Trim().Length == 0)
            {
                FlagSifirla(“Anlaşma güncellemesi için lütfen bir dosya seçiniz.”, true);
                return;
            }
            if (!DogruDosyaMi())
            {
                FlagSifirla(“Aktarım Yapılacak Access Dosyası İle Yapılmak İstenen İşlem Hatalı.”+Environment.NewLine+” Örnek Olarak..: “+Environment.NewLine+”{“+Environment.NewLine+”Access Dosyası:ParçaBaşı.mdb”+Environment.NewLine+”Seçilen İşlem: Yüzdesel Aktarım”+Environment.NewLine+”}”, true);
                return;
            }
            // Thread İşlemleri Başlamalı
            tsAccessedenAktarim = new ThreadStart(AccessdenVeriAktar);
            tsAccessdenAktarimProgressBar = new ThreadStart(ProgressBarCalistir);
            tidAccessdenAktarim = new Thread(tsAccessedenAktarim);
            tidAccessdenAktarimProgressBar = new Thread(tsAccessdenAktarimProgressBar);
            try
            {
                islemDurumu(1); // İşleme başlandı
                Thread.Sleep(1000); // 1 sn.Bekle
                tidAccessdenAktarim.Start(); //Access den Aktarımı Başlat
                Thread.Sleep(1000);// 1 sn.Bekle
                tidAccessdenAktarimProgressBar.Start();// Alt Kısım Process Bar ı Başlat
                LogKaydiOlustur(“1”, “1”, kullaniciNo, ip, “2”, “Access’den Aktarım İşlemine Başlandı.{ThreadStart}”);
            }
            catch (ThreadStartException sie)
            {
                AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{ThreadStart}.. : ” + sie.Message, 4, true);
                return;
            }
            catch (ThreadAbortException the)
            {
                AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{ThreadAbort}.. : ” + the.Message, 4, true);
                return;
            }
            catch (ThreadInterruptedException saf)
            {
                AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{ThreadInterrupted}.. : ” + saf.Message, 4, true);
                return;
            }
            catch (ThreadStateException tse)
            {
                AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{ThreadState}.. : ” + tse.Message, 4, true);
                return;
            }
        }
        private void btnAccessdenAktar_Click(object sender, EventArgs e)
        {
            cMenuAktarim.Show(Cursor.Position.X, Cursor.Position.Y);
        }
        #endregion
        #region Seçilen Access Dosyasından Veri Çekiliyor – AccessdenVeriAktar
        public void AccessdenVeriAktar()
        {
            if (!veriAktarimiDevamEdiyorMu)
            {
                veriAktarimiDevamEdiyorMu = true;
                string connectionStr = “Provider=Microsoft.Jet.OLEDB.4.0;”;
                connectionStr += “Data Source=” + fileName + “;Jet OLEDB:Engine Type=5”;
                string cmdStr = “SELECT MUSTERI.[ANLASMA_NO], MUSTERI.[BAS_KG_DESI], MUSTERI.[BIT_KG_DESI], MUSTERI.[HAT], “;
                if (parcaBasiYuzdesel == 1)
                {
                    cmdStr += “MUSTERI.[FIYAT], MUSTERI.[KG_ARASI_BIRIM_FIYAT], “;
                }
                else if (parcaBasiYuzdesel == 2)
                {
                    cmdStr += “MUSTERI.[DOSYA_FIYAT],MUSTERI.[YUZDE_ORAN], “;
                }
                cmdStr += ” MUSTERI.[DEGISIM_DEGERI] FROM MUSTERI;”;
                con = new OleDbConnection(connectionStr);
                da = new OleDbDataAdapter(cmdStr, con);
                dsAccess = new DataSet();
                try
                {
                    if (con.State != ConnectionState.Open) // Bağlantı Açık Değilse
                    {
                        con.Close();
                        con.Open();
                    }
                }
                catch (Exception ex)
                {
                    con.Close();
                    AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{AccessBaglantiHatasi}.. : ” + ex.Message, 5, false);
                    return;
                }
                try
                {
                    da.Fill(dsAccess, “MUSTERI”);
                    lblAnlasmaSayisi.Text = dsAccess.Tables[“MUSTERI”].Rows.Count.ToString();
                    con.Close();
                    islemDurumu(2); // İşleme başlandı
                    for (int i = 0; i < dsAccess.Tables[“MUSTERI”].Rows.Count; i++)
                    {
                        if (iptalEdildi) { break; }
                        degisimDegeri = dsAccess.Tables[“MUSTERI”].Rows[i][“DEGISIM_DEGERI”].ToString() == “” ? “0” : dsAccess.Tables[“MUSTERI”].Rows[i][“DEGISIM_DEGERI”].ToString();
                        basKgDesi = dsAccess.Tables[“MUSTERI”].Rows[i][“BAS_KG_DESI”].ToString() == “NULL” ? “0” : dsAccess.Tables[“MUSTERI”].Rows[i][“BAS_KG_DESI”].ToString();
                        bitKgDesi = dsAccess.Tables[“MUSTERI”].Rows[i][“BIT_KG_DESI”].ToString() == “NULL” ? “0” : dsAccess.Tables[“MUSTERI”].Rows[i][“BIT_KG_DESI”].ToString();
                        anlasmaNo = dsAccess.Tables[“MUSTERI”].Rows[i][“ANLASMA_NO”].ToString();
                        hat = dsAccess.Tables[“MUSTERI”].Rows[i][“HAT”].ToString();
                        if (parcaBasiYuzdesel == 1)
                        {
                            skgArasiBirimFiyat = dsAccess.Tables[“MUSTERI”].Rows[i][“KG_ARASI_BIRIM_FIYAT”].ToString() == “NULL” ? “0” : dsAccess.Tables[“MUSTERI”].Rows[i][“KG_ARASI_BIRIM_FIYAT”].ToString();
                            sfiyat = dsAccess.Tables[“MUSTERI”].Rows[i][“FIYAT”].ToString() == “NULL” ? “0” : dsAccess.Tables[“MUSTERI”].Rows[i][“FIYAT”].ToString();
                            if (degisimDegeri != “0”)
                            {
                                fiyat = Convert.ToDecimal(sfiyat);
                                kgArasiBirimFiyat = Convert.ToDecimal(skgArasiBirimFiyat);
                                eklenecekCikarilacakTutar = 0;
                                eklenecekCikarilacakTutar = ((fiyat * Convert.ToDecimal(degisimDegeri)) / 100);
                                yeniFiyat = fiyat + eklenecekCikarilacakTutar;
                                eklenecekCikarilacakTutar = 0;
                                eklenecekCikarilacakTutar = ((kgArasiBirimFiyat * Convert.ToDecimal(degisimDegeri)) / 100);
                                yeniKgArasiBirimFiyat = kgArasiBirimFiyat + eklenecekCikarilacakTutar;
                            }
                        }
                        else if (parcaBasiYuzdesel == 2)
                        {
                            dosyaFiyat = dsAccess.Tables[“MUSTERI”].Rows[i][“DOSYA_FIYAT”].ToString() == “NULL” ? “0” : dsAccess.Tables[“MUSTERI”].Rows[i][“DOSYA_FIYAT”].ToString();
                            yuzdeOran = dsAccess.Tables[“MUSTERI”].Rows[i][“YUZDE_ORAN”].ToString() == “NULL” ? “0” : dsAccess.Tables[“MUSTERI”].Rows[i][“YUZDE_ORAN”].ToString();
                            //Şimdilik işlem yapılmıyor. Bu olası bir durum için önceden hazırlandı.
                        }
                        BL.BLAnlasmaPackage.TopluAnlasmaZamUpd(parcaBasiYuzdesel.ToString(), yeniFiyat.ToString(), yeniKgArasiBirimFiyat.ToString(), degisimDegeri, anlasmaNo, hat, basKgDesi, bitKgDesi, out error);
                        islemYuzdesi = (i * 100) / dsAccess.Tables[“MUSTERI”].Rows.Count;
                        lblIslemDurumu.Text = “% ” + Convert.ToString(islemYuzdesi);
                    }
                    if (!iptalEdildi)
                    {
                        LogKaydiOlustur(“2”, “1”, kullaniciNo, ip, “2”, “İşlem Başarıyla Tamamlandı.”);
                        islemDurumu(3);
                        Thread.Sleep(1000);
                        islemDurumu(7);
                        Thread.Sleep(1000);
                        islemDurumu(0);
                    }
                    else
                    {
                        islemDurumu(6);
                        Thread.Sleep(1000);
                        islemDurumu(0);
                    }
                    veriAktarimiDevamEdiyorMu = false; // process bar ı durdurmak için
                    AccessIslemleriSonlandir();
                    btnIptal.Enabled = false;
                }
                catch (Exception ex)
                {
                    con.Close();
                    lbPath.Text = “-“;
                    AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{DMLISLEMLERI” + islemTuru + “}.. : ” + ex.Message, 5, false);
                }
                finally
                {
                    con.Close();
                    FlagSifirla(string.Empty, false);
                }
            }
        }
        public bool DogruDosyaMi()
        {
            string connectionStr = “Provider=Microsoft.Jet.OLEDB.4.0;”;
            connectionStr += “Data Source=” + fileName + “;Jet OLEDB:Engine Type=5”;
            string cmdStr = “SELECT TOP 1 MUSTERI.[ANLASMA_NO], MUSTERI.[BAS_KG_DESI], MUSTERI.[BIT_KG_DESI], MUSTERI.[HAT], “;
            if (parcaBasiYuzdesel == 1)
            {
                cmdStr += “MUSTERI.[FIYAT], MUSTERI.[KG_ARASI_BIRIM_FIYAT], “;
            }
            else if (parcaBasiYuzdesel == 2)
            {
                cmdStr += “MUSTERI.[DOSYA_FIYAT],MUSTERI.[YUZDE_ORAN], “;
            }
            cmdStr += ” MUSTERI.[DEGISIM_DEGERI] FROM MUSTERI;”;
            con = new OleDbConnection(connectionStr);
            da = new OleDbDataAdapter(cmdStr, con);
            dsAccess = new DataSet();
            try
            {
                if (con.State != ConnectionState.Open) // Bağlantı Açık Değilse
                {
                    con.Close();
                    con.Open();
                }
            }
            catch (Exception ex)
            {
                con.Close();
                AccessThreadHataIslemleri(“Sistemsel bir hata oluştu.IT ile irtibata geçiniz.{AccessBaglantiHatasi – DosyaKontrolu}.. : ” + ex.Message, 5, false);
                return false;
            }
            try
            {
                da.Fill(dsAccess, “MUSTERI”);
                return true;
            }
            catch (Exception)
            {
                con.Close();
                return false;
            }
            finally
            {
                con.Close();
            }
            return true;
        }
        #endregion
        #endregion
        #region ProgressBar Doldur / Bosalt – ProgressBarCalistir
        public void ProgressBarCalistir()
        {
            try
            {
                for (int i = 0; i <= 100; i = i + 10)
                {
                    if (accessAktarimiCalisiyorMu | veriAktarimiDevamEdiyorMu)
                    {
                        if (i == 100)
                        { i = 0; }
                        pBar.Value = i;
                        Thread.Sleep(500);
                    }
                    else if (iptalEdildi)
                    {
                        pBar.Value = 0;
                        MainTimerStart();
                        break;
                    }
                    else
                    {
                        pBar.Value = 100;
                        MainTimerStart();
                        break;
                    }
                }
            }
            catch (Exception ae)
            {
                LogKaydiOlustur(“4”, “1”, kullaniciNo, ip, islemTuru.ToString(), “Progress Bar Dolum İşleminde Hata Oluştu.Method Adı..: ProgressBarCalistir().. Hata..: ” +ae.Message);
            }
        }
        #endregion
        #region Dosyayı Aç – lbPath_Click
        bool dosyaKullanilabilir = false;
        private void lbPath_Click(object sender, EventArgs e)
        {
            if (islemTuru == 1) // access e aktarımsa işlem bitiminde kullanacak
            {
                if (fileName.Trim().Length > 0 & dosyaKullanilabilir)
                {
                    try
                    {
                        System.Diagnostics.Process.Start(fileName);
                    }
                    catch (Exception ae)
                    {
                        LogKaydiOlustur(“4”, “1”, kullaniciNo, ip, islemTuru.ToString(), “Dosya Açma İşleminde Hata Oluştu.Method Adı..: lbPath_Click().. Hata..: ” + ae.Message);
                        MessageBox.Show(“Dosya Bozulmuş yada Ulaşılamıyor. Hata..: ” + ae.Message);
                        return;
                    }
                }
            }
        }
        #endregion
        #region İptal İşlemi – btnIptal_Click
        bool iptalEdildi = false;
        private void btnIptal_Click(object sender, EventArgs e)
        {
            IptalEtmeIslemleri(“Bu İşlem Direk Anlaşma Fiyatlarını Etkileyecektir.” + Environment.NewLine + “Aktif İşlem Yapılırken Formu Kapatmak İstediğinizden Emin Misiniz ?”);
            if (islemTuru == 1 & iptalEdildi)
            {
                AccessIslemleriSonlandir();
                try
                {
                    if (File.Exists(lbPath.Text))
                    {
                        File.Delete(lbPath.Text);
                        LogKaydiOlustur(“3”, “1”, kullaniciNo, ip, islemTuru.ToString(), “Sistemin Oluşturmak İstediği Access Aktarım Dosyası Sistem Tarafından Otomatik Olarak Silindi.Dosya..: ” + lbPath.Text);
                    }
                }
                catch (Exception ex)
                {
                    LogKaydiOlustur(“3”, “1”, kullaniciNo, ip, accessAktarimiCalisiyorMu ? “1” : “2”, “Access’e Aktarım İptal Edildi. Dosya Kullanıldığı İçin Silinemedi..: btnIptal_Click.Dosya..:”+ ex.Message+” Hata..: ” + ex.Message);
                }
                dosyaKullanilabilir = false;
                lbPath.Text = “-“;
            }
            if (islemTuru == 2 & iptalEdildi)
            {
                AccessIslemleriSonlandir();
                lbPath.Text = “-“;
            }
            if (iptalEdildi)
            {
                if (!accessAktarimiCalisiyorMu | !veriAktarimiDevamEdiyorMu)
                {
                    LogKaydiOlustur(“3”, “1”, kullaniciNo, ip, islemTuru == 1 ? “1” : “2”, “Kullanıcı Tarafından İptal Butonuna Basılarak İptal Edildi.”);
                }
                btnAccessdenAktar.Enabled = islemTuru == 2 ? true : false;
                btnAccessAktar.Enabled = islemTuru == 1 ? true : false;
                gcListe.DataSource = (new DataTable());
                pBar.Value = 0;
                lblAnlasmaSayisi.Text = “0”;
                islemDurumu(6); // iptal Edildi.
                Thread.Sleep(1000);
                islemDurumu(0); // hazir hale getirildi.
                MainTimerStart();
            }
        }
        #endregion
        #region Access Thread Hata Islemleri
        private void AccessThreadHataIslemleri(string pMesaj, int pHataKodu, bool pMesajFirlat)
        {
            btnAnlasmaGetir.Enabled = islemTuru == 1 ? true : false; //Access’e Aktarım Butonunu Aktif Hale Getirir
            btnAccessdenAktar.Enabled = islemTuru == 2 ? true : false;  //Access’den Aktarım Butonunu Aktif Hale Getirir
            pBar.Value = 0;
            LogKaydiOlustur(“4”, “1”, kullaniciNo, ip, islemTuru.ToString(), pMesaj);
            islemDurumu(pHataKodu); // Operasyon Hatası Ekrana Yazar
            FlagSifirla(pMesaj, pMesajFirlat);
        }
        #endregion
        #region Access Açıksa Kapatır -AccessIslemleriSonlandir
        public void AccessIslemleriSonlandir()
        {
            if (con != null)
            {
                GC.Collect();
                con.Close();
            }
            if (cn != null)
            {
                GC.Collect();
                cn.Close();
            }
            if (cat != null)
            {
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat);
            }
            if (nTable != null)
            {
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(nTable);
            }
        }
        #endregion
        #region Sisteme Durum/Log Kayıtları Atar – LogKaydiOlustur
        private void LogKaydiOlustur(string pIslemDurumu, string pDurum, string pKullaniciNo, string pIp, string pIslemTuru, string pAciklama)
        {
            BLAnlasmaPackage.TopluAnlasmaZamLogIns(pIslemDurumu, pDurum, pKullaniciNo, pIp, out sqKontrol, out error, pIslemTuru, pAciklama);
        }
        #endregion
        #region Operasyon Thread leri Sıfırla – FlagSifirla
        public void FlagSifirla(string pMesaj,bool pMesajFirlat)
        {
            dosyaKullanilabilir = false; // Ekrandan Process.Start ile Dosyayı Açar
            accessAktarimiCalisiyorMu = false; //Thread Yönetmek İçin
            veriAktarimiDevamEdiyorMu = false;
            iptalEdildi = false;
            AccessIslemleriSonlandir();
            btnAccessAktar.Enabled = true;
            btnAccessdenAktar.Enabled = true;
            if (pMesaj.Trim().Length > 0 & pMesajFirlat)
            {
                MessageBox.Show(pMesaj,”Uyarı”,MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }
        #endregion
        #region BilgilendirmeDurumuLabel – islemDurumu
        public void islemDurumu(int pDurum)
        {
            switch (pDurum)
            {
                case -1: lblIslemDurumu.Text = “..Aktif Anlaşmalar Getiriliyor..”;
                    break;
                case 0: lblIslemDurumu.Text = “..Hazır..”;
                    break;
                case 1: lblIslemDurumu.Text = “..Aktarıma Başlandı..”;
                    break;
                case 2: lblIslemDurumu.Text = “..Aktarıma Devam Ediyor..”;
                    break;
                case 3: lblIslemDurumu.Text = “..Aktarım Tamamlandı..”;
                    break;
                case 4: lblIslemDurumu.Text = “..Operasyon Hatası Oluştu..”;
                    break;
                case 5: lblIslemDurumu.Text = “..Bağlantı Hatası Oluştu..”;
                    break;
                case 6: lblIslemDurumu.Text = “..İşlem İptal Edildi..”;
                    break;
                case 7: lblIslemDurumu.Text = “..Fiyatlar Güncellendi..”;
                    break;
            }
        }
        #endregion
        #region Form Kapatılıyor – TopluAnlasmaZam_FormClosing
        private void TopluAnlasmaZam_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (tidAccesseAktarim != null)
            {
                if (tidAccesseAktarim.IsAlive)
                {
                    //e.cancel ters mantık çalışıyor
                    e.Cancel = !IptalEtmeIslemleri(“Bu İşlem Direk Anlaşma Fiyatlarını Etkileyecektir.” + Environment.NewLine + “Aktif İşlem Yapılırken Formu Kapatmak İstediğinizden Emin Misiniz ?”);
                    if (!e.Cancel)
                    {
                        AccessIslemleriSonlandir();
                        try
                        {
                            if (File.Exists(lbPath.Text) & islemTuru == 1)
                            {
                                File.Delete(lbPath.Text);
                                LogKaydiOlustur(“3”, “1”, kullaniciNo, ip, islemTuru.ToString(), “Sistemin Oluşturmak İstediği Access Aktarım Dosyası Sistem Tarafından Otomatik Olarak Silindi.Dosya..: ” + lbPath.Text);
                            }
                        }
                        catch (Exception ex)
                        {
                            LogKaydiOlustur(“3”, “1”, kullaniciNo, ip, accessAktarimiCalisiyorMu ? “1” : “2”, “Access’e Aktarım İptal Edildi. Dosya Kullanıldığı İçin Silinemedi..: btnIptal_Click.Dosya..:” + ex.Message + ” Hata..: ” + ex.Message);
                        }
                        dosyaKullanilabilir = false;
                        lbPath.Text = “-“;
                        LogKaydiOlustur(“3”, “1”, kullaniciNo, ip, islemTuru == 1 ? “1” : “1”, “Kullanıcı Tarafından Form Kapatılarak İşlem İptal Edildi.”);
                        MainTimerStart();
                    }
                }
            }
            else if (tidAccessdenAktarim != null)
            {
                if (tidAccessdenAktarim.IsAlive)
                {
                    //e.cancel ters mantık çalışıyor
                    e.Cancel = !IptalEtmeIslemleri(“Bu İşlem Direk Anlaşma Fiyatlarını Etkileyecektir.” + Environment.NewLine + “Aktif İşlem Yapılırken Formu Kapatmak İstediğinizden Emin Misiniz ?”);
                    if (!e.Cancel)
                    {
                        LogKaydiOlustur(“3”, “1”, kullaniciNo, ip, islemTuru == 1 ? “1” : “2”, “Kullanıcı Tarafından Form Kapatılarak İşlem İptal Edildi.”);
                        MainTimerStart();
                    }
                }
            }
        }
        #endregion
        #region İptal İşleminden EminMisin Threadler Askıya Alınıyor – IptalEtmeIslemleri
        private bool IptalEtmeIslemleri(string pMesaj)
        {
            if (islemTuru == 1)
            {
                tidAccesseAktarim.Suspend();
                tidAccessAktarimProgressBar.Suspend();
                DialogResult dr = MessageBox.Show(pMesaj, “İptal İşlemi Uyarısı”, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    iptalEdildi = true;
                    return true;
                }
                else
                {
                    tidAccesseAktarim.Resume();
                    tidAccessAktarimProgressBar.Resume();
                    return false;
                }
            }
            else if (islemTuru == 2)
            {
                tidAccessdenAktarim.Suspend();
                tidAccessdenAktarimProgressBar.Suspend();
                DialogResult dr = MessageBox.Show(pMesaj, “İptal İşlemi Uyarısı”, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    iptalEdildi = true;
                    return true;
                }
                else
                {
                    tidAccessdenAktarim.Resume();
                    tidAccessdenAktarimProgressBar.Resume();
                    return false;
                }
            }
            return true;
        }
        #endregion
        #region Program Çalıştıktan Sonra Devreye Giren Timerlar (Threadler) İşlem Boyunca Kapatılıp Sonrasında Açılıyor – MainTimerStart – MainTimerStop
        private void MainTimerStart()
        {
            MainMenu frmMain = this.Tag as MainMenu;
            if (frmMain.timerSaat != null)
            {
                frmMain.timerSaat.Start();
            }
            if (frmMain.timerCevapSuresi != null)
            {
                frmMain.timerCevapSuresi.Start();
            }
            if (frmMain.timerTimeOut != null)
            {
                frmMain.timerTimeOut.Start();
            }
            if (frmMain.timerVersiyonDenetle != null)
            {
                frmMain.timerVersiyonDenetle.Start();
            }
        }
        private void MainTimerStop()
        {
            MainMenu frmMain = this.Tag as MainMenu;
            if (frmMain.timerSaat != null)
            {
                frmMain.timerSaat.Stop();
            }
            if (frmMain.timerCevapSuresi != null)
            {
                frmMain.timerCevapSuresi.Stop();
            }
            if (frmMain.timerTimeOut != null)
            {
                frmMain.timerTimeOut.Stop();
            }
            if (frmMain.timerVersiyonDenetle != null)
            {
                frmMain.timerVersiyonDenetle.Stop();
            }
        }
        #endregion
        // Kullanılmıyor
        #region Toplu Aktarim İçin Örnek DML
        /* toplam insert
                    INSERT INTO PERSONDATA (LastName,FirstName,Adres1,Adres2,City,State,Zip)
    SELECT z.LastName,z.FirstName,z.Adres1,z.Adres2,z.City,z.State,z.Zip FROM (
    SELECT   TOP 1  “31” as LastName,”2″ as FirstName,”3″ as  Adres1,”4″ as  Adres2,”5″ as City,”6″ as State,”7″ as Zip  from persondata
    union
    SELECT   TOP 1  “231” as LastName,”2″ as FirstName,”3″ as  Adres1,”4″ as Adres2,”5″ as City,”6″ as State,”7″ as Zip  from persondata) z
                    */
        #endregion
        #region ExcelDosyasıOluştur – ExceleAktar
        string dosyaYolu = string.Empty;
        int sayfalamaSatirSayisi = 30; //  excelde bir sayfadaki maksimum sayfası satır sayısı
        int satirSayac = 0;
        int sayfaSayac = 0;
        int sayfaSayisi = 0; //Oluşturulması gereken sayfa adeti
        Microsoft.Office.Interop.Excel.Worksheet excelSayfasi = null;
        Microsoft.Office.Interop.Excel.ApplicationClass ExcelApp = null;
        int hWnd = 0; //windows tarafında excel’in processId’si
        private void ExceleAktar()
        {
            if (dt.Rows.Count > 0)
            {
                FolderBrowserDialog fbd = new FolderBrowserDialog();
                fbd.ShowDialog();
                if (fbd.SelectedPath.Trim().Length > 0)
                {
                    dosyaYolu = fbd.SelectedPath;
                    sayfaSayisi = (toplamSatirSayisi / sayfalamaSatirSayisi) < (Convert.ToDecimal(toplamSatirSayisi) / Convert.ToDecimal(sayfalamaSatirSayisi)) ? (toplamSatirSayisi / sayfalamaSatirSayisi) + 1 : (toplamSatirSayisi / sayfalamaSatirSayisi);
                    try
                    {
                        ExcelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
                        ExcelApp.Application.Workbooks.Add(Type.Missing);
                        for (int i = 0; i < sayfaSayisi; i++)
                        {
                            // Kolonları oluştur
                            sayfaSayac = sayfaSayac + 1;
                            excelSayfasi = (Microsoft.Office.Interop.Excel.Worksheet)ExcelApp.Sheets[sayfaSayac];
                            for (int j = 0; j < dt.Columns.Count; j++)
                            {
                                excelSayfasi.Cells[1, j + 1] = dt.Columns[j].ColumnName;
                            }
                            /////////////////////////
                            //Satırları Oluştur
                            for (int k = 0; k < (toplamSatirSayisi – sayfalamaSatirSayisi > sayfalamaSatirSayisi ? sayfalamaSatirSayisi : toplamSatirSayisi – sayfalamaSatirSayisi); k++)// Satır
                            {
                                for (int m = 0; m < dt.Columns.Count; m++) // Sütun
                                {
                                    excelSayfasi.Cells[k + 2, m + 1] = dt.Rows[satirSayac][m].ToString();
                                }
                                satirSayac++;
                            }
                        }
                        hWnd = ExcelApp.Application.Hwnd;
                        dosyaYolu = dosyaYolu + (“\\” + Guid.NewGuid().ToString() + “_” + DateTime.Now.ToString()).Replace(” “, “”).Replace(“.”, “”).Replace(“:”, “”).Replace(“;”, “”) + “.xls”;
                        ExcelApp.ActiveWorkbook.SaveAs(dosyaYolu, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel12, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
                        ExcelApp.ActiveWorkbook.Saved = true;
                        ExcelApp.Quit();
                        MessageBox.Show(“Dosya Oluşturuldu.İşlem Başarıyla Tamamlandı.”);
                        ExcelKillTeam(hWnd);
                    }
                    catch (Exception ex)
                    {
                        ExcelKillTeam(hWnd);
                        MessageBox.Show(“İşlemde hata oluştu. Oluşturulan excel dosyasını açmayınız. Lütfen tekrar deneyiniz. İşlem detayı…: ” + ex.Message);
                        return;
                    }
                }
                else
                {
                    MessageBox.Show(“İşlemlerin devam edebilmesi için oluşturulacak excel dosyası için kaydedilecek bir klasor seçmeniz gereklidir.”);
                    return;
                }
            }
            else
            {
                MessageBox.Show(“Excel Aktarımından Önce Sistemi Listeyi Doldurmanız Gerekmektedir.”);
                return;
            }
        }
        private void ExcelKillTeam(int hWnd)
        {
            try
            {
                if (ExcelApp != null)
                {
                    ExcelApp.Application.Workbooks.Close();
                    ExcelApp.Quit();
                }
                if (hWnd != 0)
                {
                    TryKillProcessByMainWindowHwnd(hWnd);
                }
            }
            catch (Exception)
            {
            }
        }
        [DllImport(“user32.dll”)]
        private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
        public static bool TryKillProcessByMainWindowHwnd(int hWnd)
        {
            uint processId;
            GetWindowThreadProcessId((IntPtr)hWnd, out processId);
            if (processId == 0) return false;
            try
            {
                System.Diagnostics.Process.GetProcessById((int)processId).Kill();
            }
            catch (ArgumentException)
            {
                return false;
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }
        #endregion
    }
}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: