|
2.1 Jak policzyć rekordy w tabeli ?

<cyt>
...... (nie jest to wynik testów, tylko moja opinia):
1. Select Count(*) FROM Tabela1 - dziala szybko, ale tylko w składni SQL.
2. CurrentDB.TableDefs("Tabela1").RecordCount - działa szybko,
ale w kodzie VBA (a nie w SQL)
3. DCount("*","Tabela1") - działa najwolniej, ale wszędzie.
• Select Count(*) jest bardzo dobrze zoptymalizowana w Accessie.
• CurrentDB.TableDefs("Tabela1").RecordCount nie liczy rekordów,
tylko odczytuje z wewnętrznego licznika
• DCount(..) pracowicie liczy rekordy.
</cyt>
' UWAGA! Dla tabeli połączonej CurrentDB.TableDefs("Tabela1").RecordCount zwraca -1
ΔΔΔ | |
|
2.3 Jak sprawdzić, czy istnieje pole w tabeli ?

' zwraca True jeżeli tabela i pole w tabeli istnieje
Public Function knFieldExists(sTableName As String, _
sFldName As String) As Boolean
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
On Error Resume Next
Set dbs = CurrentDb
Set tdf = dbs.TableDefs(sTableName)
knFieldExists = IsObject(tdf(sFldName))
Set tdf = Nothing
Set dbs = Nothing
On Error GoTo 0
End Function

' przykładowe wywołanie:
Private Sub btnTest_Click()
Dim fRet As Boolean
fRet = knFieldExists("MojaTabela", "MojePole")
MsgBox IIf(fRet, "Pole istnieje.", "Pole (lub tabela) nie istnieje.")
End Sub
ΔΔΔ | |