Uruchamianie kwerendy w kodzie VBA

Każdą kwerendę w bazie Access można oczywiście uruchomić także kodem VBA. Robimy to za pomocą metody obiektu docmd
Open Query. (bez spacji w środku, to jedno słowo, ale z przyczyn technicznych muszę zapisać tu w ten sposób).

kliknij, aby powiększyć

Parametry to:

    • QueryName – nazwa kwerendy. Jest to ciąg tekstowy oznaczający nazwę kwerendy w bazie Access. Parametr obowiązkowy;
    • View as View – tryb otwierania kwerendy, wartość domyślna to acViewNormal czyli arkusz danych;
      kliknij, aby powiększyć
    • DataMode as OpenDataMode – możliwość wprowadzania/edycji danych, wartość domyślna – acEdit;
      kliknij, aby powiększyć

Przykładowy kod może wyglądać tak:

kliknij, aby powiększyć

W praktycznych zastosowaniach nigdy nie korzystam z tej metody. Moim zdaniem użytkownik aplikacji Access nie powinien mieć dostępu do kwerend – wszystko można zrobić przecież w oparciu o formularze i/lub raporty.

 

 


 

Egzamin Specjalista MS Access

Obiekt VBA docmd

Obiekt docmd to jeden z najczęściej stosowanych obiektów w kodzie VBA. Jest obiektem wbudowanym w VBA Accessa, nie trzeba go dodatkowo instalować czy aktywować. Nie występuje w Excelu. Służy do uruchamiania wielu akcji wykonywanych w bazie, zastępując z powodzeniem zwykłe makra. 

kliknij, aby powiększyć

Obiekt docmd ma tyko metody, nie posiada właściwości.

      • AddMenu
      • AplyFilter
      • Beep
      • BrowseTo
      • CancelEvent
      • ClearMacroError
      • Close
      • CloseDatabase
      • CopyDatabaseFile
      • CopyObject
      • DeleteObject
      • DoMenuItem
      • Echo
      • FindNext
      • FindRecord
      • GoToControl
      • GoToPage
      • GoToRecord
      • Hourglass
      • LockNavigationPane
      • Maximize
      • Minimize
      • MoveSize
      • NavigateTo
      • OpenDataAccessPage
      • OpenDiagram
      • OpenForm
      • OpenFunction
      • OpenModule
      • Open_Query
      • OpenReport
      • OpenStoredProcedure
      • OpenTable
      • OpenView
      • OutputTo
      • PrintOut
      • Quit
      • RefreshRecord
      • Rename
      • RepaintObject
      • Requery
      • Restore
      • RunCommand
      • RunDataMacro
      • RunMacro
      • RunSavedImportExport
      • RunSQL
      • Save
      • SearchForRecord
      • SelectObject
      • SendObject
      • SetDisplayedCategories
      • SetFilter
      • SetMenuItem
      • SetOrderBy
      • SetParameter
      • SetProperty
      • SetWarnings
      • ShowAllRecords
      • ShowToolbar
      • SingleStep
      • TransferDatabase
      • TransferSharePointList
      • TransferSpreadsheet
      • TransferSQLDatabase
      • TransferText

Naprawdę warto się zapoznać z tymi metodami. Większość z nich jest wręcz niezbędna przy programowaniu aplikacji Access.

 


 

Kurs Access - programowanie w VBA

Przenoszenie pliku

Jak szybko przenieść czyli usunąć w jednym miejscu i przenieść w inne miejsce na dysku plik? Jednym ze  sposobów  jest wykorzystanie obiektu FileSystem.Object.
Służy do tego metoda FileSystem.Object.MoveFile
Ma ona kilka parametrów wejściowych:

    • Object – nazwa obiektu zdefiniowanego jako obiekt FSO. Argument obowiązkowy.
    • Source – nazwa pliku do skopiowania. Argument obowiązkowy, ale dozwolone są znaki zastępcze w nazwie.
    • Destination – nazwa pliku po przeniesieniu. Argument obowiązkowy.

Zarówno stara jak i nowa nazwa pliku musi być pełna czyli z z dokładnym podaniem dysku i katalogu.

Przykładowy kod  może wyglądać tak:

Public Sub PrzeniesPlik()
Dim FSO As Object
Dim StaryPlik As String
Dim
NowyPlik As String
StaryPlik = “C:\Folder1\plik.png”
NowyPlik = “C:\Folder2\plik.png”
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.MoveFile StaryPlik, NowyPlik
Set FSO = Nothing
End Sub
End Sub

Warto też  wcześniej zwrócić uwagę na sprawdzenie, czy plik do przeniesienia istnieje. Jeżeli nie, to w trakcie wykonywania procedury wystąpi błąd wykonania 53.


Kurs Access - programowanie w VBA

 

Kopiowanie pliku

Jak szybko skopiować dowolny plik? Sposobów jest kilka, jednym z nich jest wykorzystanie obiektu FileSystem.Object.
Służy do tego metoda FileSystem.Object.Copy
Ma ona kilka parametrów wejściowych:

    • Object – nazwa obiektu zdefiniowanego jako obiekt FSO. Argument obowiązkowy.
    • Source – nazwa pliku do skopiowania. Argument obowiązkowy, ale dozwolone są znaki zastępcze w  nazwie.
    • Destination – nazwa pliku po skopiowaniu. Argument obowiązkowy.
    • Overwrite – opcjonalny argument typu Boolean. Jeżeli kopiowany plik ma być zapisany pod nazwą już istniejącego pliku, wartość False nie skopiuje pliku. Domyślna wartość True, zastąpi plik plikiem kopiowany.

Przykładowy kod kopiujący plik może wyglądać tak:

Public Sub KopiujPlik()
Dim FSO As Object
Dim KopiowanyPlik As String
Dim
NowyPlik As String
KopiowanyPlik= “C:\Wprawki\PrzykladowaBaza.accdb”
NowyPlik= “C:\NaBlogi\PrzykladowaBaza.accdb”
Set FSO=CreateObject(“Scripting.FileSystemObject”)
FSO.Copy  KopiowanyPlik, NowyPlik, True
Set FSO=Nothing
End Sub

 


FileSystem.Object

Scripting.FileSystemObject to obiekt służący do zarządzania plikami i folderami. Wprawdzie w kodzie VBA są dostępne proste i przyjemne funkcje Dir, MkDir itp., ale przy odwołaniach do folderów sieciowych niestety często zawodzą. Wówczas pozostaje wykorzystanie właśnie obiektu FileSystemObject, popularnie nazywanym FSO.

Przed zastosowaniem w kodzie VBA tego obiektu trzeba najpierw sprawdzić, czy włączone są wymagane referencje. Sprawdzamy to w edytorze VBA wybierając z menu Tools–> References

 

dla obiektu FileSystemObjects wymagana jest biblioteka Microsoft Scripting Runtime.  Jeżeli nie jest zaznaczona – należy ją odszukać na liście i zaznaczyć  checkbox obok niej.

Dostępne są tu następujące właściwości i metody:

    • GetDrive – informacje o napędzie (dysku)
    • GetFolder – informacje o folderze
    • GetFile– informacje o pliku
    • CreateFolder – tworzenie folderu
    • CreateFile – tworzenie pliku
    • DeleteFolder – usuwanie folderu
    • DeleteFile – usuwanie pliku
    • CopyFolder – kopiowanie folderu
    • CopyFile – kopiowanie pliku
    • MoveFolder – przenoszenie folderu
    • MoveFile – przenoszenie pliku

To tylko te podstawowe, jest ich więcej. I każda będzie tematem notki.