AccessTr.neT

Tam Versiyon: Otomatik Verilen Sayıya Sınır Koyarak Baştan Başlatmak
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2
Merhaba arkadaşlar. Ekteki projede Klasör No yazan yer şahıs sayısına göre otomatik sayı veriyor. Önce sırayla daha sonra hangi sayıda az şahıs varsa ona göre otomatik sayı veriyor. Ben bunu 10'a kadar versin şeklinde sınırladım. Yani 10 dan sonra tekrar 1'den başlıyor. Değiştirilmesi için sağ alt köşeye Klasör No butonu koydum ama kod bölümüne girmeden sınırı değiştiremiyorum. Klasör No butonuna basıp belirlediğimiz bir sayıya kadar sınır koymak istiyorum. Örneğin Klasör no tuşuna basınca açılan kutuya 5 yazalım. Otomatik sayı 5 e geldikten sonra yeni kayıt tekrar 1 den başlasın. Yardımcı olursanız sevinirim. Teşekkürler.
Merhaba

Private Sub klasorgnc_btn_Click()
Dim GGuncelle As String

GGuncelle = CStr(InputBox("***Klasör Sayısını Güncelledikten Sonra Programı Yeniden Başlatınız!..", "Lütfen Güncel Klasör Sayısını Giriniz."))

If GGuncelle = "" Then Exit Sub ' İptal düğmesine basıldığında çıkış yap

If Not IsNumeric(GGuncelle) Then
MsgBox "Hata!!! Lütfen sadece sayı giriniz!"
Exit Sub ' Sayısal olmayan bir değer girildiğinde çıkış yap
End If

If InStr(GGuncelle, ".") > 0 Then
MsgBox "Hata!!! Lütfen sadece tam sayı giriniz!"
Exit Sub ' Ondalık sayı girildiğinde çıkış yap
End If

' Modülün kodunu değiştirme_________________
If MsgBox("Klasör Sayısı " & GGuncelle & " olarak güncellensin mi?", vbYesNo) = vbYes Then
Dim CodeMod_Mdl As Object
Set CodeMod_Mdl = Application.VBE.ActiveVBProject.VBComponents("MdlKlasorNo").CodeModule
With CodeMod_Mdl
For i = 1 To .CountOfLines
If .Lines(i, 1) = "Public Const xKlasorNo As Long = " & xKlasorNo Then
.ReplaceLine i, "Public Const xKlasorNo As Long = " & CLng(GGuncelle)
End If
Next i
End With
' MdlKayıt kaydetme Deneme_________
DoCmd.Save acModule, CodeMod_Mdl
DoCmd.Close acModule, CodeMod_Mdl, acSaveYes
' MdlKayıt kaydetme Deneme_________BİTTİ
End If
' Modülün kodunu değiştirme_________________BİTTİ
End Sub



bu kodu deneyiniz
(24/05/2023, 17:17)prestij06 yazdı: [ -> ]Merhaba arkadaşlar. Ekteki projede Klasör No yazan yer şahıs sayısına göre otomatik sayı veriyor. Önce sırayla daha sonra hangi sayıda az şahıs varsa ona göre otomatik sayı veriyor. Ben bunu 10'a kadar versin şeklinde sınırladım. Yani 10 dan sonra tekrar 1'den başlıyor. Değiştirilmesi için sağ alt köşeye Klasör No butonu koydum ama kod bölümüne girmeden sınırı değiştiremiyorum. Klasör No butonuna basıp belirlediğimiz bir sayıya kadar sınır koymak istiyorum. Örneğin Klasör no tuşuna basınca açılan kutuya 5 yazalım. Otomatik sayı 5 e geldikten sonra yeni kayıt tekrar 1 den başlasın. Yardımcı olursanız sevinirim. Teşekkürler.

Her durumda, o alana tıklasam da Klasör no butonuna bassam da hata dönüyor. Tam olarak ne hyapmak istediğinizi anlayamadım. Tane tane aşama aşama işleyişi anlatır mısınız?
(25/05/2023, 13:23)C*e*l*o*y*c*e yazdı: [ -> ]Merhaba

Private Sub klasorgnc_btn_Click()
Dim GGuncelle As String

GGuncelle = CStr(InputBox("***Klasör Sayısını Güncelledikten Sonra Programı Yeniden Başlatınız!..", "Lütfen Güncel Klasör Sayısını Giriniz."))

If GGuncelle = "" Then Exit Sub ' İptal düğmesine basıldığında çıkış yap

If Not IsNumeric(GGuncelle) Then
MsgBox "Hata!!! Lütfen sadece sayı giriniz!"
Exit Sub ' Sayısal olmayan bir değer girildiğinde çıkış yap
End If

If InStr(GGuncelle, ".") > 0 Then
MsgBox "Hata!!! Lütfen sadece tam sayı giriniz!"
Exit Sub ' Ondalık sayı girildiğinde çıkış yap
End If

' Modülün kodunu değiştirme_________________
If MsgBox("Klasör Sayısı " & GGuncelle & " olarak güncellensin mi?", vbYesNo) = vbYes Then
Dim CodeMod_Mdl As Object
Set CodeMod_Mdl = Application.VBE.ActiveVBProject.VBComponents("MdlKlasorNo").CodeModule
With CodeMod_Mdl
For i = 1 To .CountOfLines
If .Lines(i, 1) = "Public Const xKlasorNo As Long = " & xKlasorNo Then
.ReplaceLine i, "Public Const xKlasorNo As Long = " & CLng(GGuncelle)
End If
Next i
End With
' MdlKayıt kaydetme Deneme_________
DoCmd.Save acModule, CodeMod_Mdl
DoCmd.Close acModule, CodeMod_Mdl, acSaveYes
' MdlKayıt kaydetme Deneme_________BİTTİ
End If
' Modülün kodunu değiştirme_________________BİTTİ
End Sub



bu kodu deneyiniz

hocam kodu denedim olmadı aynı sorun devam ediyor.
(29/05/2023, 17:17)mehmetdemiral yazdı: [ -> ]
(24/05/2023, 17:17)prestij06 yazdı: [ -> ]Merhaba arkadaşlar. Ekteki projede Klasör No yazan yer şahıs sayısına göre otomatik sayı veriyor. Önce sırayla daha sonra hangi sayıda az şahıs varsa ona göre otomatik sayı veriyor. Ben bunu 10'a kadar versin şeklinde sınırladım. Yani 10 dan sonra tekrar 1'den başlıyor. Değiştirilmesi için sağ alt köşeye Klasör No butonu koydum ama kod bölümüne girmeden sınırı değiştiremiyorum. Klasör No butonuna basıp belirlediğimiz bir sayıya kadar sınır koymak istiyorum. Örneğin Klasör no tuşuna basınca açılan kutuya 5 yazalım. Otomatik sayı 5 e geldikten sonra yeni kayıt tekrar 1 den başlasın. Yardımcı olursanız sevinirim. Teşekkürler.

Her durumda, o alana tıklasam da Klasör no butonuna bassam da hata dönüyor. Tam olarak ne hyapmak istediğinizi anlayamadım. Tane tane aşama aşama işleyişi anlatır mısınız?

hocam kısacası aşağıda yazdığım kodda "For guncelle = 1 To 5" kısmındaki 5 sayısını Klasör No butonuna basarak istediğim sayıyla değiştirmek istiyorum. O sayıyı güncellemek için kodun içine girmeden buton yardımıyla değişsin. Yardımcı olursanız sevinirim.

Dim x As Integer

For guncelle = 1 To 5
If DCount("*", "[denetim]", "isnull([bitisnedeni]) and [klasorno]=" & guncelle) = 0 Then
If IsNull(klasorno) Then klasorno = guncelle
Exit Sub
End If
Next
If IsNull(klasorno) Then klasorno = Dlookup ("[klasorno]", "[SqlEnDusuk]")
Değerler yerine değişkenler tanımlayın. Tanımladığınız değişkene butona basarak değer gönderebilirsiniz. Bu değeri de anlık olarak değişkeni okutarak kodun içinde kullanabilirsiniz.

mesela a adında bir değişken tanımladık. Ve bunu da formun güncellendiğinde olayına yerleştirdik.

dim a as string

Form üzerinde deger adında bir metin kutusuna a değişken değerini gönderdik ki butona basınca oraya gönderilen dosya üst sınırı görülsün. Bunun için bir olay yordamı kullanbilirsiniz.

me.deger = a

şimdi de kodunuzu buna göre düzenleyelim


Dim x As Integer
For x = 1 To deger
If DCount("*", "[denetim]", "isnull([bitisnedeni]) and [klasorno]=" & x) = 0 Then
If IsNull(klasorno) Then klasorno = x

Exit Sub
End If
Next

If IsNull(klasorno) Then klasorno = Dlookup ("[klasorno]", "[SqlEnDusuk]")

Klasör üst sınırı tanımlama butonuna da şu kodları yerleştirin

Private Sub klasorgnc_btn_Click()
a = InputBox("Sayıyı Giriniz")
Me.deger = a
Me.deger.Requery
End Sub

burda görüldüğü gibi metin kutusunda görülsün diye a değişkenini metin kutusuna bu butondan gönderdim. Açılan pencereye yazdığınız değer a değişkenine atanır ve eğer doğru şekilde güncellendiyse formda da görülür.

Bu arada formun ilk açılışına deger= 5 olarak varsayılan değeri gönderdim. Böylece üst sınır ellenmezse 5 olarak çalışıyor.

Bu işlemi ben aynen denedim. Tek bir yeri yapamadım, zaman da kalmadı. Değerler diyelim 1 den 5 e kadar ilerledi. Sonra üst değeri değiştirip mesela 7 yazdığımda otomatik olarak 5 ten devam edip mevcut kaydın üstüne onu 7'ye tamamlıyor. Bu otomatik verilen sayıları elinizle düzeltebiliyorsunuz. Bu for döngüsünde bir hata var anlamına geliyor. Artık orayı da siz halledersiniz. Fikir vermesi açısından örneği de yüklüyorum. KOlay gelsin.
Sayfalar: 1 2