Sıra no düzenleme hakkında

1 2 3
05/02/2012, 14:36

perisanoglu

İgi ve yardımlarınız için teşekkür ederim.. Sledgeab hocamın yaptığı şekliyle oldu gibi ancak küçük bir ayrıntı kaldı.. Bu sorgu ile sadece form ve sorguda istediğim gibi sıralamayı yapıyor ama tabloda gerekli güncellemeyi yapmıyor. tablodaki kayıtlarda silinmiş olan kaydın nıra nosunu yine atlıyor..mesela sıra no 3 deki kaydı sildiğim zaman 1,2,4,5 şeklinde kalıyor..tabloyuda güncelletebilirmiyiz? sıra numarasını =DMax("[Sıra No]";"Pckasa")+1 ile yaptırdığım için tabloyu güncelleyemediğim zaman yeni kayıt dediğimde en son kayıt numarasının +1 ini veriyor.. aradan silinen kayıt numarası atladığı içinde yanlış numara vermiş oluyor..
05/02/2012, 16:21

ayhan2122

Sn perisanoglu;
SıraNO'yu anladığım kadarıyla tablonuzda göstermek istiyorsunuz. Bu yanlıştır. Her bir kaydın kimliğini "Id" alanında belirtmişsiniz. Tekrar bir id gibi SıraNO alanı gereksiz ve karıştırıcıdır.
Ama her zaman 1,2,3,... diye sıralı durmasını istiyorsanız bunu sorguda yapmalısınız. Tabloda olmamalı.
Kayıt eklerken Id en son hangi sayıda idiyse Id'e +1 ekleyerek devam etmesi doğru olur.
Örneğin bir listede herzaman 1,2,3,.... diye sıralı olarak görünmesini isterseniz kaydı sildikten veya yeni kayıt ekledikten sonra listeyi requery yapın ( Liste0.requery ) Requery komutu ile listeniz otomatik olarak yeniden sıralanır.
Yoksa Id:1,2,3,4,5,6,7,8 olan 8 kayıttan 3 olanı silip, sonra yeni kayıt ekleyince bu yeni kaydın ( Id=9 olacak ve ) SıraNO=3 olsun derseniz bu yanlış bir yol olur.
05/02/2012, 17:10

perisanoglu

(05/02/2012, 16:21)ayhan2122 yazdı: Sn perisanoglu;
SıraNO'yu anladığım kadarıyla tablonuzda göstermek istiyorsunuz. Bu yanlıştır. Her bir kaydın kimliğini "Id" alanında belirtmişsiniz. Tekrar bir id gibi SıraNO alanı gereksiz ve karıştırıcıdır.
Ama her zaman 1,2,3,... diye sıralı durmasını istiyorsanız bunu sorguda yapmalısınız. Tabloda olmamalı.
Kayıt eklerken Id en son hangi sayıda idiyse Id'e +1 ekleyerek devam etmesi doğru olur.
Örneğin bir listede herzaman 1,2,3,.... diye sıralı olarak görünmesini isterseniz kaydı sildikten veya yeni kayıt ekledikten sonra listeyi requery yapın ( Liste0.requery ) Requery komutu ile listeniz otomatik olarak yeniden sıralanır.
Yoksa Id:1,2,3,4,5,6,7,8 olan 8 kayıttan 3 olanı silip, sonra yeni kayıt ekleyince bu yeni kaydın ( Id=9 olacak ve ) SıraNO=3 olsun derseniz bu yanlış bir yol olur.

ilginiz için teşekkür ederim sayın ayhan2122.. ben tam olarak ne istediğimi anlatamadım sanırım..bundan dolayıda istediğim yardımı alamadım. Saygılar iyi çalışmalar...
Ek Dosyalar

05/02/2012, 21:15

ayhan2122


Yanlış ama
Kod:
Dim KayitSayisi

KayitSayisi = DCount("Id", "pckasa")
    DoCmd.GoToRecord , , acFirst

        For i = 1 To KayitSayisi
            Me.[Sıra No] = KayitSayisi + i
            DoCmd.GoToRecord , , acNext
        Next i
    DoCmd.GoToRecord , , acFirst
        For i = 1 To KayitSayisi
            Me.[Sıra No] = i
            DoCmd.GoToRecord , , acNext
        Next i
06/02/2012, 01:03

perisanoglu

maalesef sorunum hala devam ediyor.. en son kodda da hata verdi
06/02/2012, 01:35

ozanakkaya

Yapılacak en hatalı işlem ne ise siz şu anda onu yapmaya çalışıyorsunuz.

Forma buton ekle, tıklandığında olayına aşağıdaki kodu yaz.

DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE pckasa SET pckasa.[Sıra No] = DCount('[Id]','pckasa','[Id]<=' & [Id]);"
DoCmd.SetWarnings True
Me.List2.Requery
1 2 3