(15/01/2025, 16:15)atoykan yazdı: Notlarımı buldum tespitlerimi de ileteyim.
- DoCmd.RunSQL "DELETE * FROM Veri_girişi WHERE isnull([Evrak_Geliş_Sayısı])" gibi Sql işlemlerinizi DAO ile daha kararlı ve tutarlı çalışacak şekilde revize edin. Örneğin
Dim db As DAO.Database
Set db = CurrentDb
db.Execute "DELETE FROM Veri_girişi WHERE [Evrak_Geliş_Sayısı] IS NULL", dbFailOnError
Set db = Nothing
gibi.
For Each ctl In Me.Form.Controls
If ctl.Tag = "KBL_KMT" Then ctl.Enabled = True
If ctl.Tag = "KMT" And ctl.Enabled = False Then ctl.Enabled = True
If ctl.Tag = "WRD_KMT" Then ctl.Enabled = True
Next
gibi döngüleri her denetim ve şart için if/else değerlendirmesi ile tekrar tekrar döngüye sokmak yerine doğrudan koşula odaklı Select Case kullanıp performans arttırmaya odaklanın. Örneğin
For Each ctl In Me.Controls
Select Case ctl.Tag
Case "KBL_KMT", "KMT", "WRD_KMT"
ctl.Enabled = True
End Select
Next
bu durumda if değerlendirmesine gerek kalmadan doğrudan case durumuna ilerleyerek performansı iyileştirirsiniz. Ayrıca .Tag kullanmakta çok sağlıklı değil bunun yerine daha belirgin ve tutarlı olacak şekilde denetimlere ilişkin bir değerlendirme yapmak daha doğru olur.
- If Len(Kişi_Adı) <= 0 Then Kişi_Adı.Enabled = False gibi gereksiz tekrarlayan denetimler yerine Kişi_Adı.Enabled = Len(Kişi_Adı) > 0 kullanmak daha tutarlı ve performanslıdır.
- Evrak_Türü_AfterUpdate ve Evrak_yazışma_Türü_Onay_Click olaylarında aynı kontrol ve işlemler tekrar ediyor. Bu işlemleri neden bir fonksiyona çekmiyorsunuz?
- Benzer şekilde tarih formatlamarı, ASCII denetimleri tekrar tekrar yazılmış bunları neden bir fonksiyona çekip hem kodu daha işlevsel hem performansı daha üst seviyeye çıkartmıyorsunuz?
- Hata denetimi mekanizmanız zaten yok. On Error Resume Next bir hata denetimi değildir hata varsa yoksay demektir.
On Error GoTo ErrorHandler
' Kodlarınız burada
Exit Sub
ErrorHandler:
MsgBox "Hata oluştu: " & Err.Description, vbCritical, "Hata"
Resume Next
şeklinde yazılacak kod bir hata denetimidir ve size hatanın ne olduğunu bidirdiğinden nereye nasıl müdahale etmeniz gerektiği ile ilgili bilgi sahibi olursunuz. Örneğin çok net olarak bu yapı kurgulanmadığı için mevcut sorunuzdaki hatanın nerede ve ne açıklama ile meydana geldiğini ancak debug ederek adım adım ilerleyerek tespit edebiliyorsunuz.
atoykan bey çok sağolun yordum sizi DAO ya dönüştürmek istemiyorum çok yer değişecek diğer önerilerinizi uygulayacağım olmazsa offece 2016-19 a dönerim
Değişimde gelişimde beyinlerin değişmesi ve gelişmesi ile olur. By Bibib
Cevapla