@
feraz beyin belirttiği gibi.....
teorik olarak önerebileceğim şey tüm formdan çağırabileceğiniz bir dizi oluşturmak
alanlara değer atarken bu değerleri diziye yüklemek
ve son aşamada eski-yeni kıyaslaması yaparken bu dizi değerini çağırmak olabilir
satırının altına
satırını ekleyerek diziyi tanmladık
ilk değeri almak için gerekli kodlar
kontrol sırasında çalıştırılacak kod
kırmızı olanlar eklenmiş
yeşil olanlar değiştirilmiştir
'________________________________________________________________________________________________
x=0
For Each Kontrol In frm
Select Case Kontrol.ControlType 'Tüm kontrolleri gözden geçirelim..
Case acTextBox, acComboBox, acCheckBox, acOptionGroup
'Boş verilere değer atayalım..
EskiData =
nz(EskDgr(x))
YeniData =
nz(kontrol)
If EskiData <> YeniData Then
'Diğer değişkenleri tanımyalım
Tablo = frm.RecordSource
kllnc = AktifKullanici
Zmn = Now()
Msj = "Kayıt Değiştirildi"
'Değişiklikleri kaydedelim..
Sorgu = "INSERT INTO TGuncellemeKaydi ([Tablo], [KayitNo], [FormAdi], [DenetimAdi], " _
& "[EskiVeri], [YeniVeri], [Kullanici], [Zaman],[Silinme]) " _
& "VALUES ('" & Tablo & "', '" & KayitKimligi & "', '" & frm.name & "', " _
& "'" & Kontrol.name & "', '" & EskiData & "', '" & YeniData & "', " _
& "'" & kllnc & "', '" & Zmn & "', '" & Msj & "')"
CurrentDb.Execute Sorgu
End If
x=x+1
End Select
Next Kontrol
'__________________________________________________
gerisi size kalmış
Not: diziye değer atama mantığı for each döngüsünün nesneleri aynı sırayla aldığı varsayımı üzerine kurulu
hatalı bir varsayım olabilir o durumda diziye nesne adı ve değeri atanıp tekrar döngüyle kontrol edilebilir