for next ve güncelle

1 2
27/11/2015, 17:49

ates2014

Merhaba arkadaşlar,
benim yapmak istedigim olay, 2500 adet müşterim var,
müşterinin baş harfine göre sıra nımarası verdirmek,
öncelikler mevcut numaraları degiştirmem gerek
a harfiyle başlayan bir müşteriyi seçip numaralandır butonuna tıkladığımda
Baş harfi A olan müşterilere sırasına göre A1 A2 A3 A4 A5
B harfi ile başlayan bir müşteri seçip aynısını yapmak istiyorum,
ben biraz uğraştım yapamadım malesef, kodlarımı aşağıya ekliyorum,

Dim ne, i As String, a, e As Integer
i = Left([Firmaİsmi], 1)
Me.BasHarf = Left([Firmaİsmi], 1)//seçtiğim müşterinin baş harfini alıyorum
e = DCount("Firmaİsmi", "Firmalar", "Left([Firmaİsmi], 1)='" & i & "'")//seçtiğim harfin kaç adet olduğunu buluyorum
For a = 1 To e
Me.numm = Me.numm + 1
Dim guncelle As String
guncelle = "UPDATE Firmalar SET MusNo= BasHarf & numm +1 WHERE Left([Firmaİsmi], 1)= BasHarf ;"
DoCmd.SetWarnings False
DoCmd.RunSQL guncelle
DoCmd.SetWarnings True
Next a
bu kod hepsine aynı sayıyı atıyor.?
27/11/2015, 18:29

ozanakkaya

Kodun bulunduğu örnek uygulamayı ekleyiniz.
27/11/2015, 21:52

ates2014

Pardon ozan hocam, belgeyi ekliyorum.
28/11/2015, 03:16

direnist

Merhaba;
Uygulamanızdaki forma test amaçlı bir buton ekleyip Click olay yordamına aşağıdaki kodu yapıştırarak dener misiniz?
Kod:
Dim sql, guncelle As String
Dim adet, i, d As Integer
Dim harfler() As Variant
harfler = Array("A", "B", "C", "Ç", "D", "E", "F", "G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z", "W", "Q", "X")
'MsgBox harfler(0)
'Exit Sub




For i = 0 To (UBound(harfler))
    sql = "SELECT [Firmalar].[SiraNo],Firmalar.Firmaİsmi FROM Firmalar WHERE Firmalar.Firmaİsmi Like '" & harfler(i) & "*'"
    Me.Liste13.RowSource = sql
    Me.Liste13.Requery
        adet = Me.Liste13.ListCount
            If adet = 0 Then GoTo 18
                For d = 0 To adet
                    Me.Liste13.Selected(d) = True
                    guncelle = "UPDATE Firmalar SET MusNo='" & harfler(i) & d + 1 & "' WHERE [Firmalar].[SiraNo]=" & Me.Liste13.Column(0)
                    Debug.Print guncelle
                    CurrentDb.Execute guncelle
                Next d
18
Next i
       MsgBox "bitti"
    
    Me.Liste13.RowSource = "SELECT [Firmalar].[SiraNo], [Firmalar].[Firmaİsmi] FROM Firmalar"
    Me.Liste13.Requery
    
28/11/2015, 08:13

ates2014

Çok çok teşekkür ederim sayın Direniş, ellerinize sağlık,
Bundan sonraki kayıtların düzenli gitmesi için bir koda daha ihtiyacım olacak,
Yeni müşteri kaydı yaparken, ismi yazıp çıktığımda MusNo ya numarayı otomatik atmasını nasıl yapabiliriz,
örneyin Mehmet bal yazıp çıkınca M harfindeki
en son numarayı bulup 1 artırarak yazması,
örneyin son kayıt M32 ise Mehmet bal a M33 yazması gibi?
28/11/2015, 17:45

direnist

Merhaba,
FirmaIsmi textbox ınızın AfterUpdate olay yordamına aşağıdaki kodu yazarak deneyebilir misiniz?
Kod:
Dim BasHarf As String
Dim sonKaydinMusteriNosu As String
Dim sonKaydinMusteriSirasi As String
BasHarf = Left(Me.Firmaİsmi, 1)
sonKaydinMusteriNosu = DLast("MusNo", "Firmalar", "Firmaİsmi LIKE '" & BasHarf & "*'")
sonKaydinMusteriSirasi = Mid(sonKaydinMusteriNosu, 2, (Len(sonKaydinMusteriNosu) - 1))
Me.MusNo = BasHarf & CInt(sonKaydinMusteriSirasi) + 1
1 2