Listenin Detay Tablosu Olarak Kullanılması

Bu örnek senaryoda, PROJELER formunun MET_PROJELER adında tablosu bulunmaktadır. Manuel olarak detay tablosu oluşturmak için ana tablonun UserTableID sine bağlı olan MasterTableID gibi bir ID kolonunu da unutmadan create sorgusu ile tablo oluşturulmalıdır. Bu tablo için MET_PROJELER_DETAIL adında bir tablo oluşturulmaktadır. Böylece, bir ana tablo ve bu tabloya bağlı bir detay tablosu veri tabanında yer almaktadır.

Formun kayıtta yenilemesin özelliğinin açık olması gerekmektedir.

Ürün Detay kısmındaki sadece formda olarak  kullanılan alanlar Detail tablosuna insert yapabilmek için bulunmaktadır.

UrunAdi, Aciklama, Tutar, GuncelleID, OnayID, UDTI isimli alanlar sadece formda olarak ayarlanmalıdır. UrunAdi, Aciklama, Tutar alanları detay tablosuna eklenmelidir.  GuncelleID, OnayID alanları sil ve güncelle butonlarıyla çalışır. UDTI alanına, listede çift tıklandığında UserDetailTableID nin getirilmesi sağlanmaktadır.

Aşağıda formda bulunan elemanlar ve aksiyonları anlatılmaktadır.

Ekle butonun içindeki aksiyonlar şu şekildedir;

Ekle butonun içindeki aksiyonlar şu şekildedir;

Detay alanının boş girilmesini önlemek için kayıt kontrol eklenebilir.

Kayıt kontrollerden sonra insert sorgusu bir aksiyona eklenir. Bu insert sorgusu için Tıklandığında değer güncelleme veya İçerik çağır (Query) aksiyonu da kullanılabilir. Bu aksiyonda çalışma koşulu da bulunmaktadır. Bu koşula göre ana tablonun IDsi bulunmuyorsa yani kayıt yapılmış bir veri değilse bu aksiyonun çalışmaması sağlanmaktadır.

SQL sorgusu şu şekildedir;

INSERT INTO  MET_PROJELER_DETAIL

(

CreateDate, 

CreateUser, 

UpdateDate, 

UpdateUser, 

MasterRecordGuid, 

MasterTableID, 

IntegrationID, 

LineNumber, 

Aciklama, 

Tutar, 

UrunAdi)

VALUES(

GETDATE(),

‘$PActiveUser’,

GETDATE(),

‘$PActiveUser’,

NEWID(),

‘$PUserTableID$’,

0,

0,

‘$PAciklama$’ ,

‘$PTutar$’ ,

‘$PUrunAdi$’

)

Çalıştırma koşulundaki sorgu şu şekildedir;

SELECT CASE WHEN  ‘$PUserTableID$’ =” THEN 0 ELSE  1 END

Bir sonraki aksiyon için eğer evrak kayıt daha önceden yapılmamış ise burada evrak kayıt yapılması sağlanmaktadır. Eğer bu aksiyon çalışırsa , insert sorgusu için Form aksiyonlarına eklenebilecek bir aksiyon bulunmaktadır. Bu aksiyonun insert sorgusu ve evrak kayıt aksiyonu ile aynı anda kullanılamadığı için bu insert sorgusu formda kaydedildikten sonra aksiyonunda kullanılmaktadır. Yeni bir evrak ana tabloya kaydediliyorsa  bu aksiyon sadece o zaman çalışmaktadır. Bu aksiyon ekle butonunun aksiyonlarından hemen sonra aşağıda anlatılmaktadır.

Çalıştırma Koşuluna aşağıdaki sorgu eklenmelidir;

SELECT CASE WHEN  ‘$PUserTableID$’ <>” THEN  0 ELSE 1 END

Eğer kaydedilmiş evrak client ekranında görünmekte ise bu koşul ile bir daha ana tabloya kayıt yapılmamaktadır.

Ekle butonundaki bir sonraki aksiyonda liste, değer güncelleme ile tetiklenmektedir.

Ekle butonunun son aksiyonu ise detaya eklenen veri girişlerinin  içeriğinin temizlenmesi sağlanmaktadır.

Formun kendisine de iki aksiyon eklenmektedir.

İlk aksiyon evrak kayıttan sonraki insert sorgusu için oluşturulmaktadır. Bu aksiyon sadece ana tabloda ilk defa oluşturulan evrak için çalışmaktadır.

Aksiyonun içeriğinde sql sorgusu alanında yine yukarıda belirtilen insert sorgusu bulunmaktadır (Yine bu aksiyon içerik çağır query aksiyonu ile de oluşturulabilmektedir).

Bunun çalışma koşulu da ürün adı boş ise çalıştırma olarak yazılmaktadır. Burada detayda olacak zorunlu alanlar koşula yazılabilmektedir.

Diğer aksiyon da kayıttan sonra listeyi güncellemek için oluşturulmaktadır.

Listenin özelliklerinden Sql sorgusu yazılmalıdır.

SELECT UserDetailTableID, UrunAdi, Aciklama, Tutar

 FROM MET_PROJELER_DETAIL WITH(NOLOCK)

WHERE MasterTableID= ‘$PUserTableID$’

Listenin içinde de  4 aksiyon bulunmaktadır.  Çift tıklandığında ilgili alanların güncellenmesi sağlanmaktadır.

İlk aksiyonda Ürün Adının bulunduğu metin kutusuna, listede tıklanan satırdaki bilgisinin yazdırılması sağlanmaktadır.

Sql sorgusu alanındaki sorgu;

SELECT UrunAdi FROM MET_PROJELER_DETAIL WITH(NOLOCK)

WHERE UserDetailTableID=’$PUserDetailTableID$’ Diğer iki aksiyonda da aynı şekilde Tutar ve Açıklama alanlarını tetiklemektedir

Son aksiyon da UserDetailTableID’yi yazdırmak için  UDTI adlı rakam kutusuna değer güncelleme yapılmaktadır.

Burada SELECT $P yazılarak detay tablosunun IDsi  UDTI alanına yazdırılmaktadır.

Güncelle Butonu için listenin çift tıklandığında aksiyonlarındaki güncellemelere ihtiyaç duyulmaktadır. Güncelle butonunun içinde iki aksiyon bulunmaktadır.

Kayıt kontrol de güncellenecek verinin IDsi kontrol edilmelidir. ID varsa güncelleme yapılmaktadır, varsa listeden seçim yapılması gerektiği mesajı verilmektedir.

SQL sorgusu;

SELECT CASE WHEN ‘$PUDTI$’ =0 THEN 0 ELSE 1 END

Diğer aksiyon, GuncelleID alanını tetiklemek için oluşturulmaktadır.

SELECT 1 olarak herhangi bir değer atanır ve güncelleme için onay istenmektedir. Onay alınırsa GuncelleID alanın değeri 1 olmaktadır.

GuncelleID alanında 3  değer değiştiğinde aksiyonu bulunmaktadır.

İlk aksiyonda içerik çağır ile Update sorgusu bulunmaktadır. Detay tablosundaki alanlar update ile güncellenmektedir.

Sql sorgusu;

UPDATE MET_PROJELER_DETAIL 

SET UrunAdi=’$PUrunAdi$’  ,

Aciklama = ‘$PAciklama$’ ,

Tutar = ‘$PTutar$’

WHERE UserDetailTableID=’$PUDTI$’

Listenin son hali için, liste değer güncelleme ile tetiklenmektedir.

Son aksiyonda, yapılan işlemlerden sonra değeri değişen içerikler temizlenmektedir.

İçerik temizleme için Ürün adı, Açıklama, Tutar, OnayID ve UDTI alanları işaretlenmektedir.

Sil Butonu için listenin çift tıklandığında aksiyonlarındaki güncellemelere ihtiyaç duyulmaktadır. Sil butonunun içinde iki aksiyon bulunmaktadır.

İlk aksiyon UDTI alanın değişip değişmediği kontrol edilmektedir. Eğer değişmemiş ise listeden çift tıklayarak seçim yapılması mesajı verilmektedir.

Diğer aksiyonda OnayID ye bir herhangi bir değer atanması sağlanmaktadır.  SELECT 1 yazılarak OnayID alanına 1 değerinin yazdırılması sağlanmaktadır. Onay iste özelliğinden mesaj yazılmaktadır.

OnayID alanı da GuncelleID alanı ile aynı mantıkta çalışmaktadır.

OnayID alanında 3 tane aksiyon bulunmaktadır.

İlk aksiyonda Delete işlemi için sorgu oluşturulmaktadır. İçerik Çağır(Query) ile bu işlem gerçekleştirilmektedir.

Sql sorgusu;

DELETE FROM MET_PROJELER_DETAIL WHERE UserDetailTableID=’$PUDTI$’

Listenin son hali için değer güncelleme aksiyonu da eklenmektedir.

Son aksiyonda silme işlemi tamamlandıktan sonra içerik temizleme gerçekleştirilmektedir. İçerik temizleme için UrunAdi, Aciklama, Tutar, UDTI ve GuncelleID seçilmektedir.

Ana tablodaki proje adı kısmında yüklenen projelere tekrar ulaşıp ekrana doldurabilmek için bir ikon eklenmektedir.

Bu metin kutusunun iki aksiyonu bulunmaktadır.

İlk aksiyon ikon eklendiğinde Form aç liste aksiyonudur. Bunun için SQL sorgusuna ana tablonun sorgusu yazılmaktadır.

Ana tablonun verileri geldikten sonra liste güncellenmektedir.

Son olarak ID basılan alanların ekranda görünmemesi için yetki atanmalıdır.

Bu GuncelleID, OnayID, ve UDTI alanlarını göremez hale getirmek için formda yetki özelliği kullanılmalıdır.

Formun kendisine gelip Yetki alanından yeni yetki ekle ye tıklanmalıdır.

Alan yetkileri tipi seçilerek Yetki olarak Alanları Göremez seçilmektedir. Alanlar kısmından elemanlar seçilmektedir . Kullanıcı Tipinden ,  Kullanıcılar belirlenmektedir. Kimsenin buradaki verileri görememesi için tüm kullanıcılar seçilmelidir.

Aynı zamanda  bu alanlar için Alan yetkileri tipi seçilerek Yetki olarak Alanları Değiştiremez seçilmektedir. Alanlar kısmından elemanlar seçilmektedir. Kullanıcı Tipinden , Kullanıcılar belirlenmektedir. Kimsenin buradaki verileri değiştirememesi için  tüm kullanıcılar seçilmelidir.

Ekranda bulunan yenile butonu ekrandaki kaydı temizleyip, yeni bir kayıt için formu yenilemektedir.

Bu buton içinde bulunan aksiyon, Evrak Yeni aksiyonudur.

Formun ekran görüntüsü aşağıdaki gibidir.

Was this article helpful?

İlgili Konular