Zapisywanie pliku do bazy lub jego URL.

Użytkowanie programu bazodanowego
Arturp333
Posty: 3
Rejestracja: czw cze 07, 2012 10:25 pm

Zapisywanie pliku do bazy lub jego URL.

Post autor: Arturp333 »

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.
OpenOffice 3.4
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zapisywanie pliku do bazy lub jego URL.

Post autor: Jan_J »

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).
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Arturp333
Posty: 3
Rejestracja: czw cze 07, 2012 10:25 pm

Re: Zapisywanie pliku do bazy lub jego URL.

Post autor: Arturp333 »

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.

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
ODPOWIEDZ