En iyi yanıtlayıcılar
DataGridView Sorgu Sorucunu Log Alma

Soru
-
Merhabalar,
Sorgulama sonucu dataGridView'e gelen kayıtların ID'lerini Log almak ve bunları Log Tablomdaki her sorgulama sonucunda başka tabloda bulunan SorgudaGelenID isimli Column'a aralarında , veya - olacak şekilde kaydetmek istiyorum.
Örneğim:Kişiler tablomda
ID İsim Yer
1 Ali Ankara
2 Veli Ankara
3 Ahmet İstanbul
Kullanıcı Yere göre sorgulama yaparak Ankara'yı sorguladığında gelen ID'ler 1 ve 2 yi, başka bir tabloda SorgudaGelenID olarak eklemek istiyorum. Diğer Tablom ID, SorgudaGelenID, SaveUser, SaveDate.
Log Tablom.
ID SorgudaGelenID SaveUser SaveDate
1 1, 2 Admin 26.10.2015
Ya da daha mantıklı ne şekilde yapabilirim?
Yanıtlar
-
Eger yaptigin iste bir mantik oldugunu dusunuyorsan, kod da mantikli olabilir (gerci toplam kismini ben soyle yapardim (ben islemi genel olarak mantiksiz buluyorum):
private string Topla() { var idList = new List<int>(); foreach (DataGridViewRow row in Liste.Rows) { if (row.Cells["ID"].Value != null) { idList.Add(row.Cells["ID"].Value); } } return string.Join(", ", idList); } void DenetimLog() { try { Fonksiyonlar.DenetimLog DenetimLog = new Fonksiyonlar.DenetimLog(); DenetimLog.DosyaID = Topla(); DenetimLog.SaveDate = DateTime.Now; DenetimLog.SaveUser = AnaForm.UserID; DB.DenetimLogs.InsertOnSubmit(DenetimLog); DB.SubmitChanges(); } catch (Exception e) { Mesajlar.Hata(e); } }
- Yanıt Olarak İşaretleyen Serkan Canseven 2 Kasım 2015 Pazartesi 06:59
Tüm Yanıtlar
-
-
Merhabalar,
Sorgulama sonucu dataGridView'e gelen kayıtların ID'lerini Log almak ve bunları Log Tablomdaki her sorgulama sonucunda başka tabloda bulunan SorgudaGelenID isimli Column'a aralarında , veya - olacak şekilde kaydetmek istiyorum.
Örneğim:Kişiler tablomda
ID İsim Yer
1 Ali Ankara
2 Veli Ankara
3 Ahmet İstanbul
Kullanıcı Yere göre sorgulama yaparak Ankara'yı sorguladığında gelen ID'ler 1 ve 2 yi, başka bir tabloda SorgudaGelenID olarak eklemek istiyorum. Diğer Tablom ID, SorgudaGelenID, SaveUser, SaveDate.
Log Tablom.
ID SorgudaGelenID SaveUser SaveDate
1 1, 2 Admin 26.10.2015
Ya da daha mantıklı ne şekilde yapabilirim?
Sorgulamayı nasıl yaptığınızı bilmiyorum o yüzden entity framework üzerinden örnek vereceğim.
var users = dbContext.Users.Where(p=>p.City == "Ankara").ToList(); var selectedIds = string.Join(",",users.Select(s=>s.ID)); dbContext.Logs.Add(new Log(){SorgudaGelenID = selectedIds, SaveUser = 1, SaveDate = DateTime.Now}); dbContext.SaveChanges();
-
Database seviyesinde halletmen gereken bir seyin pesindesin. Kullandigin database her ne ise onunla ilgili "Audit" arastir.
Not: Diyelim ki bunu dil seviyesinde halletmen gerekiyordu ve hallettin. Elinde soyle bir log var:
ID SorgudaGelenID SaveUser SaveDate
1 1, 2 Admin 26.10.2015
2 2,3 Admin 27.10.2015
Bunun sana ne faydasi olacak, onu da iyice dusun.
-
-
-
Select'te zaten ne olabilir ki, birisi görmemesi gereken bir şeyi gördü mü diye kontrol etmek yerine onun görmemesini sağlamak daha mantıklı değil mi?
Audit'te kullandığım oluyor da genelde trigger ile alışmışım, birde ben belli sayıda değişiklikten sonra backup'ta atıyorum hazır yazmıştım bir ara sürekli onu kullanıyorum.
-
Yok mantik degil de zaten ornekte "Admin" bile var. Gormemesi gereken bir sey degil herhalde ama bunun ne faydasi var, onu bilmeden biz sadece fikir yurutuyoruz kendimizce :) Her selectin bir de (bence gereksiz) inserte yol acacagi dusunulunce, oldukca yavas bir sistem olacaktir.
-
Bu şekilde kodum ama mantıklı mı bilemiyorum.
void Topla() { foreach (DataGridViewRow row in Liste.Rows) { if (row.Cells["ID"].Value != null) { toplam += row.Cells["ID"].Value + ", "; } } } void DenetimLog() { Topla(); try { Fonksiyonlar.DenetimLog DenetimLog = new Fonksiyonlar.DenetimLog(); DenetimLog.DosyaID = toplam; DenetimLog.SaveDate = DateTime.Now; DenetimLog.SaveUser = AnaForm.UserID; DB.DenetimLogs.InsertOnSubmit(DenetimLog); DB.SubmitChanges(); } catch (Exception e) { Mesajlar.Hata(e); } }
-
Eger yaptigin iste bir mantik oldugunu dusunuyorsan, kod da mantikli olabilir (gerci toplam kismini ben soyle yapardim (ben islemi genel olarak mantiksiz buluyorum):
private string Topla() { var idList = new List<int>(); foreach (DataGridViewRow row in Liste.Rows) { if (row.Cells["ID"].Value != null) { idList.Add(row.Cells["ID"].Value); } } return string.Join(", ", idList); } void DenetimLog() { try { Fonksiyonlar.DenetimLog DenetimLog = new Fonksiyonlar.DenetimLog(); DenetimLog.DosyaID = Topla(); DenetimLog.SaveDate = DateTime.Now; DenetimLog.SaveUser = AnaForm.UserID; DB.DenetimLogs.InsertOnSubmit(DenetimLog); DB.SubmitChanges(); } catch (Exception e) { Mesajlar.Hata(e); } }
- Yanıt Olarak İşaretleyen Serkan Canseven 2 Kasım 2015 Pazartesi 06:59
-
Bu işteki asıl amacım kullanıcının sorgulama sonucunda yapması gereken işleri yapıp yapmadığını kontrol etmek. Örneğin sorgunun sonucunda 10 kayıt geliyor ise bunun sonucunda 10 tane form üretiyor program, yani yapılacak 10 iş var demek ancak kullanıcı bu işlerden kaç tanesini yerine getirdi onları takip etmek istiyorum. Sorgu sonucu 10 iş çıksa da 2 işin evrakını çöpe atar 8 iş yapabilir. Bunu takip etmek istiyorum. O sorgu sonucunda kaç kayıt geldiğini takip etmek istiyorum.