Trafiłem na forum ponieważ już od 4 dni szukam rozwiązania pewnego problemu.
Zacznę od początku:
Mam stworzoną bazę danych, w której jest jedna tabela o nazwie "Motki_sklad", w której są następujące kolumny: ID_produktu (klucz główny), Kolor1, Kolor2, Kolor3.
Mam też stworzony formularz o zdefiniowanej nazwie "Formularz_TEST".
W formularzu jest formant Pole tekstowe o nazwie "WpiszNumer", oraz dwa kolejne pola tekstowe o nazwach "TXT_Kolor1", "TXT_Kolor2". Jest też formant przycisk o nazwie "Przycisk1".
Generalnie stworzyłem Makro, które uruchamia się po naciśnięciu przycisku "Przycisk1" pobiera wpisany wcześniej w polu "WpiszNumer" tekst (który odpowiada jednemu z rekordów w tabeli "Motki_sklad" w kolumnie "ID_produktu") i w polach "TXT_Kolor1" oraz "TXT_Kolor2" wyświetla odpowiednie wartości komórek z tabeli "Motki_sklad" kolumn "Kolor1" oraz "Kolor2".
Powyższa część działa.
Jednak chcę do tego wyświetlać w formularzu obrazek produktu. Obrazek na taką samą nazwę pliku jak wartość wpisywana w polu "WpiszNumer", z rozszerzeniem .jpg. Obrazy są umieszczone w katalogu "obrazy" w folderze z plikiem bazy danych. Na formularzu używam formantu obrazkowego o nazwie "Obrazek".
Niestety czegokolwiek nie robię, nie mogę zmusić programu do wyświetlenia wskazanego obrazka. Kod uruchamia się i kończy powodzeniem (żadnego błędu) ale obrazka nie widać.
Czy możecie mi pomóc to rozgryźć ?
P.S. Poniżej zamieszczam obecny kod i podlinkowuję plik bazy. Kod w celach testowych podzieliłem na dwa makra - pierwszy uruchamiany jest przy kliknięciu przycisku. Drugi "Macro1" (od obrazka) uruchamiany po kliknięciu w formant obrazu:
Kod: Zaznacz cały
Sub WyswietlKolory
Dim Numer As String
Dim Kolor1 As String
Dim Kolor2 As String
Dim oForm As Object
oForm = ThisComponent.DrawPage.Forms.getByName("Formularz_TEST")
Numer = oForm.getByName("WpiszNumer").Text
' Sprawdź, czy wprowadzono numer
If Numer = "" Then
MsgBox "Wprowadź numer w polu WpiszNumer."
Exit Sub
End If
' zapytanie SQL, aby pobrać kolory dla danego Numeru
Dim SQL As String
SQL = "SELECT ""Kolor1"", ""Kolor2"" FROM ""Motki_sklad"" WHERE ""ID_produktu"" = '" & Numer & "'"
' Wykonaj zapytanie SQL
Dim oStatement As Object
Dim oResultSet As Object
' Dim SciezkaObrazka As String
' Dim oImageControl As Object
oStatement = oForm.ActiveConnection.createStatement()
oResultSet = oStatement.executeQuery(SQL)
' Sprawdź, czy znaleziono rekord i ustaw kolory
If oResultSet.next() Then
Kolor1 = oResultSet.getString(1)
Kolor2 = oResultSet.getString(2)
' Ustaw kolory w polach na formularzu
oForm.getByName("TXT_Kolor1").Text = Kolor1
oForm.getByName("TXT_Kolor2").Text = Kolor2
Else
MsgBox "Nie znaleziono rekordu dla podanego Numeru."
End If
' Zamknij zapytanie i statement
oResultSet.close()
oStatement.close()
End Sub
Sub Macro1
Dim Numer As String
Dim oForm As Object
Dim SciezkaObrazka As String
Dim oImageControl As Object
oForm = ThisComponent.DrawPage.Forms.getByName("Formularz_TEST")
Numer = oForm.getByName("WpiszNumer").Text
' Sprawdź, czy wprowadzono numer
If Numer = "" Then
MsgBox "Wprowadź numer w polu WpiszNumer."
Exit Sub
End If
' Zbuduj ścieżkę do pliku obrazka
SciezkaObrazka = ConvertToURL(ThisComponent.URL & "/obrazy/" & Numer & ".jpg")
'Ładowanie obrazka do formantu
oImageControl = oForm.getByName("Obrazek")
oImageControl.ImageURL = SciezkaObrazka
'Jeśli nie udało się załadować obrazka,komunikat
If oImageControl.ImageURL = "" Then
MsgBox "Nie można znaleźć obrazka dla podanego Numeru."
End If
End Sub
Z góry dziękuję za pomoc