Więc wpadłem na *szalony* pomysł umieszczenia dodatkowych rzeczy właśnie
tam... np. formularza. Sprawa nie jest taka prosta, jak się wydaje, bo nie
można wprost dodać UserForm, tak jak w VBA dla Excela, czy Worda. Właśnie
Excel - może z niego da się to zrobić? A i owszem... W Excelu zdefiniowałem
sobie prosty UserForm (ale lepiej nie dodawać RefEdita ;-]) wyeksportowałem
go do pliku *.frm, a w Accessie zaimportowałem go. I mogę go normalnie
obrabiać, a nie jest nigdzie widoczny.
Co wy na to?
Eksperymentował (a raczej bawił się...) ktoś w taki sposób?
pozdrawiam
--
Marcin Miga
(ROT13)
ZZ...@Vagrevn.cy
PS. SELECT-y piszę 'z palca' - bez testowania
Otóż chyba jednak można, choć z niewiadomych powodów MS ukrył tę możliwość
przed użytkownikiem.
Wystarczy jednak zmodyfikować sobie standardowe paski narzędzi i dodać tam polecenie
wstawiające do projektu UserForm (jest na liście dostępnych poleceń i działa!)
Oczywiście mówię o paskach edytora VBA, a nie Accessa. No i o Accessie 2000
rzecz jasna!
Nie wiem jak jest w 97 i nie chce mi się sprawdzać, bo już dawno nie używam tej
wersji. Natomiast AFAIK w 2000 opisane polecenie jest na pewno i to w standardowej
wersji Accessa (Office'a)
Odkryłem to dość dawno, ale początkowo myślałem, że to jakiś "ficzer" wersji
deweloperskiej (ODE/ODT). Poza tym nie bardzo widziałem zastosowanie dla UserForms
(poza jednym, mało potrzebnym), więc nie widziałem sensu o tym pisać.
BTW Czy wiecie o tym, że są polecenia wykomentowujące/odkomentowujące zanaczony
fragment kodu? Nie ma ich standardowo na pasku i w menu. Trzeba je sobie samemu
dodać!
I pomysleć, że kiedyś ktoś opisywał, jak w tym celu (do wyłączenia dużego
kawałka kodu) używa #if False ... #end if!!!
| Właśnie
| Excel - może z niego da się to zrobić? A i owszem... W Excelu zdefiniowałem
| sobie prosty UserForm (ale lepiej nie dodawać RefEdita ;-]) wyeksportowałem
| go do pliku *.frm, a w Accessie zaimportowałem go. I mogę go normalnie
| obrabiać, a nie jest nigdzie widoczny.
To fakt! UserForms nie są nigdzie(?) widoczne. W każdym razie nie na liście
standardowych obiektów Accesa.
| Co wy na to?
| Eksperymentował (a raczej bawił się...) ktoś w taki sposób?
No właśnie! Ja znalazłem jedno ciekawe zastosowanie dla UF, do którego nie da się
wykorzystać zwykłego formularza (można sprawdzić).
Chodzi mianowicie o okno dialogowe, za pomocą którego podaje się parametry dla
kwerendy, raportu, czy po prostu jakiejś procedury.
Jak wiadomo, zwykły InputBox nie daje możliwości użycia maski/formatu, wybrania
wartości z listy, etc. Dlatego trzeba wówczas tworzyć własny formularz dialogowy
i otwierać go jako dialog właśnie (z parametrem acDialog), co gwaranmtuje wstrzymanie
działania aplikacji do momentu zamknięcia formularza. Wtajemniczeni wiedzą o co
chodzi, więc pominę szczegóły.
Słowem, da się napisać funkcję, która otworzy okno dialogowe (formularz) i zwróci
wprowadzony przez użytkownika parametr. Ale... spróbujcie użyć tej funkcji
bezpośrednio w kwerendzie, np.:
SELECT * FORM Tabela1 WHERE Pole1 = funcPodajParametr();
Gdzie funcPodajParametr() jest funkcją otwierającą np. formularzyk z rozwijaną
listą i zwracającą wybraną przez użytkownika wartość.
To nie zadziała! Access zwróci błąd! Tymczasem użycie UserForm zamiast zwykłego
formularza spowoduje, że funkcja będzie działać!
Interesujące, nieprawdaż?
Wiem, wiem - po co wywoływać funkcję bezpośrendio z kwerendy, skoro można
wpisać parametr z normalnego formularza i potem utworzyć dynamiczną kwerendę
lub podać warunek np. jako parametr dla DoCmd.OpenForm
Cóż, to tylko jakiś pomysł wykorzystania UserForms. Drugi podał Marcin.
Ktoś ma inne?
Uwaga dla ewentualnych eksperymentatorów - UserForms otwiera się i zamyka nieco
inaczej niż zwykłe formularze:
' otwarcie
Load NazwaFormularza ' bez cudzysłowów!!!
NazwaFormularza.Show
' zamknięcie
Unload NazwaFormularza
' lub
Unload Me ' w kodzie samego formularza
Czyli kod jest zbliżony raczej do zwykłego VB, a nie VBA.
Reszta (procedury zdarzeń) jest chyba identyczna.
Czekam na ciekawe pomysły wykorzystania UserForms!!!
--
+---------------------------------------------------------------+
| lek. Krzysztof Czuryło access(at)krzycz.com |
| www.krzycz.com |
+---------------------------------------------------------------+
Witaj
Z ochoczym postanowieniem poznania czegoś nowego stworzyłem User Forma
dodałem jedną etykietę i zapamiętałem modół jako UserForm1 po czym nie mogę
wejść do żadnego modułu komonikat: The Visual Basic Applications in he
database is corrupt.
To samo uczyniłem tym razem na czystej bazie z takim samym skutkiem. Pracuje
w AccXP i ostrzegam innym eksperymenty nie w bazie z innymi objektami.
Dobrze że robie kopie.
Czy któś miał coś podobnego?