Thread View: pl.comp.bazy-danych.msaccess
3 messages
3 total messages
Started by Phantom
Wed, 22 Feb 2017 15:22
Otwieranie formularza z recordsource - filtrowanie ok 300000 rekordów
Author: Phantom
Date: Wed, 22 Feb 2017 15:22
Date: Wed, 22 Feb 2017 15:22
13 lines
1919 bytes
1919 bytes
Witam Dotyczy: MSAccess2000-2003 Mam problem z wielokrotnym otwieraniem formularza. Formularz zasila zapytanie sql. Wynikiem jest pokazanie w podformularzu ciągłym kilku rekordów spośród ok 300000. Pierwsze 3-4 otwarcia formularza z wynikami są błyskawiczne. Kolejne powoduje wywołanie klepsydry i komunikat na dolnym pasku "obliczam" i pasek postępu, no i przede wszystkim trwa to w nieskończoność. Kolejne próby otwarcia dają ten sam skutek. Zauważyłem, że wystarczy wejść do projektu formularza oraz VB - zapisać projekt oraz formularz..... i wszystko znowu śmiga.. 3-4 razy oczywiście. Potem powtórka z rozrywki. Proszę o pomoc Pozdrawiam Tomek
Re: Otwieranie formularza z recordsource - filtrowanie ok 300000 rekordów
Author: LeszekN
Date: Thu, 23 Feb 2017 11:14
Date: Thu, 23 Feb 2017 11:14
12 lines
1938 bytes
1938 bytes
Zrób to samo tylko na tabeli powiedzmy około 50 000 rekordów, wykonasz to jakieś 24 razy i będziesz miał taki sam wynik, czyli zapchana pamięć. Jeżeli wykonujesz SQL'a za pomocą VBA trzeba pamiętać o tzw uwolnieniu pamięci. recordset.close set recordset = Nothing sprawdz w "menedżer zadań" wartość pamięci przed i w momencie już zawieszenia oczywiście mogę się mylić ;) pozdrawiam Leszek
Re: Otwieranie formularza z recordsource - filtrowanie ok 300000 rekordów
Author: Phantom
Date: Thu, 23 Feb 2017 15:22
Date: Thu, 23 Feb 2017 15:22
46 lines
4079 bytes
4079 bytes
Nie otwieram recordset
Moja funkcja wygląda tak:
-----------------------------------
Private Function FiltrGl()
On Error Resume Next
Dim wh, sql1, sql2, dd, aa, ss
wh = ""
If NZ(Me.IddZakDec, "") <> "" Then wh = wh & "(Dec.[ZakDec]=" & Me.IddZakDec & ") AND "
If NZ(Me.IddOdz, 0) <> 0 Then wh = wh & "(Dec.[IDOdz]=" & Me.IddOdz & ") AND "
If NZ(Me.IddWydziały, 0) <> 0 Then wh = wh & "(Dec.[IDWydziały]=" & Me.IddWydziały & ") AND "
If NZ(Me.IddPracownicy, 0) <> 0 Then wh = wh & "(Dec.[IDPracownicy]=" & Me.IddPracownicy & ") AND "
If NZ(Me.IddRozdzZaj, 0) <> 0 Then wh = wh & "(Dec.[IDRozdzZaj]=" & Me.IddRozdzZaj & ") AND "
If NZ(Me.IddLata, 0) <> 0 Then wh = wh & "(Dec.[IDLata]=" & Me.IddLata & ") AND "
If Not IsNull(Me.FFNrDec) Then wh = wh & "(NumWysz Like ""*" & Me.FFNrDec & "*"") AND "
If NZ(Me.IddZakDec, "") <> "" Then wh = wh & "(Dec.[ZakDec]=" & Me.IddZakDec & ") AND "
If Me.RodzTerm = 1 Then
aa = Fdaty(Me.IddDataZak - 31)
If Not IsNull(Me.IddDataZak) Then wh = wh & "(Dec.[DataZakDec]=" & aa & ") AND "
End If
If Me.RodzTerm = 2 Then
aa = Fdaty(Me.IddDataZak)
If Not IsNull(Me.IddDataZak) Then wh = wh & "(Dec.[DataZakDec]=" & aa & ") AND "
End If
If Me.RodzTerm = 3 Then
dd = "[DataZakDec]"
ss = WarunekZDatami("", Me.IddDataZak, dd)
If ss <> "" Then wh = wh & "(" & ss & ") AND "
End If
If wh <> "" Then wh = "(" & Left$(wh, Len(wh) - 5) & ")"
sql2 = "SELECT Dec.IDDec, Dec.NumDec, Dec.NumFak, Dec.NumWysz as Wyr1, Dec.IDLata, Dec.NrDec, Dec.NrPrzedlDec, NumDec AS InfoNrDec, RozdzZaj.NazRozdzZaj, KatRob.NazKatRob, Odz.NazOdz, Wydziały.SkrWydz, Pracownicy.[naz/imie], Dec.DataZakDec as InfoDataZak, Dec.ZakDec as ZakDec, Zob.NazZob, IIf([DataZakDec]<=Date() And [ZakDec]=No,""PRZEKROCZONY TERMIN DECYZJI!"") AS AlTermin, Dec.IDRozdzZaj, ZobWyk.NazwaZobWyk, Dec.ListaLokDec, Dec.IDRozdzZaj" ', Dec.ZakUpomDec, Dec.DZakUpomDec, Dec.ZakMonitDec, Dec.DZakMonitDec"
sql2 = sql2 & " FROM (Zob INNER JOIN (Odz INNER JOIN (KatRob INNER JOIN ((([Dec] INNER JOIN Pracownicy ON Dec.IDPracownicy = Pracownicy.IDPracownicy) INNER JOIN Wydziały ON Dec.IDWydziały = Wydziały.IDWydziały) INNER JOIN RozdzZaj ON Dec.IDRozdzZaj = RozdzZaj.IDRozdzZaj) ON KatRob.IDKatRob = Dec.IDKatRob) ON Odz.IDOdz = Dec.IDOdz) ON Zob.IDZob = Dec.IDZob) INNER JOIN ZobWyk ON Dec.IDZobWyk = ZobWyk.IDZobWyk"
sql2 = sql2 & IIf(wh <> "", " WHERE " & wh, "")
sql2 = sql2 & " ORDER BY Dec.NrDec, Dec.NrPrzedlDec"
Me.WybIDDec = Null
Me.WybIDDec.RowSource = sql2
Me.DecTab_pdf.Form.RecordSource = sql2
End Function
-----------------------------------
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads