çalışmada bazı değişiklikler yaptım bu haliyle daha jızlı gibi geldi
1 - referanslara Microsof AcriveX Data Objects x.x library eklendi
2 - form modülünün en başına
Option Compare Database
Dim tplCksSure, KytCksSure, tplCksMsf, KytCksMsf, tplVrsSure, KytVrsSure As Double
3 - form yüklenirken Olayı (Form_Load) değişti:
Private Sub Form_Load()
Me.BİRİMKutusu.SetFocus
TmListeGncl
End Sub
4 - TmListeGncl fonksiyonu değişti
Private Sub TmListeGncl()
Dim RsLstS As Recordset
Dim RsLst As Recordset
Dim MtnSql, MtnKosul, MtnBirim, MtnMadde1, MtnMadde2, MtnMadde3, MtnSureByk, MtnSureKck, MtnBasTrh, MtnBitTrh As String
Dim MtnKosulDlk, MtnBirimDlk, MtnMadde1Dlk, MtnMadde2Dlk, MtnMadde3Dlk, MtnSureBykDlk, MtnSureKckDlk, MtnBasTrhDlk, MtnBitTrhDlk As String
Dim ImYr As Long
ImYr = Me.ActiveControl.SelStart
Me.ActiveControl.Value = Me.ActiveControl.Text
Me.ActiveControl.SelStart = ImYr
MtnBirim = IIf(Len(BİRİMKutusu & "") < 1, "", " and ([İlkgrup_adi] Like '*" & BİRİMKutusu & "*')")
MtnMadde1 = IIf(Len(MADDE1Kutusu & "") < 1, "", " and ([olay_turu] Like '*" & MADDE1Kutusu & "*')")
MtnMadde2 = IIf(Len(MADDE2Kutusu & "") < 1, "", " and ([olay_cins] Like '*" & MADDE2Kutusu & "*')")
MtnMadde3 = IIf(Len(MADDE3Kutusu & "") < 1, "", " and ([vardiya] Like '*" & MADDE3Kutusu & "*')")
MtnSureByk = IIf(Len(SureUst & "") < 1, "", " and ([CikisSure]>=" & Me.SureUst & "*60)")
MtnSureKck = IIf(Len(SureAlt & "") < 1, "", " and ([CikisSure]<=" & Me.SureAlt & "*60)")
MtnBasTrh = IIf(Len(ilk_tarih & "") < 1, "", " and ([olay_tarihi]>=clng(CDate('" & Me.ilk_tarih & "')))")
MtnBitTrh = IIf(Len(son_tarih & "") < 1, "", " and ([olay_tarihi]<=clng(CDate('" & Me.son_tarih & "')))")
MtnKosul = MtnBirim & MtnMadde1 & MtnMadde2 & MtnMadde3 & MtnSureByk & MtnSureKck & MtnBasTrh & MtnBitTrh
Set RsLst = CurrentDb.OpenRecordset("sorgu1Krt", dbOpenDynaset) 'Me.TümListe.Recordset.OpenRecordset
MtnKosul = Mid(MtnKosul, 5)
RsLst.Filter = MtnKosul
Set RsLstS = RsLst.OpenRecordset
If RsLstS.RecordCount = 0 Then
Metin1 = ""
Metin2 = ""
Metin85 = ""
Metin92 = ""
Exit Sub
End If
RsLstS.MoveLast
Set Me.TümListe.Recordset = RsLstS.OpenRecordset
'Hesaplamalar________________________________________________
tplVrsSure = Dsum ("Nz([CikisSure],0)", RsLstS.Name, MtnKosul)
KytVrsSure = RsLstS.RecordCount
Metin2.Value = KytVrsSure
If KytVrsSure <> 0 Then Me.Metin92 = Sny2Sure(tplVrsSure / KytVrsSure) Else Metin92 = ""
'hy varış süre ortalaması 'sadece değer olan kayıtlar için
tplCksSure = Dsum ("Nz([VarisSure],0)", RsLstS.Name, MtnKosul)
KytCksSure = DCount("*", RsLstS.Name, MtnKosul)
If KytCksSure <> 0 Then Me.Metin1 = Sny2Sure(tplCksSure / KytCksSure) Else Metin1 = ""
'hy mesafe ortalaması sadece değer olan kayıtlar için
tplCksMsf = Dsum ("Nz([mesafe],0)", RsLstS.Name, MtnKosul)
KytCksMsf = DCount("*", RsLstS.Name, MtnKosul)
If KytCksMsf <> 0 Then Me.Metin85 = tplCksMsf / KytCksMsf Else Metin85 = ""
'dsum("[mar]",rst.Name) 'recordseti Dsum ile kullanma
End Sub
hesapla ve HesaplaOrt fonksiyonları silinip doğrudan TmListeGncl fonksiyonunun içine alındı
arada gözümden kaçmış bir şeyler olmuş olabilir istatistik formunda hesaplanmamış alan yada çalışmayan bir fonksiyona rastlarsanız düzeltmeye çalışırım.
Not: tablolara dokunmadım yükleyeceğim örnekteki Tabloları silip kendi tablolarınızı eklerseniz sorunsuz çalışması gerek.
Not2: kapatırken sıkıştırma özelliğini aktifleştirdiğim için kapanması zaman alabiliyor isterseniz devre dışı bırakabilirsiniz