wiki-framework-import-kernel

IMPORT KERNEL

Konu başlıkları

 Import Kernel Nedir ?

İmport Kernel , tablo halinde kayıtlarımızın bulunduğu *.ods uzantılı dosyadan kayıtları alıp , veri tabanındaki tablolara kaydeden kernel'dır.

 Import Kernel Sınıfı

Bu sınıfı miras alarak farklı İmport Kernel'lar oluşturulabilir.

Zorunlu Fonksiyonlar

SET_DEFAULT_ROW_VALUES

Ods dosyasındaki veriler veritabanı tablolarına aktarılırken boş bırakılan alanlara atanacak değerleri belirlediğimiz fonksiyondur.

NOT : Burdaki zorunlu ve default alan sayısı dosyadaki alan sayısından fazla olmamalıdır.

  • Adres içe aktarmak için yazılmış bir bir koda bakalım..Adres alanları için default değerler oluşturuluyor..
QStringList ADRES_IMPORT::SET_DEFAULT_ROW_VALUES()
{
   QStringList zorunlu_ve_default_alanlar;
   zorunlu_ve_default_alanlar << "*"; // Zorunlu alanlar
   zorunlu_ve_default_alanlar << "";
   zorunlu_ve_default_alanlar << "";
   zorunlu_ve_default_alanlar << "";
   zorunlu_ve_default_alanlar << "";
   zorunlu_ve_default_alanlar << "";
   zorunlu_ve_default_alanlar << "";
   zorunlu_ve_default_alanlar << "";
   zorunlu_ve_default_alanlar << "";
   return zorunlu_ve_default_alanlar;
}
IMPORT_ROW

Dosyadan alınan veriler bu fonksiyonda veri tabanına kaydedilir.Önceden grup seçildiyse burada kayıt gruba dahil edilir.

  • Adres kayıtları tablosuna dosyadan veri aktaran bir IMPORT_KERNEL örneğine bakalım.

Dosyadan alınan kayıt , veri tabanındaki tabloda varsa bu kayıt veri tabanındaki tabloya kaydedilmiyor.

    • Tablonun header bilgileri set ediliyor.. :
void ADRES_IMPORT::IMPORT_ROW( QStringList row )
{
   QStringList headers;
   headers << "Şahış/Firma Adı";
   headers << "Telefon";
   headers << "Ülke";
   headers << "İl";
   headers << "İlçe";
   headers << "Adres";
   headers << "E-mail";
   SET_HEADERS         ( headers       );
   SET_PROGRAM_ID      ( K9_PROGRAMI   );
   SET_MODUL_ID        ( ADRES_MODULU  );

}

    • Tablodaki bilgiler veri tabanına kaydediliyor.. :
void ADRES_IMPORT::IMPORT_ROW( QStringList kayit_bilgisi_list )
{
   if ( kayit_bilgisi_list.size() <= 0 ) {
       return;
   }
   QString firma_sahis_adi = kayit_bilgisi_list.at(0).mid(0, 60) ;
   SQL_QUERY query (DB);
   query.PREPARE_SELECT( "adr_adresler" , "adres_id" , "firma_sahis_adi =:firma_sahis_adi " );
   query.SET_VALUE( ":firma_sahis_adi" , firma_sahis_adi);
   if( query.SELECT() NE 0 ){
       return;
   }
   QString tel            = "";
   QString tel_alan       = "";
   QString tel_ulke       = "";
   QString adres_satiri_1 = "";
   QString adres_satiri_2 = "";
   QString adres_satiri_3 = "";
   TELEFON_BILGINI_PARSE_ET( kayit_bilgisi_list.at(1), &tel_ulke, &tel_alan, &tel );
   QString tum_adres = kayit_bilgisi_list.at(5);
   adres_satiri_1 = tum_adres.left(34);
   tum_adres.remove(0,34);
   if (tum_adres.size() > 0) {
       adres_satiri_2 = tum_adres.left(34);
       tum_adres.remove(0,34);
   }
   if (tum_adres.size() > 0) {
       adres_satiri_3 = tum_adres.left(34);
   }
   query.PREPARE_INSERT("adr_adresler","adres_id",
                        "adres_kart_turu,  "
                        "firma_sahis_adi,  "
                        "ilce,             "
                        "sehir,            "
                        "ulke,             "
                        "adres_satiri_1,   "
                        "adres_satiri_2,   "
                        "adres_satiri_3,   "
                        "tel_ulke_kodu,    "
                        "tel_alan_kodu,    "
                        "telefon,          "
                        "modul_id,         "
                        "program_id,       "
                        "email             ");
   query.SET_VALUE(":adres_kart_turu", FIRMA_KAYDI                 );
   query.SET_VALUE(":modul_id"       , ADRES_MODULU                );
   query.SET_VALUE(":program_id"     , K9_PROGRAMI                 );
   query.SET_VALUE(":firma_sahis_adi", firma_sahis_adi             );
   query.SET_VALUE(":ulke"           , kayit_bilgisi_list.at(2)    );
   query.SET_VALUE(":sehir"          , kayit_bilgisi_list.at(3)    );
   query.SET_VALUE(":ilce"           , kayit_bilgisi_list.at(4)    );
   query.SET_VALUE(":adres_satiri_1" , adres_satiri_1              );
   query.SET_VALUE(":adres_satiri_2" , adres_satiri_2              );
   query.SET_VALUE(":adres_satiri_3" , adres_satiri_3              );
   query.SET_VALUE(":email"          , kayit_bilgisi_list.at(6)    );
   query.SET_VALUE(":tel_ulke_kodu"  , tel_ulke                    );
   query.SET_VALUE(":tel_alan_kodu"  , tel_alan                    );
   query.SET_VALUE(":telefon"        , tel                         );
   int id = query.INSERT();
   if ( GET_GRUP_IDLERI()->size() > 0 ) {
       GRP_KAYDI_GRUPLARA_EKLE(K9_PROGRAMI, ADRES_MODULU, id, GET_GRUP_IDLERI() );
   }
}
  • ADRES IMPORT örneğini kullanarak *.ods uzantılı dosyadaki adresleri içe aktaralım.. :
    • Dosya seçildi ve içe aktarmak için kullanıcı isteniyor
ADRES_IMPORT_1
ADRES_IMPORT_2
    • Kullanıcı onayladıktan sonra kayıtlar içe aktarıldı..
ADRES_IMPORT_3
  • Şimdide ADRES IMPORT örneğini kullanarak daha önce eklediğimiz kayıtlardan 3 tanesini veri tabanımızdan silerek ,

aynı dosyayı tekrar içeri aktarmaya çalışalım..

    • "Muiz Kohell" , "SSK" ve "Tamer" firma veya şahıs adındaki kayıtlar veri tabanından siliniyor..
ADRES_IMPORT_4
    • Daha sonra aynı dosya tekrar içeri aktarmak isteniyor.Veri tabanına sadece sildiğimiz kayıtlar ekleniyor..
ADRES_IMPORT_5
ADRES_IMPORT_6
ADRES_IMPORT_7
    • Veri tabanında olmayan kayıtları eklendi ve işlem tamamlandı..
ADRES_IMPORT_8

Hazır Fonksiyonlar

SET_HEADERS

Önizleme tablosunun başlıklarını set eder.

GET_GRUP_IDLERI

İçe aktarılacak verilerin grup id'lerini liste olarak verir.

SET_PROGRAM_ID

Program id'sini set eder.

SET_MODUL_ID

Modül id'sini set eder.

ONIZLEMEYI_GOSTER

Dosyadan alınan kayıtları form ekranında tablo şeklinde gösterir.

TABLO_DOLDUR

Önizleme tablosunu , dosyadan alınan verilerle doldurur.

SET_LIST_VALUES

Verilen aralıklardaki satır ve sutunlardaki alanlara verilen default değerleri atar.

ROW_DATA_KONTROL

Dosyadan alınan verilerde boş bırakılan alan olup olmadığını kontrol eder.Ayrıca default değerler alması gereken alanlara default değerler atar.