bu arada sen access'de visual basic komutlarının tamamını kullanamazsın yukardaki kodları incele görürsün.

dostum yardımcı olabildiysem ne mutlu bana тнєвlα¢к∂

ParamArray olarak tanımladığınız parametreyi en sona yerleştirin. Aksi halde hata oluşur. DAHA GÜZEL KAYIT SİLME Access'in kendi komut düğmesi sihirbazı ile gelen kayıt silme kodu ekrana uyarı iletisi çıkarıyor ve bu genelde iyi bir görüntü oluşturmuyor. Bunun yerine aşağıdaki kodu kullanabilirsiniz. Public Sub KayitSil On Error Resume Next If ShowMsg Then If MsgBox = vbNo Then Exit Sub End If If frm Is Nothing Then DoCmd. SetWarnings False 'Uyari mesajlarini gosterme. DoCmd. DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd. DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70 DoCmd. SetWarnings True 'Sonraki uyari mesajlarini gosterebilirsin. Exit Sub Else If frm. NewRecord And Then Exit Sub End If 'Yeni kayit ya da kayit degisikligi ise önce UNDO yap. If frm. Dirty Then DoCmd. DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 If Not frm. NewRecord Then 'Eski kayit ise DELETE With frm. RecordsetClone. Bookmark = frm. Bookmark. Delete. MoveNext If. EOF Then. MoveLast frm. Bookmark = . Bookmark End With End If End Sub Kullanımı şöyle: Call KayitSil Eğer ikinci parametreyi vermezseniz ya da False olarak verirseniz "Kayıt silinsin mi?" mesajı görünmez. Call KayitSil Aslında "Me"yi yani formun kendisini parametre olarak yollamanıza her zaman gerek yok. Call KayitSil ya da, Call KayitSil Bu şekilde isterseniz bir formdan ya da bir tablodan kendi mesajınızı göstererek kayıt silme işlemi yaptırabilirsiniz. Gördüğünüz gibi bazı parametreleri vermemize her zaman gerek yok. Bunu yordamın başlığındaki "Optional" seçeneği ile sağlıyoruz. Optional belirttiğiniz ilk parametreden sonraki diğer parametrelerde de mutlaka aynısını kullanmanız gerekiyor. Önceki sayıda SQL kodlarında tarih kullanımıyla ilgili verilen ipucunun Delphi'deki karşılığı soruluyor. VB'deki Format işlevi yerine FormatFloat bu işi görür: Tarih:=

evet gördüm onu. çok saolasın. çok makbule geçti. Bu arada hazırladığım 2 tane örnek var. Pek bi geniş değil ve kullanışlı olacağını sanmadığım örnekler ama isteyen olabilir belki 1. örnek telefon defteri 2. örnek günlük.. Yükleyeceğiniz adres: .html Tekrar teşekkür ettim TheBLaCkDeaTH тнєвlα¢к∂

Access'te Sınıf Modülleri Class modülleri ayrı nesneler olarak kullanır, onlara istediğimiz gibi işlemler yaptırabilir ve onları çağırıp tekrar kullanabiliriz. Sıkça kullanacağımız bir işlemi sınıf modülüyle kolayca yapabiliriz. Bu konunun aslında doğrudan Visual Basic ile ilgili olmasından dolayı biz biraz daha Access'e yaklaştırmaya çalışacağız. O yüzden okuyucunun sınıf modüllerini temel olarak bildiğini, en azından bu yazıdan bunun kısmen anlaşılabileceğini varsayıyorum. Sıkça kullandığımız "Recordset" tanımı Sınıf yani bir Class'tır. Nesne Gözatıcısı öyle söylüyor: Class Recordset Member of DAO A representation of the records in a base table or the records that result from Dim RS As Recordset Set RS = CurrentDb. OpenRecordset("tablo1", dbOpenDynaset) RS. AddNew RS. Fields = "Hasan Baltacı" RS. Update RS. Close Dim ile RS adlı değişkenin Recordset sınıfından olmasını sağladık. Addnew bu sınıfın metotlarından biri. Bu metot, RS'nin kayıt ekleme moduna geçmesini sağlıyor. Fields ise sınıfa ait bir özellik. Update ve Close ise diğer metotlardan. LİSTE ÖZELLİKLİ BİR SINIF MODÜLÜ Bizim sınıf modülümüz virgülle ayrılmış metinleri çözüp listeleyebiliyor ve sıralayabiliyor. Veritabanı penceresinde Modül sayfası açıkken Insert/ Class Module menüsünü seçip ilk sınıf modülümüzü ekleyelim. İlk bakışta herhangi bir modülden farkı yok. Aşagıdaki kodu yeni bir sınıf modülü açıp yazın. Sonra bunu MyListBoxComma adı ile kaydedin. Unutmayın, modülü her zaman bu adla çağıracağız. 'SINIF MODÜLÜ: MyListBoxComma Option Compare Database Option Explicit Private Dizi As String Private Toplam As Integer Private Ayirac As String 1 Private Sub Class_Initialize 'Sınıf yükleniyor. Toplam = 0 Ayirac = "," End Sub Public Sub AddItem 'Listeye eleman ekle. Toplam = toplam + 1 ReDim Preserve dizi(1 To Toplam) As String Dizi = Strx End Sub Public Property Get Seperator As String 'Ayıraç. Seperator = Ayirac End Property Public Property Let Seperator Ayirac = vNewValue End Property Public Function Clear 'Listeyi temizle. Erase Dizi Toplam = 0 End Function Public Property Get ListCount As Integer 'Listedeki eleman sayısı. ListCount = toplam End Property Public Sub Sort 'Listeyi sırala. ... ... End Sub Private Function GetMin As Integer 'Sıralamak için kullanılıyor. Sadece bu Class içinde 'kullanılabilir. Çünkü Public olarak degil, Private olarak tanımlanmış. ... ... End Function Public Function SetComma 'CommaText olarak girilen metni listeye dönüştürür. ... ... End Function Public Function GetComma As String 'Tüm listeyi ayıraç kullanarak cümle haline getirir. ... ... End Function Bu modülden örneğin şu şekilde faydalanabiliriz: Sınıfı MyListBoxComma adı ile kaydettiğimiz için bu adı kullanmalıyız. 'New ekini de kendi yazdığımız sınıfları kullanabilmek için yazmak zorundayız. Dim Liste As New MyListBoxComma Liste. AddItem "ocak" Liste. AddItem "subat" Liste. AddItem "mart" '... Tüm ayları yazın. MsgBox liste. ListCount & " adet eleman:" & Chr(13) & liste. GetComma Liste. Sort Liste. Seperator = Chr(13) 'Satirsonu işaretini(13) koyunca altalta listelenecek. MsgBox "Listenin sirali hali:" & Chr(13) & liste. GetComma Liste. Seperator = "-" Liste. SetComma MsgBox Liste. ListCount & " adet oldu simdi." Modülü biraz inceleyince Private ve Public şeklinde iki tanım görüyoruz. Bildiğiniz gibi Private ve Public tanımlamaları yordamların dışardan kullanılıp kullanılamayacağını belirliyorlar. Bilmeyenler için Public kullanmadan dışarıdan okuma ya da değiştirme yapılamayacağını ve Private kullanırsak sadece modülün kendi içinden okuma ve yazma yapabileceğimizi de söyleyeyim. Burada normal işlev ve yordamlardan farklı olarak Property Get ve Property Let tanımları da kullanılmış. Örneğin Seperator özelliği için hem Get hem de Let yöntemi var. ListCount için ise sadece Property Get var. Bu durumda ListCount özelliği sadece okunabilir, Seperator ise hem okunur hem de değiştirilebilir olmuştur. Class_Initialize yordamı da anlayacağınız üzere bu modülün ilk çalışmaya başladığı yerdir. Fakat kullanılması zorunlu değildir. Aynı şekilde sınıflar bellekten atılırken varsa Class_Terminate adlı yordam çağrılır. RAPOR YAZDIRIRKEN KOPYA SAYISINI SEÇMEK "Rapor1" adlı raporu 3 defa yazdırmak için şu kodu deneyin: DoCmd. OpenReport "Rapor1", acViewPreview DoCmd. PrintOut acPrintAll, , , , 3 Örneğin 6-8 arası sayfaları 3 kez yazdırmak için ikinci satırı şu şekilde değiştirebilirsiniz: DoCmd. PrintOut acPrintRange, 6, 8, , 3 PrintOut komutu aktif olan rapor, form ya da tabloyu yazdırır. Kullanmadan hemen önce yazdırmak istediğiniz belgenin aktif olmasını sağlayın. SINIRSIZ PARAMETRELİ İŞLEV YAZMAK Bazan öyle olur ki sınırsız parametre verebileceğimiz yordamlara ihtiyaç duyarız. İşte örneği: Function FormatStr(ByVal MainStr As String, ParamArray StrList As Variant) As String 'ParamArray en son parametrenin değişken uzunluklu bir dizi olmasını sağlıyor. If UBound < 0 Then Exit Function Dim i As Integer For i = 0 To UBound MainStr = Replace(MainStr, "%" & i + 1, StrList Next FormatStr = MainStr End Function Bunu şu şekilde kullanın: MsgBox FormatStr("Burası %1. Şu an %2 ve hava %3.", "Türkiye", Now , "çok güzel.") тнєвlα¢к∂

Access'te visual kodu nasıl yazılır? Bir örnekle açıklayabilecek varsa çok iyi olur. Birde ben Access'te bir takvim hazırlamak istiyorum bunu nasıl yapabilirim? Bir aydaki günleri çıkaracak olan programı? Yapmamda yardımcı olursanız sevinirim. Teşekkürler тнєвlα¢к∂