Autonumber Sütununun Aynı Kalması Veya Bir Artması

1 2 3 4
28/06/2019, 21:25

10pele10

Merhaba,
Ekte ki resimdede açıklamaya çalıştığım gibi Ad ve As diye iki sütun var.As değerinin 0 ve 1 olmasına göre Ad sütunu aynı kalıyor veya 1 artıyor.Bunu sadece query kullanarak yapma şansı var mıdır(Kod yazmayı bilmediğim için sadece query ile yapmak istiyorum,hazır kod yollasanız bile nasıl çalıştırılacağını da bilmediğimden deediğim gibi query ile çözüm rica ediyorum)

Bu sanki Autonumber gibi ama dediğim gibi As değerinin 0 ve 1 olmasına göre Ad sütunu aynı kalıyor veya 1 artıyor[attachment=30404]
28/06/2019, 23:48

berduş

resim eklenmemiş kontrol eder misiniz?
soruda belirtilmemiş ama başlıkta "auto number/otomatik sayı " olduğu vurgulanmış, bildiğim kadarıyla otomatik alanlar -yapısını değiştirmediğiniz sürece- değişmez, artırıp azaltamaz başka bir değer atayamazsınız. ama eğer "Ad" alanı otomatik sayı değilse sorguyla olur, ama sorun şu bu sorgu kaç defa çalışacak ve çalıştırıldığında "AS" sütunundaki değer 0'dan 1'e çevrilecek mi yoksa aynı mı kalacak?
eğer aynı kalacaksa ve sorgu da birden fazla çalıştırılacaksa her defasında AS=1 için AD=AD+1 olacak mı? genel olarak güncelleme sorgusunun kodu aşağıdaki gibidir.
dilerim işinize yarar.
not : As ve Ad alanlarının sayısal veri olduğu varsayılmıştır.
UPDATE [tabloAdi] SET [Ad] = [Ad]+1 where [As]=0;
29/06/2019, 10:28

10pele10

Merhaba,Ekte olan Excel dosyası ile olayı açıklamaya çalıştım
Dediğim gibi kod yazmayı bilmiyorum ne yapıyorsam Make Table query,Append query,Delete query,Select query ile yapabiliyorum.
Bunu bu şekilde nasıl yapabilirim bu konuda yardım rica ediyorum.
29/06/2019, 22:25

berduş

sayın @10pele10
öncelikle tekrar belirteyim otomatik sayı alanlarının değerini -tablonun yapısını değiştirmeden- değiştiremezsiniz. en azından ben öyle biliyorum o nedenle "as2" diye bir alan tanımladım işlemi onun üzerinden gerçekleştirdim.
1 - maalesef sadece sorguya dayalı yapamadım o nedenle kodla yaptım
2 - örnek vtniz olmadığı için kendimce bir tane oluşturdum kendi tablonuza uyarlarsınız[attachment=30407]
30/06/2019, 18:27

10pele10

(29/06/2019, 22:25)halily yazdı: sayın @10pele10
öncelikle tekrar belirteyim otomatik sayı alanlarının değerini -tablonun yapısını değiştirmeden- değiştiremezsiniz. en azından ben öyle biliyorum o nedenle "as2" diye bir alan tanımladım işlemi onun üzerinden gerçekleştirdim.
1 - maalesef sadece sorguya dayalı yapamadım o nedenle kodla yaptım
2 - örnek vtniz olmadığı için kendimce bir tane oluşturdum kendi tablonuza uyarlarsınız
Halil bey,
Merhaba.Öncelikle bana yardım ettiğiniz için teşekkür ediyorum.
Ben office 2000 kullanıyorum dolayısı ile benim Access versiyonum 2000.Biraz demode kaldım herhalde Ekte benim deneme db var.Sizin yolladığınızı benimkine adapte etmeye çalıştım ama olmadı.Ekteki resimdeki hatayı veriyor,sorun nerede acaba?Ekte ki db de tablo ve form var ama formda ki hatadan dolayı zannediyorum açılırken hata veriyor
Yardımlarınız için tekrar teşekkür ediyorum
Selamlar
30/06/2019, 19:49

berduş

maalesef gönderdiğiniz form bende açılmadı ama -yanılmıyorsam- sorun eski Access sürümlerinde "ADO" nun olmamasından kaynaklanıyor.
kodu değiştirdim dilerim sorunsuz çalışır
referanslardan "Microsoft DAO 3.x Object Library" etkinleştirmelisiniz buradaki 3.x ofis sürümüne göre değişebilir
Private Sub BtnGuncelle_Click()
'referans eklemeniz gerekebilir "Microsoft DAO 3.x Object Library" referansını eklemelisiniz
Tbas = Now
Dim rS As Recordset '<== burada hata verirse ==> Dim rS As DAO.Recordset de olabilir <== olarak değiştirin
Dim sOrGu, SqlGuncelle As String
Dim x As Long

sOrGu = "select * from tbltablo order by sno"
Set rS = CurrentDb.OpenRecordset(sOrGu)
If rS.RecordCount = 0 Then GoTo 10
rS.MoveLast
rS.MoveFirst
x = 0
Do Until rS.EOF
x = x + IIf(DLookup("as", "tbltablo", "sno=" & rS.Fields("sno")) = Nz(DLookup("as", "tbltablo", "sno=" & rS.Fields("sno") - 1)), 0, 1)
SqlGuncelle = "UPDATE TblTablo SET TblTablo.as2 =" & x & " where sno=" & rS.Fields(0)
CurrentDb.Execute SqlGuncelle
rS.MoveNext
Loop
10
'süre hesapla_______________________________________
Tbit = Now
Sure = DateDiff("s", Tbas, Tbit)
tSny = Sure Mod 60
tDk = Sure \ 60
MsgBox ("İşlem " & tDk & " dakika :" & tSny & " saniyede bitti")
'süre hesapla_______________________________________Bitti
End Sub
1 2 3 4