|  | 
| 
   
   
   |  |  |  |  |  |  • 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.9 Jak obliczyć średnią liczb z 2 lub więcej pól tego samego rekordu ?  
  
 Public Function knSrednia(ParamArray args()) As Double
 Dim i As Long, k As Long
 Dim s As Double
 
 For i = LBound(args) To UBound(args)
 k = k + 1
 If IsNumeric(Nz(args(i), 0)) Then
 s = s + Nz(args(i), 0)
 End If
 Next
 
 If k = 0 Then Exit Function
 
 knSrednia = s / k
 
 End Function
  ΔΔΔ  |  |  |  |  |  |  |   |  |  |  |  |  |  | 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 ?
  
 
  
 Public Function HideShowTable( _
 
    sTableName As String, _Dim dbs As DAO.DatabasefVisible As Boolean, _
 Optional fRefreshDB As Boolean = False) _
 As Boolean
 Dim tdf As DAO.TableDef
 
 Set dbs = CurrentDb
 
 On Error Resume Next
 ' spróbuj utworzyć zmienną obiektową tdf
 Set tdf = dbs.TableDefs(sTableName)
 On Error GoTo 0
 
 If (tdf Is Nothing) = True Then
 ' zmienna obiektowa nie została utworzona, (tabela nie istnieje)
 Set dbs = Nothing
 Exit Function
 End If
 
 With tdf
 If fVisible = True Then
 .Attributes = .Attributes And (Not dbHiddenObject)
 Else
 .Attributes = .Attributes Or dbHiddenObject
 End If
 End With
 
 Set tdf = Nothing
 Set dbs = Nothing
 
 ' odśwież okno bazy
 If fRefreshDB Then Application.RefreshDatabaseWindow
 
 HideShowTable = True
 
 End Function
  ΔΔΔ  |  |  |  |  |  |  |   |  |  |  |  |  |  | 2.11 Jak pobrać współrzędne kursora myszy nad oknem tabeli (kwerendy) poza obszarem danych ? 
 
  
 Metoda ta opiera się na pomyśle Krzysztofa Naworyty przypisania do zmiennej obiektowej otwartej tabeli (kwerendy) jako formularza i przypisaniu takiemu formularzowi do zdarzenie OnMouseMove funkcji pobierajacej położenie kursora myszy.
 Więcej szczegółów w wątku: Czy kwerenda (lub tabela) może poinformować system, że jest zamykana ?
 
 
 
Dim frm As Access.FormSet frm = Screen.ActiveDatasheet.Form
 frm.OnMouseMove = _
 "=evMouseMove([Form],[Forms]![" & Me.Name & "]![txtPosMouse])"
 funkcja evMouseMove(...) pobiera współrzędne kursora myszy nad oknem tabeli i wpisuje do formantu TextBox w formularzu otwierającym tabelę (kwerendę).
 
 
  ΔΔΔ  |  |  |  |  |  |  |  |  |