| | | |
• I.2. Access - Tabele i kwerendy [1] •
- 2.1 Jak policzyć rekordy w tabeli ?
- 2.2 Jak sprawdzić, czy istnieje tabela ?
- 2.3 Jak sprawdzić, czy istnieje pole w tabeli ?
- 2.4 Jak dodać pole do tabeli bazowej lub tabeli połączonej ?
- 2.5 Jak zmienić nazwę pola w tabeli bazowej lub tabeli połączonej ?
- 2.6 Jak wywołując funkcję DLookup przekazać kwerendzie parametr ?
- 2.7 Dlaczego kwerenda wywołuje => Błąd wykonania '3061' Za mało parametrów. Oczekiwano np. 2 ?
- 2.8 Czy można odzyskać usuniętą przez pomyłkę tabelę ?
- 2.9 Jak obliczyć średnią liczb z 2 lub więcej pól tego samego rekordu ?
- 2.10 Jak ukryć tabelę, by nie była widoczna w oknie bazy (nawet po ustawieniu w menu Narzędzia/Opcje/Widok/Pokaż obiekty ukryte(systemowe) = True ?
- 2.11 Jak pobrać współrzędne kursora myszy nad oknem tabeli (kwerendy) poza obszarem danych ?
- 2.12 Jak sprawdzić czy zdarzenie MouseUp kwerendy, zainicjowane zdarzeniem MouseDown nad nagłówkiem kolumny lub selektorem rekordów, zaszło nad obszarem danych ?
- 2.13 Jak sprawdzić, czy tabela lub kwerenda otwarta jest w widoku Arkusz danych (DataSheet), a formularz lub raport nie jest w widoku Projekt (DesignView) ?
| | | | |
|
|
|
| | |
|
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.2 Jak sprawdzić, czy istnieje tabela ?

' zwraca True jeżeli istnieje tabela,
Public Function knTableExists(sTableName As String) As Boolean
Dim dbs As DAO.Database
On Error Resume Next
Set dbs = CurrentDb
knTableExists = IsObject(dbs.TableDefs(sTableName))
Set dbs = Nothing
On Error GoTo 0
End Function

' przykładowe wywołanie:
Private Sub btnTest_Click()
Dim fRet As Boolean
fRet = knTableExists("MojaTabela")
MsgBox IIf(fRet, "Tabela istnieje.", "Tabela nie istnieje.")
End Sub
ΔΔΔ | | | | |
|
| | |
|
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
ΔΔΔ | | | | |
|
|