Wstawianie połączonych obrazów w rekordach formularza

Wstawianiu obrazów w obrazach poświęcona jest notka:
Wstawianie obrazów w formularzu
Opisany tam jest jednak sposób do wstawiania obrazów „stałych”, identycznych dla każdego rekordu, a więc przeznaczonych raczej dla części wspólnych formularza np.nagłówka czy stopki. Chcąc uzależnić wyświetlany obraz od aktualnego rekordu konieczne jest jego powiązanie z źródłem danych formularza. 

Załóżmy, że mamy tabelę o takim układzie danych:

W kolumnie Foto oczywiście może być zamieszczony pełna nazwa pliku (czyli wraz z pełną ścieżką), ale ja stosuję w swoich projektach metodę bardziej elastyczną, umożliwiającą przeniesienie całości na inny komputer czy też do innej lokalizacji. bez konieczności aktualizacji adresów w tabeli.  
Najczęściej przyjmuję tu zasadę, że katalogiem nadrzędnym jest katalog, w którym znajduje się aplikacja Access. Tworzę w nim folder FOTO (i ewentualnie w nim podkatalogi) i tam umieszczam zdjęcia czy też inne pliki połączone. 

W praktyce wygląda to tak. 
W formularzu , dla którego źródłem danych jest tabela jw. wstawiam formant Obraz i w arkuszu  właściwości jako źródło danych wskazuję Kreatora wyrażeń:

kliknij, aby powiększyć

W kreatorze wyrażeń przechodzę do Funkcje –> Biblioteka(to nazwa moje aplikacji) i z modułu ModuleFunctionPUB wybieram funkcję AdresSG()> 

W module ModuleFunctionPUB mam zapisaną funkcję zwracającą adres bieżącej aplikacji Access. Wygląda ona tak: 

Public Function AdresSG()
’Adres folderu, w którym znajduje się aktualna aplikacja Access
AdresSG = CurrentProject.Path
End Function

Dokładam do tego fragment do podkatalogów, a następnie z pól formularza wybieram Foto czyli nazwę pliku obrazu:

Finalnie – źródłem danych dla tego formantu jest wyrażenie: 
=AdresSG() & „\Foto\Kategorie\” & [Foto]

Efekt końcowy wygląda tak:

Dla każdego rekordu jest widoczne przypisane do niego zdjęcie. Po przeniesieniu w inne miejsce, jeżeli zostanie zachowany ten sam układ katalogu – nie trzeba zmieniać żadnych linków, gdyż funkcja sama zlokalizuje na dysku położenie obrazu. 

      •  

 

 

 

CurrentProject czyli bieżący projekt

Application.CurrentProject to właściwość obiektu Application związana z bieżącym projektem aplikacji Access. 

kliknij, aby powiększyć

Ma swoje właściwości i metody, niektóre bardzo często stosowane. 

      • Connection
        aktywne połączenie (np. przy otwieraniu obiektu Recordset)
      • FullName
        pełna nazwa, razem z ścieżką dostępową
      • Name
        nazwa
      • Path
        adres folderu, w którym znajduje się projekt

W praktyce – używam właściwie tylko tych wymienionych, pozostałe są chyba rzadziej stosowane, choć pewnie też może być warto się im przyjrzeć. 

W ramach przykładu – funkcja VBA, którą bardzo często stosuję w swoich projektach, wykorzystując ją do odczytywania połączonych plików (np.zdjęć) lub miejsca, gdzie generowane są np.raporty. Pozwala to na przenoszenie aplikacji i połączonych katalogów w inne miejsca. 

Public Function AdresSG()
’Adres folderu, w którym znajduje się aktualna aplikacja Access
AdresSG = Application.CurrentProject.Path
’ lub alternatywnie w wersji skróconej:
AdresSG = CurrentProject.Path
End Function

Ponieważ obiekt Application jest obiektem domyślnym VBA, można pominąć to słowo i stosować wersję skróconą. Stosuję. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Wstawianie obrazów w formularzu

Obraz do formularza wstawiamy tak jak wszystkie formanty –  
z grupy Formanty na karcie Projekt

kliknij, aby powiększyć

Jeżeli zaznaczony jest przycisk Użyj kreatorów kontrolek – automatycznie otwory się folder do wskazania pliku graficznego, który chcemy wstawić. 

kliknij, aby powiększyć

Formant Obraz, tak jak każdy z obiektów Accessa, ma swój Arkusz właściwości, gdzie ustawiamy wszystkie jego właściwości.  

Najważniejsze z właściwości to:

    • typ obrazu
kliknij, aby powiększyć

Są tu 3 opcje:

        • osadzony
          obraz jest zapisany w formularzu
        • połączony
          obraz jest ładowany z pliku (wymagana jest tu pełna ścieżka do pliku), po przeniesieniu w inne miejsce – nie będzie wyświetlany.
          Zajmuje mniej miejsca niż obraz osadzony, ale wymaga stałego połączenia z plikiem źródłowym.
        • udostępniony
          obraz jest współdzielony pomiędzy różnymi formularzami/raportami. 
          Najczęściej stosuje się do wstawiania logo jednakowego w różnych miejscach, pozwala na łatwą podmianę i jednocześnie zmniejsza wielkość bazy
    • tryb zmiany obrazu
kliknij, aby powiększyć

Właściwość ta decyduje, w jaki sposób wpasować obraz do wielkości formantu. Ma to duże znaczenie, gdyż raczej rzadko rozmiar formantu jest taki sam jak wielkość wstawianej grafiki. 

Są tu 3 opcje:

        • Obetnij
          jeżeli obraz jest większy niż formant w formularzu, widoczny będzie tylko jego fragment
kliknij, aby powiększyć
        • Rozciągnij
          rozmiar obrazu jest zmieniany do wielkości formantu. Zmiana proporcji może spowodować zniekształcenie
          kliknij, aby powiększyć
        • Powiększ
          obraz jest dopasowany do wielkości formantu, ale z zachowaniem oryginalnych proporcji
          kliknij, aby powiększyć
    • wyrównanie obrazu
kliknij, aby powiększyć

dostępne możliwości:
 – lewe górne
 – prawe górne
 – środkowe
 – lewe dolne
 – prawe dolne

Pozostałe właściwości i metody są standardowe, jak w przypadku innych formantów formularza.
Warto jednak pamiętać, że ten sposób wstawiania obrazu jest stosowany głównie w nagłówkach czy stopkach czy formularzach niezwiązanych.  Chcąc uzależnić obraz od aktualnego rekordu – stosuje się inne metody. 


 

 

 

Podformularz

Podformularz to jeden z formantów formularza. W formularzu głównym (nadrzędnym) umieszczony jest formularz podrzędny. 
Formant dostępny jest w grupie Formantów na karcie Projekt

kliknij, aby powiększyć

Załóżmy, że mamy formularz pojedynczy Kategorie, który będzie formularzem  nadrzędnym: 

kliknij, aby powiększyć

oraz formularz Książki, który będzie wstawiony jako podformularz (czyli formularz podrzędny).

kliknij, aby powiększyć

Przy wstawianiu formantu podformularza automatycznie uruchamia się Kreator podformularzy:

kliknij, aby powiększyć
kliknij, aby powiększyć

Efekt końcowy wygląda tak:

kliknij, aby powiększyć

Można jeszcze ewentualnie dopasować widok formularza, ukryć niepotrzebne kolumny itp. 

kliknij, aby powiększyć

Można też przełączyć widok podformularza na Arkusz danych:

kliknij, aby powiększyć

Przy każdej kategorii – pojawiają się przypisane do niej książki. Przejście do innej kategorii – zmienia od razu rekordy w podformularzu.

Warto też zwrócić uwagę, że formularz z podformularzem (może być ich kilka różnych)  to coś zupełnie innego niż formularz dzielony – różnią się przede wszystkim źródłem danych – są różne dla formularza i podformularza, a nie jednakowe jak w formularzu dzielonym. 

Ja akurat często stosuję ten formant w swoich projektach. Zdecydowanie ułatwia pracę.