AccessTr.neT

Tam Versiyon: Option Compare Database ve Option Explicit Arasındaki Fark
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Merhaba,

Veri tabanı çalışmamın sonuna doğru gelirken uygulamanın performansı ile alakalı olarak "veritabanı araçları" kısmında "performansı çözümle diye bir sekme dikkatimi çekti.
Tıkladığımda neredeyse bütün formların kod sayfalarının en üstünde yer alan "Option Compare Database" yerine "Option Explicit" başlığını kullanmamı tavsiye etti access,

Bazı formlara uyguladım ve denedim bir problem görünmüyor,

Bu ikisi arasında fark nedir acaba onu merak ettim,

Yorumlarınız için şimdiden teşekkür ederim,

Saygılar..
merhaba sayın akdemir1,

bahsettiğiniz konuya dair kısaca açıklamak gerekirse,şu tanımlamalar uygun olacaktır.daha derinlemesine ayrıntıları nette araştırmak sureti ile bulabilirsiniz elbette ki.


Option Compare Database (seçenek karşılaştırma);
ikili değer,metin değeri,dize karşılaştırmalarında tanımlı değerlerin karşılaştırmasını yapmak için kullanılır.veritabanının sıralama kodlaması tarafından belirlenir.


Option Explicit (Belirgin seçenek);
uygulamada kullanılmakta olan değişken isimlerinde bir hata söz konusu olduğunda tanımsız bir değişken kullanıldığına dair bu hatayı bildirerek,değişken isimlerinin Dim, Private, Public, ReDim veya Statik deyimi ile doğru tanımlanmasına bir zorunluluk getirir. Böylece,uygulamanın bu hatalardan arınarak sağlıklı çalışmasına imkan sağlar.

Option Explicit kullanmak,hatasız bir kodlama için daha geçerli görülmektedir.bilgilerinize.

iyi çalışmalar,
saygılar.
Teşeküre ederim hocam explicit kullandığım formların sadece bir tabesinde aşağıdaki kodda hata verdi

Private Sub Komut141_Click()
If IsNull(Me.Açılan_Kutu0) Or IsNull(Açılan_Kutu2) Or IsNull(Açılan_Kutu4) Or IsNull(Açılan_Kutu10) Or IsNull(Metin12) Or IsNull(Metin14) Then

If MsgBox("Formu Kapatmak İstediğinizden Emin misiniz?", vbInformation + vbYesNo, "ERZURUM OTOMASYON") = vbYes Then
Me.Undo
DoCmd.SetWarnings False
DoCmd.RunSQL ("DELETE ID_GIRIS, ID_URUN, ID_KATEGORI, ID_BIRIM, GIRIS_TARIHI, ID_TEDARIKCI, GIRIS_MIKTARI FROM T_GIRIS WHERE (((ID_GIRIS) Is Null)) OR (((ID_URUN) Is Null)) OR (((ID_KATEGORI) Is Null)) OR (((ID_BIRIM) Is Null)) OR (((GIRIS_TARIHI) Is Null)) OR (((ID_TEDARIKCI) Is Null)) OR (((GIRIS_MIKTARI) Is Null));")
DoCmd.SetWarnings True
ShrinkMe (Me.Name)
DoCmd.Close
DoCmd.OpenForm "F_CIKIS", acNormal
End If

Else

mesaj = MsgBox("Form Kapatılmadan Önce Girilen Veriler Kaydedilsin mi?", vbCritical + vbYesNoCancel, "ERZURUM OTOMASYON")

Select Case mesaj
Case 6


DoCmd.Save
MsgBox Metin14 & " - " & Metin222 & " STOK GİRİŞİ GERÇEKLEŞTİ, GÜNCEL STOK MİKTARI " & ([Metin217] + [Metin14]) & "", vbInformation, "ERZURUM OTOMASYON"
ShrinkMe (Me.Name)
DoCmd.Close
DoCmd.OpenForm "F_CIKIS", acNormal
Case 7

Me.Undo
ShrinkMe (Me.Name)
DoCmd.Close
DoCmd.OpenForm "F_CIKIS", acNormal
Case 2

Exit Sub
End Select

End If


End Sub


Bu kodun başlığı Option Compare Database olunca hata vermiyor normalde..
Atoz hocanın mesajı
Alıntı:Option Explicit (Belirgin seçenek);
uygulamada kullanılmakta olan değişken isimlerinde bir hata söz konusu olduğunda tanımsız bir değişken kullanıldığına dair bu hatayı bildirerek,değişken isimlerinin Dim, Private, Public, ReDim veya Statik deyimi ile doğru tanımlanmasına bir zorunluluk getirir. Böylece,uygulamanın bu hatalardan arınarak sağlıklı çalışmasına imkan sağlar.

mesaj =
şeklinde değişken belirtmişsin.Koda
dim mesaj as string
yazararak değişken tanımlama yapman gerekir.

dim mesaj as string

mesaj = MsgBox("Form Kapatılmadan Önce Girilen Veriler Kaydedilsin mi?", vbCritical + vbYesNoCancel, "ERZURUM OTOMASYON")


gibi.
merhaba sayın akdemir1,

bahsettiğiniz hataya dair:

CEVAP in SORU misali,hem soruyu hem de cevabı barındırmakta.ozan bey'in belirttiği gibi

mesaj tanımlamasının bir üst satırına

dim mesaj as string

yazmanız yeterli olacaktır.

iyi çalışmalar,
saygılar.
Aynen dediğiniz gibi hocam değişken atayınca sorun çözüldü şu anda bütün formların kod sayfalarını başlığı "Option Explicit" ve hata vermemekte,

Değerli yorumlarınız için bir kez daha teşekkür ederim,

Saygılarımla..