Güncelleme yapamamanızın nedeni sorgununuzun Left Join ile birleşik ve gruplandırılmış olması. Bunu önelemenin en pratik ve performansı en yüksek yolu sorgu sonuçlarını geçici bir tabloya yazdırmak ve form kaynağı olarak bu tabloyu kullanmaktır. Form üzerinde yapacağınız düzenlemeler geçici tablo üzerinde olacağından güncellemeler bu tablodan pers no bazında ilgili tablolarda update edilebilir.
Ekli dosyayı inceleyin, temp table oluşturma ve formunuzun kaynağı olarak bu tabloyu kullanmakla neyi kastettiğimi anlayacaksınız. Ayrıca her yeni işlemde geçici tablonun temizlenrek mevcut verileriniz ile çalışması için Drop Table kullanımına dikkat edin. Bu formda istediğiniz düzenlemeleri yapabilirsiniz ve geçici tabloda bu değerler yer alır, bu tablodaki verilerle istediğiniz tablolardaki verilerinizi update edebilirsiniz. Buraya kadar ki kısım ve paylaştığım örnek mantığı anlamanız için, ancak çalışmanız özelinde takıldığım nokta şu:
Örnek olarak mesai saatleri toplamını, avans toplamını vs toplamlarını alıp personel bazında grupluyorsunuz, verilerin toplamlarını güncellemek çok mantıklı değil zira kişinin mesai toplamını 3 kayıdın toplamından aldığınızı farz edersek toplamı güncellemeniz bir anlam ifade etmeyecek zira toplamı oluşturan3 kayıt değişmemiş olacak ve tekrar çağırdığınızda yine eski toplamı göreceksiniz güncelleme sadece geçici tablo üzerinde kalmış olacak ki her yeni işlemde silindiğinden bir anlamda ifade etmeyecek. Burada bir planlama ve algoritma hatanız var. Kayıtları detay olarak tek tek görüp özet toplamlarını almak isterseniz mantıklı ancak toplamlar üzerinden gidip update işlemi gerçekleştirmeyi düşünmek yanlış bir yaklaşım. Farklı olarak update etmek istediğiniz kayıtların detaylarının açıldığı bir başka form tasarlayıp update işlemlerini bu form üzerinden yapmak ve update sonrasında ve/veya bu formun kapanışı ile mevcut formu requery ederek yeni halini görmek daha mantıklı bir yaklaşım olacaktır.
Başka Dosyadan Veri Alma
Konuyu Okuyanlar: