14/01/2010, 10:12
Güncelleme
14/01/2010, 17:25
Seruz
Öncelikle şu konuyu okumalı ve gerekli düzeltmeleri yapmalısınız.
Yapılmaması gereken ölümcül hatalar
Yukarıdaki konuda anlatıldığı gibi, özellikle Tablo ve alan adlarında türkçe karakter ve boşluk kullanmamalısınız.
Soruna gelince, yanlış anlamıyorsam bir öğrencinin adresi değiştiğinde,
daha önceki adresleri neydi şeklinde bir kayıt yapmak istiyorsunuz.
Sonuçta bu iş tek tek öğrenci bazında yapılacağına göre update query ile
tüm öğrencilerin adreslerini güncellemenin bir manası yok.
Formda, hangi öğrencinin adresi değişiyorsa yani ADRESİ alanına yeni bir adres girilip kaydedildiğinde,
önceki adresi "ESKİ ADRESLER" tablosuna kaydetmesini sağladım.
Ayrıca [ESKİ ADRESLERİ] tablosunda adı ve soyadı alanına gerek yok, sildim.
Bu tabloya anahtar alan gerekli, ESKI_ID adında otomatik numaralı bir alan ekledim.
Böylece bu alanı kullanarak eski adresleri sıralama imkanı da oldu.
Her öğrencinin farklı bir TC nosu olacağına göre ARSİV tablosunda,
KAYITNO alanını silip, TC alanını anahtar olarak kullanabilirsiniz.
Yapılmaması gereken ölümcül hatalar
Yukarıdaki konuda anlatıldığı gibi, özellikle Tablo ve alan adlarında türkçe karakter ve boşluk kullanmamalısınız.
Soruna gelince, yanlış anlamıyorsam bir öğrencinin adresi değiştiğinde,
daha önceki adresleri neydi şeklinde bir kayıt yapmak istiyorsunuz.
Sonuçta bu iş tek tek öğrenci bazında yapılacağına göre update query ile
tüm öğrencilerin adreslerini güncellemenin bir manası yok.
Formda, hangi öğrencinin adresi değişiyorsa yani ADRESİ alanına yeni bir adres girilip kaydedildiğinde,
önceki adresi "ESKİ ADRESLER" tablosuna kaydetmesini sağladım.
Kod:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim StrSQL
If Me.ADRESİ.Value <> Me.ADRESİ.OldValue Then
StrSQL = "Insert Into [ESKİ ADRESLERİ] (TC, [ESKİ ADRESLERİ]) "
StrSQL = StrSQL & " Values (" & Me.TC_KİMLİK_NO & ",'" & Me.ADRESİ.OldValue & "')"
CurrentDb.Execute StrSQL
Me.[ESKİ ADRESLERİ].Requery
End If
End Sub
Ayrıca [ESKİ ADRESLERİ] tablosunda adı ve soyadı alanına gerek yok, sildim.
Bu tabloya anahtar alan gerekli, ESKI_ID adında otomatik numaralı bir alan ekledim.
Böylece bu alanı kullanarak eski adresleri sıralama imkanı da oldu.
Her öğrencinin farklı bir TC nosu olacağına göre ARSİV tablosunda,
KAYITNO alanını silip, TC alanını anahtar olarak kullanabilirsiniz.
15/01/2010, 01:27
ensar236
Hocam çok teşekkürler ellerinize sağlık
15/01/2010, 12:28
ensar236
Sayın Seruz hocam ilginiz ve yardımlarınız için çok teşekkür ederim.
Hocam adres ve yurt bilgileriniz güncelleme sorgusu ile yapmaktayım. Bilgiler liste halinde Excel'de geliyor ben Say1 tabloyuna kaydedip toplu halde güncelliyorum. Bu şekilde çok kolay oluyor. Tabi güncelleme tek tek değil toplu halde oluyor. Vermiş olduğunuz Kod toplu halde yapacak şekilde yapılabilirmi?. Hocam toplu halde olmasa dahi bu haliyle bile çok güzel ellerinize sağlık.
Hocam eğer fazla olmasa bir de Adresi kısmı ve yurt adresi kısmına yeni bir adres girilip kaydedildiğinde, önceki adresleri "ESKİ ADRESLER" tablosuna kaydedilebilirmi? Teşekkürler.
Hocam adres ve yurt bilgileriniz güncelleme sorgusu ile yapmaktayım. Bilgiler liste halinde Excel'de geliyor ben Say1 tabloyuna kaydedip toplu halde güncelliyorum. Bu şekilde çok kolay oluyor. Tabi güncelleme tek tek değil toplu halde oluyor. Vermiş olduğunuz Kod toplu halde yapacak şekilde yapılabilirmi?. Hocam toplu halde olmasa dahi bu haliyle bile çok güzel ellerinize sağlık.
Hocam eğer fazla olmasa bir de Adresi kısmı ve yurt adresi kısmına yeni bir adres girilip kaydedildiğinde, önceki adresleri "ESKİ ADRESLER" tablosuna kaydedilebilirmi? Teşekkürler.
15/01/2010, 14:02
Seruz
Forma eklediğiniz butonlla yapılan toplu halde güncellemeyi düzelttim.
Önce "Yurt Güncelleme1" sorgusunu çalıştırıyor ve Say1 tablosunda gelen kayıtları karşılaştırıp, yurt alanı değişik olanları "ESKİ ADRESLERİ" tablosuna kaydediyor.
Sonra "Yurt Güncelleme2" sorgusu çalışıyor ve Say1 tablosundan gelen yeni yurt değerlerine göre "ARSİV" tablosunu güncelliyor.
--
İsterseniz formda tek tek de yapabiliyorsunuz.
ADRESİ alanı yerine YURT alanını kontrol ettirdim.
Önce "Yurt Güncelleme1" sorgusunu çalıştırıyor ve Say1 tablosunda gelen kayıtları karşılaştırıp, yurt alanı değişik olanları "ESKİ ADRESLERİ" tablosuna kaydediyor.
Sonra "Yurt Güncelleme2" sorgusu çalışıyor ve Say1 tablosundan gelen yeni yurt değerlerine göre "ARSİV" tablosunu güncelliyor.
--
İsterseniz formda tek tek de yapabiliyorsunuz.
ADRESİ alanı yerine YURT alanını kontrol ettirdim.
15/01/2010, 18:29
ensar236
Hocam çok teşekkür ederim. Gerçekten çok güzel olmuş,
Hocam kusura bakmazsanız bir sorum daha olacak
Güncelleştirme yaptığımız zaman adresleri güncelliyor.
Ancak örneğin say1 tablosunda 5 tane "Alaybey Yurdu" na kayıtlı şahıs var. Arsiv yurt adresinde örneğin Alaybey Yurdu' na 8 tane kayıtlı şahıslar var. Güncelleme neticesi Arsivde yurt adresi Alaybey Yurdu olan ancak Say1 bulunmayan şahıslarda aynen kalıyor. Say1 ile eşleşmeyen ve yurt isimleri aynı olan şahıslar da Eski Adresleri kısmına taşınabilirmi?
Hocam kusura bakmazsanız bir sorum daha olacak
Güncelleştirme yaptığımız zaman adresleri güncelliyor.
Ancak örneğin say1 tablosunda 5 tane "Alaybey Yurdu" na kayıtlı şahıs var. Arsiv yurt adresinde örneğin Alaybey Yurdu' na 8 tane kayıtlı şahıslar var. Güncelleme neticesi Arsivde yurt adresi Alaybey Yurdu olan ancak Say1 bulunmayan şahıslarda aynen kalıyor. Say1 ile eşleşmeyen ve yurt isimleri aynı olan şahıslar da Eski Adresleri kısmına taşınabilirmi?