Witam.
Kolejny dzien juz sie mecze, ale niestety marne pojecie mam o programowaniu w Basicu.
Zrobilem formularz ktory laczy sie z MySQL wszystko dziala wysmienicie. Niestety ostatnie zadanie jakie mialem do wykonania w tym formularzu nieco mnie przeroslo . Otóż musze dodac mozliwosc wgrywania do bazy plikow PDF, a nastepnie z formularza mozliwosc otwarcia ich. Druga opcja to ze wybieram plik ktory jest kopiowany do danego folderu na dysku, a jego nowy URL zapisywany o bazy. Ktore wyjscie jest latwiejsze? Intensywnie staram sie nauczyc pisania makr niestety malo mam czasu dlatego prosze tutaj oraz jakies rady wskazowki.
Zapisywanie pliku do bazy lub jego URL.
Zapisywanie pliku do bazy lub jego URL.
OpenOffice 3.4
Re: Zapisywanie pliku do bazy lub jego URL.
Przechowanie dokumentu PDF uzyskasz a pomocą pary pól: nazwa (tekstowa) i zawartość (jakiś blob).
Jeżeli by chcieć przechowywać dokumenty jako pliki, to trzeba pamiętać, że nazwa pliku w katalogu jest unikalna. Natomiast nazwa uploadowanego pliku unikalna być nie musi. Zatem musisz przechowywać dwie nazwy: oryginalną -- którą posługujesz się w komunikacji z użytkownikiem i faktyczną, której używasz w komunikacji z systemem.
Metoda z zewnętrznym przechowywaniem dokumentów mniej obciąża bazę, daje też większe możliwości alternatywnego dostępu i zarządzania. Wymaga też większej uwagi, jeśli chodzi o bezpieczeństwo (np. nieautoryzowany dostęp).
Jeżeli by chcieć przechowywać dokumenty jako pliki, to trzeba pamiętać, że nazwa pliku w katalogu jest unikalna. Natomiast nazwa uploadowanego pliku unikalna być nie musi. Zatem musisz przechowywać dwie nazwy: oryginalną -- którą posługujesz się w komunikacji z użytkownikiem i faktyczną, której używasz w komunikacji z systemem.
Metoda z zewnętrznym przechowywaniem dokumentów mniej obciąża bazę, daje też większe możliwości alternatywnego dostępu i zarządzania. Wymaga też większej uwagi, jeśli chodzi o bezpieczeństwo (np. nieautoryzowany dostęp).
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Zapisywanie pliku do bazy lub jego URL.
Dziekuje za odpowiedz i za zwrocenie uwagi na kilka waznych rzeczy.
W tym wypadku wolalbym zaimplementowac metode druga. Musze wiec napisac makro ktore po kliknieciu w przycisk otworzy okno do wyboru pliku. Nastepnie po wybraniu pliku skopiuje go do mojego folderu (folderu ktorego adres jest na stale zapisany w makrze gdzie bede przechowywac PDF-y), a w bazie zapisze dokladny adres pliku. Nastepnie drugi przycisk ktory po kliknieciu otwieralby ten plik prosto z formularza.
Napisal Pan rowniez, ze nazwa przechowywanego pliku w bazie moze sie powtarzac, a folderze nie. Dobrym wyjsciem jest wiec chyba stworzenie jednej kolumny w bazie ktora przechowuje adres pliku z zablokowana mozliwoscia duplikatu.
MAKRO gotowe ) dziala wszystko poza jednym szczegolem. Macro wkleja nazwe pliku do TEXT Field, ten text field polaczony jest z baza. Jezeli wpiszemy cos do tego pola klawiatura to od razu wszystko jest automatycznie zapisywane w bazie. Jezeli makro wklei tam tekst to niestety nie jest to automatycznie zapisywane. Dlaczego? Co zrobic zeby openofficy wykrywal zmiany wprowadzone przez makro?
W tym wypadku wolalbym zaimplementowac metode druga. Musze wiec napisac makro ktore po kliknieciu w przycisk otworzy okno do wyboru pliku. Nastepnie po wybraniu pliku skopiuje go do mojego folderu (folderu ktorego adres jest na stale zapisany w makrze gdzie bede przechowywac PDF-y), a w bazie zapisze dokladny adres pliku. Nastepnie drugi przycisk ktory po kliknieciu otwieralby ten plik prosto z formularza.
Napisal Pan rowniez, ze nazwa przechowywanego pliku w bazie moze sie powtarzac, a folderze nie. Dobrym wyjsciem jest wiec chyba stworzenie jednej kolumny w bazie ktora przechowuje adres pliku z zablokowana mozliwoscia duplikatu.
Kod: Zaznacz cały
Sub zapisz
title =("Wybierz plik")
filepicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
filepicker.Title = title
f=filepicker.execute()
if f>0 then REM sprawdzam czy wybrano plik czy anulowano wybor
files = filepicker.getFiles()
fName=files(0)
else
msgbox ("Nie wybrano pliku")
exit sub REM do zamkniecia dziaania programu jezeli nie wybrano pliku
end if
'
separator = "/"
nazwa = FileNameoutofPath(fName,separator) REM Zamiana adresu pliku na sama nazwe
'
adresfol="E:/"
oMies = thisComponent.drawPage.forms.getByName("MainForm")
oMies.getByName("txtFirma").text = adresfol+nazwa
FileCopy(fName,adresfol+nazwa)
End Sub
Sub LaunchOutsideFile()
oMies = thisComponent.drawPage.forms.getByName("MainForm")
wartod = oMies.getByName("txtFirma").currentvalue
Dim oSvc as object
oSvc = createUnoService("com.sun.star.system.SystemShellExecute")
IF fileexists(wartod)then
oSvc.execute(ConvertToUrl(wartod), "", 0)
else
beep
msgbox ("Plik nie istnieje")
End If
End Sub
MAKRO gotowe ) dziala wszystko poza jednym szczegolem. Macro wkleja nazwe pliku do TEXT Field, ten text field polaczony jest z baza. Jezeli wpiszemy cos do tego pola klawiatura to od razu wszystko jest automatycznie zapisywane w bazie. Jezeli makro wklei tam tekst to niestety nie jest to automatycznie zapisywane. Dlaczego? Co zrobic zeby openofficy wykrywal zmiany wprowadzone przez makro?
OpenOffice 3.4