Forum
merhabalar,
winform için sql serverdaki inseet, update, delete işlemlerinden sonra windows formdaki grid i otomatik olarak nasıl güncelleyebilirim? yani A Kullanıcısı bir kayıt girdiginde b kullanıcısının ekranında data gridinde bu yeni girilen kayıtın görünmesini istiyorum.
nasıl yapabilirim? teşekkürler.
merhabalar,
winform için sql serverdaki inseet, update, delete işlemlerinden sonra windows formdaki grid i otomatik olarak nasıl güncelleyebilirim? yani A Kullanıcısı bir kayıt girdiginde b kullanıcısının ekranında data gridinde bu yeni girilen kayıtın görünmesini istiyorum.
nasıl yapabilirim? teşekkürler.
hangi program geliştirme platformunu kullandığınıza göre bu sorunun cevabı nispeten değişir.
örneğin rad studio'da delphi ile uygulama geliştiriyorsanız tablolardaki id'leri belirli periyotlarla çekip geçici bir temp array'e yazarsınız. bir sonraki aşamada 2. bir array'e yazıp ilk array'den farklı ise bu durumda veri değişmiştir diyip örneğin ado bileşenlerini kullanıyorsanız dataset.requery ile veriyi yinelersiniz.
Başka teknikler de türetilebilir tabii
progarmı c# ile geliştiriyorum. belirli periyotlar ile bağlanıp çekmek bana pek mantıklı gelmiyor. mesela dakikada bir bağlanacagiz diyelim, ama gerçek zamanda tabloya veri kaydedilgini düşünelim. bu pek mantıklı durmuyor. mesela ben sql dependencyi inceledim o tam istedigim gibi fakat orda bazı kısıtlar var. mesela son 10 kayıt sqldependency ile çakilemiyor. ..
progarmı c# ile geliştiriyorum. belirli periyotlar ile bağlanıp çekmek bana pek mantıklı gelmiyor. mesela dakikada bir bağlanacagiz diyelim, ama gerçek zamanda tabloya veri kaydedilgini düşünelim. bu pek mantıklı durmuyor. mesela ben sql dependencyi inceledim o tam istedigim gibi fakat orda bazı kısıtlar var. mesela son 10 kayıt sqldependency ile çakilemiyor. ..
Hangi programlama dilini kullanırsanız kullanın; dilerseniz 3. parti bir eklentiden yararlanın; yine de pelirli periyotlarla sunucuya veri değişimi olup olmadığını sorgulamak zorundasınız. Ha bu yöntem benim ilk önerdiğim olur, başka olur o farklı mesele.
Mesela bakın şöyle birşey de yapabilirsiniz (Aslında ilk önerdiğim yöntemde veri çokluğu nedeniyle server'ı yorabiliriz düşüncesiyle tekniği geliştiriyorum): Yineleme istenen tabloda bir alan oluşturun, bir de trigger oluşturun. Bu trigger "eğer bir değer eklenir ya da değiştirilirse bu oluşturduğumuz alana o anın tarihi yazılsın" görevini üstlensin. Siz de düzenli olarak en büyük değeri çekip değişip değişmediğini kontrol edersiniz (primary key'in değişimini özellikle kontrol etmedik çünkü mevcut kayıtlar değiştiğinde primary key değişmez).
Bu arada ben kontrolden 1 dakikayı değil 1 sn. ya da 2 sn.yi kastediyorum. Daha bile kısa süreler (ms cinsinden) olabilir; performans testleriniz en iyi sonucu yakalatacaktır zaten.
bir thread açmak gerekecek ve bu thread devamlı sizin anlattığınız gibi tabloya sorgu atacak. ve kosul sağlanırsa gerekli işlemleri yapacak. peki bu işlem kurumsal projelerde kullanılan bir işlem midir? mesela sqldependency gibi, abone olan clientlara gerekli durumlar oluşunca haber veren bir yapı yokmudur?(sqldependency den daha iyi olan bir yapı.)
teşekkürler.
Dikkatinizden kaçan bir unsur var: Zaten dediğiniz yapı da benim bahsettiğim şekilde çalışıyor. Ama siz burada diyorsunuz ki "değişim sorgulamasını client uygulamaları değil de server yazılımı yapsın; değişim olursa client'lara bildirsin". Hay hay bu da uygundur. Ama bu durumda server tarafında benim dediğim tarz bir uygulama geliştirmelisiniz. Değişim olunca client'lara bildirecek. Ben tek başına çalışan uygulamalar için çözüm yazdım; siz artık bunu dilediğiniz gibi türetin. Daha iyi bir yöntem derseniz: bu sizin hayal gücünüze kalmış.