Skip to main content

AccessTr.neT M.



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

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

Çözüldü #1
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

Cevapla
#2
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.

Visual Basic Code
UPDATE [tabloAdi] SET [Ad] = [Ad]+1 where [As]=0;

Cevapla
...........
#3
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.

.rar aa.rar (Dosya Boyutu: 188,16 KB | İndirme Sayısı: 2)
Cevapla
#4
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
.rar Guncelle_hy0.rar (Dosya Boyutu: 45,83 KB | İndirme Sayısı: 4)

Cevapla
...........
#5
(29/06/2019 22:25)halily Adlı Kullanıcıdan Alıntı: 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 herhaldeImg-grin))
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

.rar k.rar (Dosya Boyutu: 124,68 KB | İndirme Sayısı: 2)
Cevapla
#6
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

Visual Basic Code
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

Cevapla
...........

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task