| | |
| |
| | "W kodzie języka Visual Basic wyliczane są obie części funkcji Iif, tzn.
| | część_true i częśćfalse, mimo iż zwracana jest tylko jedna z nich. W
| | formularzu lub raporcie programu Microsoft Access, wyliczana jest tylko
| | odpowiednia z części część_true i częśćfalse funkcji IIf. Dlatego nie
| trzeba
| | się niepokoić niepożądanymi efektami ubocznymi wynikającymi z wyliczania
| obu
| | argumentów, gdy funkcja IIf jest używana w formancie wyliczanym,
wyrażeniu
| | kwerendy lub makrze."
| |
| | Wracając do senda sprawy na pewno warto
| | poprawnie konstruować wyrażenia iif bez względu na
| | miejsce ich użycia
| |
|
| Generalnie Help czytać należy i raczej trzeba mu wierzyć ...
| To nie idioci go pisali, i co może ważniejsze - nie idioci to tłumaczyli
| (to częsta opinia, że w odróżnieniu od wszystkich innych producentów, MS
ma
| starannie dobranych Polaków)
| Czytałem ten fragment i miałem takie samo przeświadczenie - wylicza obydwa
| człony...
|
| Ale to nieprawda (chyba, że ja zbyt prostacko rozumiem Jet'a)
|
| Function NicNieRóbAlePiszDoImmediate(klucz) As Integer
| ' zwraca 0
| Debug.Print "ByłemTutaj", klucz
| Stop ' <<< tak już na chama ;-)
| End Function
|
| Włóż ją do kwerendy :
|
| Select
| ID,
| IIf(ID<0, NicNieRóbAlePiszDoImmediate(ID), 1) As Imm
| From Tabela1
|
| i sprawdź czy jest co w oknie analizy ...
| Nawet włóż punkt przerwania ...
|
| KN
|
eeee, Ty swoje a ja swoje ...
Oczywiście wielokrotnie czytałem ten fragment ale chyba dopiero teraz do
mnie dotarł.
Moje wypociny jedynie potwierdzają to co napisałeś:
- w kwerendach IIf jaj nie robi, ale już w kodzie ...
Tym bardziej dziękuję za zwrócenie uwagi ! Jest się czego bać (!)
Niemniej muszę wytłumaczyć skąd to moje uparte "przy swoim ..."
Dzięki tej właściwości IIF można stosować w *kweredach* wymiennie z
kombinacjami AND-OR:
WHERE
IIf(IsNull(parametr1), True, [pole1]=[parametr1])=True
AND
IIf(IsNull(parametr2), True, [pole2]=[parametr2])=True
AND
IIf(IsNull(parametr3), True, [pole3]=[parametr3])=True
która to składnia nie podlega okropnej modyfikacji przy przełączaniu
projekt-SQL, a jednocześnie jest podobnie optymalizowana.
Reszta - jak napisałeś: pod rozwagę
KN
Zobacz też Przykład
Akcja UstawOstrzeżenia służy do włączania lub wyłączania komunikatów
systemowych.
Ustawienia
Akcja UstawOstrzeżenia ma następujący argument.
Argument akcji Opis
Ostrzeżenia włączone Określa, czy komunikaty systemowe są wyświetlane.
Należy kliknąć opcję Tak (aby włączyć komunikaty) lub opcję Nie (aby
wyłączyć komunikaty) w polu Ostrzeżenia włączone sekcji Argumenty akcji okna
makra. Ustawieniem domyślnym jest Nie.
Uwagi
Można zastosować tę akcję, aby modalne ostrzeżenia i okna komunikatów nie
przerywały pracy makra. Komunikaty o błędach będą jednak zawsze wyświetlane.
Program Microsoft Access wyświetla również wszystkie okna dialogowe
wymagające wprowadzania danych wejściowych, a nie tylko wybrania przycisku
(takiego jak OK, Anuluj, Tak lub Nie) - na przykład wszelkie okna dialogowe,
w których wpisuje się tekst lub wybiera jedną z wielu możliwych opcji.
Wykonanie tej akcji z argumentem "Ostrzeżenie włączone" ustawionym na
wartość "Nie" odnosi taki sam skutek co naciśnięcie klawisza ENTER przy
każdym wyświetleniu okna ostrzeżenia lub komunikatu. Na ogół w odpowiedzi na
ostrzeżenie lub komunikat wybiera się przycisk OK albo Tak.
Po zakończeniu pracy makra, program Microsoft Access automatycznie włącza z
powrotem wyświetlanie komunikatów systemowych.
Akcji tej często używa się razem z akcją Echo, która powoduje ukrycie
wyników pracy makra aż do jego zakończenia. Do ukrywania okien ostrzeżeń i
komunikatów można również używać akcji UstawOstrzeżenia.
Ostrzeżenie Chociaż akcja UstawOstrzeżenia upraszcza pracę z makrami,
należy zachować ostrożność przy wyłączaniu komunikatów systemowych. W
niektórych sytuacjach niewskazane jest kontynuowanie pracy makra po
wyświetleniu pewnych komunikatów ostrzegających. Jeśli nie ma się całkowitej
pewności co do wyniku wszystkich akcji makra, nie powinno się używać tej
akcji.
Aby wykonać akcję UstawOstrzeżenia w języku Visual Basic, należy użyć metody
SetWarnings obiektu DoCmd.
Czesc. Mam taki problem mam makro ktore uruchamia 5 kwerend usuwajacych
dane z tabel.
Chcialbym aby program nie pytal mnie za kazdym razem czy napewno chce
usunac x wierszy.
Dzieki.
--
"tabula raza"
--
Serwis Usenet w portalu Gazeta.pl -http://www.gazeta.pl/usenet/
| Jeśli tabele są tabelami połączonymi, muszą być tabelami programu
| Microsoft Access i trzeba otworzyć bazę danych, w której są one
| przechowywane, aby określić więzy integralności.
Też dotarłem do tego fragmentu. Szczególnie przyczepiłem się do słów "Jeśli
tabele są tabelami połączonymi". Poruszyłem tą sprawę ponieważ parę dni
temu, przeglądając helpa, wpadłem na fragment kodu w jaki sposób otworzyć na
stałe tabelę z innej bazy (oczywiście Accesa). Pomyślałem, że otwierając w
ten sposów będę mógł zachować integralność.
... ale skoro nikt z szanownych grupowiczów nie potwierdza moich
przypuszczeń to nie będę drążył tej sprawy.
Może podam przyklad, ktory - mam nadzieje - ostatecznie rozwieje
wątpliwości.
Załóżmy, że są trzy bazy (czyli w rozumieniu accessowym po prostu
pliki.mdb/mde)
A - zawierająca tabele A1, A2
B - tabele B1, B2
C - do której załączono powyższe tabele (przyładowo, w C mogą oczywiście
także znajdować się tabele lokalne, np. C1, C2)
Relacje z wymuszaniem więzów integralności można założyć pomiędzy
tabelami
A1-A2 , B1-B2 oraz C1-C2 (cytat "Obie tabele należą do jednej bazy
danych programu Microsoft Access" wycięłeś...). A także, o czym chyba
jasno stoi w helpie - przy zakładaniu relacji, należy każdą z baz (A, B,
C) otworzyć osobno, np. poleceniem 'Otwórz bazę danych' w menu Accessa.
NIE MOŻNA ustanowić relacji z wymuszaniem więzów, pomiedzy tabelami
pochodzacymi z różnych baz np. A1-B2, A1-C2, B1-C2, itp. Nie można i
już. Dlaczego? - sporo chyba wyjaśnił Krzysztof Pozorek.
Piszesz o otwarciu w kodzie tabeli pochodzącej z innej bazy. Tylko ów
kod niechybnie zawierał najpierw polecenie OpenDatabase "jakaś baza...
cośtam-cośtam" - czyli właśnie programowo otworzyłeś inną bazę (w ten
sposób można otwierać w Accessie wiele baz, zaś "standardowo-graficznie"
tylko jedną).
Zapewne w ten sposób ("programowo") można także ustanawiać relacje z
wymuszaniem więzów, pod warunkiem, że tabele będa należały do tej samej
(nawet gdy będzie otwarta kodem) bazy. Piszę 'zapewne' - ponieważ dotąd
tej metody zakładania relacji nie używałem - dotychczas wystarcza mi
standardowe okno relacji i myszka ;-)
Pozdrawiam -
Stanley
Witam,
Czy moze mi ktos wyjasnic cos takiego. Mam formularz do wprowadzania
danych,
ktory posiada 3 podformularze. Jezeli w zrodle rekordow podformularzy nie
ma
danych (czyli powinien ustawic rekord z tabeli na "autonumer" i pokazac
pola) to czasami laduje podformularz, a czasami nie.
Wyglada to tak, ze otwiera sie formularz glowny a w miejscach
podformularzy
sa puste miejsca tak jakby nic tam nie bylo (jednoczesnie w
podformularzach
nan wpisany kod przy zdarzeniu "From_Load" i nie jest on wykonywany w tych
przypadkach - stad wiem, ze podformularz nie zostal zaladowany).
W czym tkwi przyczyna lub jaka wlasciwosc formularza za to odpowiada?
Pozdrawiam,
Grony
To znany problem. Tkwi on nie w bazie Access czy w aparacie Jet tylko w
głowach programistów z Reechmount. Otóż podformularze mają z założenia
służyć jako reprezentacja relacji jeden do wielu. W związku z tym mają z
góry zaplanowane niektóre zdarzenia np. jeżeli zapisujesz rekord w
podformularzu bto access sam bez pytania i na siłę aktualizuje rekord w
formularzu głównym.
teraz cytuję temat pomocy do Accessa 2000 - "Podfomularze: czym są i jak
działają"
"Jeśli formularz z podformularzem są używane do wprowadzania nowych
rekordów, program Microsoft Access zapisuje bieżący rekord w formularzu
głównym przy wchodzeniu do podformularza. Dzięki temu rekordy w tabeli po
stronie "wiele" będą miały związany z nimi rekord w tabeli znajdującej się
po stronie "jeden" relacji. Przy dodawaniu rekordów do formularza, są one
również automatycznie zapisywane."
a więc jeżeli nie użyłeś relacji to access Cię usczęśliwa na siłę.
Ja tam nie używam relacji na poziomie bazy danych w ogóle, gdyż uważam je za
przeżytek.
Włodek
www.aseta.wroc.pl
Przydatna informacja na przyszlosc.
Pozdrawiam,
Grony
| Witam,
| Czy moze mi ktos wyjasnic cos takiego. Mam formularz do wprowadzania
danych,
| ktory posiada 3 podformularze. Jezeli w zrodle rekordow podformularzy
nie
ma
| danych (czyli powinien ustawic rekord z tabeli na "autonumer" i pokazac
| pola) to czasami laduje podformularz, a czasami nie.
| Wyglada to tak, ze otwiera sie formularz glowny a w miejscach
podformularzy
| sa puste miejsca tak jakby nic tam nie bylo (jednoczesnie w
podformularzach
| nan wpisany kod przy zdarzeniu "From_Load" i nie jest on wykonywany w
tych
| przypadkach - stad wiem, ze podformularz nie zostal zaladowany).
| W czym tkwi przyczyna lub jaka wlasciwosc formularza za to odpowiada?
| Pozdrawiam,
| Grony
To znany problem. Tkwi on nie w bazie Access czy w aparacie Jet tylko w
głowach programistów z Reechmount. Otóż podformularze mają z założenia
służyć jako reprezentacja relacji jeden do wielu. W związku z tym mają z
góry zaplanowane niektóre zdarzenia np. jeżeli zapisujesz rekord w
podformularzu bto access sam bez pytania i na siłę aktualizuje rekord w
formularzu głównym.
teraz cytuję temat pomocy do Accessa 2000 - "Podfomularze: czym są i jak
działają"
"Jeśli formularz z podformularzem są używane do wprowadzania nowych
rekordów, program Microsoft Access zapisuje bieżący rekord w formularzu
głównym przy wchodzeniu do podformularza. Dzięki temu rekordy w tabeli po
stronie "wiele" będą miały związany z nimi rekord w tabeli znajdującej się
po stronie "jeden" relacji. Przy dodawaniu rekordów do formularza, są one
również automatycznie zapisywane."
a więc jeżeli nie użyłeś relacji to access Cię usczęśliwa na siłę.
Ja tam nie używam relacji na poziomie bazy danych w ogóle, gdyż uważam je
za
przeżytek.
Włodek
www.aseta.wroc.pl
| W pozostałych dwóch wariantach (acDataErrContinue) kombi przytrzymuje
| focus ... i chyba nie ma na to rady.
Ostatecznie przeciez, NotInList nie sluzy do tego, co probujesz zrobic.
Niestandardowe wykorzystanie zdarzen jest fajne, ale nie mozna miec
pretensji, jesli cos robi tylko to, do czego zostalo zaprojektowane.
NotInList pozwala albo zakomunikowac, ze nowa wartosc jest zla, albo ja
dorzucic do listy, nic wiecej.
nooo... polemizowałbym ...
<cytat z helpa
Jeśli umożliwi się użytkownikowi zmianę wartości początkowo wpisanej w polu
kombi (na przykład w niestandardowym oknie dialogowym), trzeba wartość pola
kombi ustawić na nową wartość wprowadzoną w niestandardowym oknie
dialogowym. Powoduje to zapisanie nowej wartości w polu, z którym pole kombi
jest związane. Program Microsoft Access doda nową wartość do listy pola
kombi, jeśli wartością argumentu Response będzie acDataErrContinue.
</cytat z helpa
jak widać z powyższego, przewidziano taką możliwość jak zmiana pierwotnego
NewData ...
(mętnie to napisane ale jednak ...)
Problem w tym, że chyba nie poszli konsekwentnie tą drogą ...
Gdyby NewData było przekazywane ByRef z powrotem do wewnętrznej obsługi
zdarzenia i to właśnie ta poprawiona wartość była potem sprawdzana przy
Response = acDataErrAdded, to nie byłoby tematu ...
Prawdę powiedziawszy, w tej chwili nie bardzo potrafię domyśleć się
argumentów, dlaczego tego tak nie zrobiono.
(przykładowo: argument KeyCode procedury KeyDown można nadpisać !)
A czy nie mozesz zwiazac swojego kombi z pierwszym polem wyswietlanym
Nazwisko, zamiast z ukrytym ID?
hmmm, no przecież nie będę przykładowo do formularza "rachunki klienta"
wprowadzał czegoś innego jak jego klucz ???
Pozwoli Ci to wykorzystac zdarzenie BeforeUpdate do swoich celow. Latwo
sprawdzic, czy user podal wartosc spoza listy za pomoca wyrazenia:
If Me!Kombi0.ListIndex < 0 Then
DoCmd.OpenForm "frmDialog", , , , , acDialog
Me!Kombi0.Requery
End If
Rozumiem, że bez ustawiania "ogranicz do listy" na "tak" ...
Swoją drogą dzięki za ListIndex < 0 (!)
Zupełnie zapomniałem, że w ten sposób mozna sprawdzić "notinlist" ...
pozdrawiam
KN
Następnie zachodzi zdarzenie BeforeDelConfirm, tuż przed wy wietleniem
przez program Microsoft Access okna dialogowego Potwierd usunięcie
monitującego użytkownika o potwierdzenie usunięcia. Po udzieleniu
odpowiedzi przez potwierdzenie lub anulowanie usunięcia, występuje
zdarzenie AfterDelConfirm.
<inny temat
Anulowanie zdarzenia Delete powoduje, że zdarzenia BeforeDelConfirm i
AfterDelConfirm nie zachodzą, a okno dialogowe nie jest wy wietlane.
<koniec cytatu
I jeszcze sporo innych opowieści takiej treści.
No i ja, biedny zajączek, uwierzyłem M$ jak reklamie szamponu...
A co się okazało:
==================================
Jeżeli w następującej po OnDelete procedurze obsługi zdarzenia
formularza
OnCurrent (dla rekordu następnego po kasowanym) wystąpi jakakolwiek
instrukcja przypisania wartości do formantu formularza albo do pola
tabeli,
to nie zachodzi ani zdarzenie BeforeDelConfirm, ani AfterDelConfirm.
Tak jakby anulowano zdarzenie Delete (patrz cytat), chociaż *nie*
jest ono anulowane,
a procedura obsługi zdarzenia Delete jest wykonywana.
==================================
A zatem: kto klnie lub żali się, że Form_BeforeDelConfirm wykonuje się
przy kasowaniu tylko niektórych rekordów, niech zajrzy do Form_Current!
TM
Dnia Fri, 18 Feb 2005 19:30:14 +0100, BraZby napisał(a):
Sprawdziłem to i owo, męcząc z swoją ubogą wiedzą na temat ACC VBA i
doszedłem do następującego wniosku:
1)
| 'Wartość 0 (domyślna) oznacza porównanie binarne
Wartość 0 nie jest domyślna! Domyślna wartość jest określona OPTION
COMPARE
i zazwyczaj jest określona jako DATABASE!
[...]
<cyt
'W programie Microsoft Access wszystkie moduły zawierają
'domyślnie w sekcji deklaracji instrukcję Option Compare Database.
'Instrukcja ta ustawia metodę porównywania ciągów znaków dla modułu
'na metodę określoną dla całej bazy danych.
'Metodę porównywania ciągów znaków można zmienić dla wszystkich
'nowych baz danych klikając polecenie Opcje w menu Narzędzia
'i zmieniając wartość pola Domyślny porządek sortowania baz
'danych na karcie Ogólne okna dialogowego Opcje.
'Wartością domyślną tego pola jest wartość "Ogólny",
'określająca sortowanie według alfabetu angielskiego '
'bez rozróżniania wielkich i małych liter.
</cyt
Zmieniam opcje, zamykam, tworze nową bazę.
Sprawdzam opcje - jest "Ogólne" a nie Polski =OK.
Wklejam kod - testuję: i to samo.
Restartuje system, tworze nową bazę =to samo.
Remuję 'Option Compare Database =tonący brzydko się chwyta...
To samo.
Więc rezygnuję.
...
1. Zawsze będę wpisywał argumenty opcjonalne.
Nawet jeżeli wartość domyślna znaczy porównanie binarne
to i tak wpiszę *vbBinaryCompare*
2. Prawie zawsze będę zmienną fAA typu Boolean przyrównywał
If fAA = True Then...
a nie:
If fAA Then...
3. Zawsze będę ujmował w nawiasy If (A Or B) itp.
4. Zawsze piszę: rst.Fields("[MojePole]")
5.Zawsze .....
6. Zawsze .....
Śmiejcie się ze mnie, ale jak Szkot sparzył się bigosem, to potem na zagon
kapusty dmuchał ;-)
AJA napisał(a) w wiadomo ci:
<3731EBB6.357F5@willow.oi.pz.zgora.pl...
|NO i stalo sie wybrnellem z problemu jednego z zakresem daty i wpadam
w
|drugi ... oto on
|
|DoCmd.OpenReport "RDATA", acPreview, , "[DATA_WYDANIA] Between " &
|Format(Me![OD1], "0") & " AND " & Format(Me![DO1], "0")
|powyzszy kod wybiera dane z okreslonego przedzialu czasu .. ale
jest
|bol .. bo jak podam zokresu od 99-11-11 do 11-11-11 to on wybierze
|daty .. ale w inny sposob .. nie wybierze dat z 21 wieku lecz z 20 o
co
|cchodzi dlaczego tak jest jak zrobic by wybral poprawnie ???
|nei mam pojecia o co chodzi ... co zrobic ??
|czy moze jednak kod powyzszy jest zly ???
|Kiedy w gre wchodzi 20 wiek jest ok .. ale gdy daty z 21 wieku juz
jest
|blad :((
Czlowieku!!! Czy Ty w ogóle nie myslisz?! To nie boli!!!
Skad Access ma wiedziec, ze 11 oznacza 2011, a nie 1911? Czy nie
mozesz podac daty z czterocyfrowym rokiem?
np. 1999-11-11 do 2011-11-11
Oczywiscie daty powinny byc takze do tabel wprowadzane w formacie
czterocyfrowym, bo inaczej Access sam sobie "dopisuje" pierwsze dwie
cyfry roku i bodajze dla lat 00-29 przyjmuje, ze sa to daty w 21-szym
wieku (i dodaje z przodu "19"), a dla pozostalych, ze w 20-tym (i
dodaje "20").
Podobnie dla dat wprowadzanych jako kryteria w kwerendach.
To wszystko jest w HELPIE!!!!!!!!!!!!!! (klawisz F1).
<CITE
Nowosc w 97
Nowa interpretacja danych wprowadzonych w skróconym formacie roku
W arkuszach danych i formantach edycji, program Microsoft Access
interpretuje teraz dane wprowadzone w skróconym formacie roku w
nastepujacy sposób (czesciowo dla wieku dwudziestego pierwszego).
Zakres daty dla skróconego formatu roku
Interpretacja
od 1/1/00 do 12/31/29 od 1/1/2000 do 12/31/2029
od 1/1/30 do 12/31/99 od 1/1/1930 do 12/31/1999
</CITE
To sa naprawde podstawowe rzeczy, które sa jasno i przejrzyscie
opisane w Helpie, z mnóstwem przykladów.
+- Krzysztof Czurylo -+
+- Technical University of Gdansk & Medical University of Gdansk -+
+- krzy@SPAM.polbox.KILLER.com -+
+- remove 'SPAM.' and 'KILLER.' before reply !!! -+
dziękuję , jesli mógłbyś jeszcze powiedzieć w jaki sposób zmienić
polecenie
DoCmd.RunCommand acCmdImport żeby zawęzić importowane np.do plików.xls
z góry dziekuję i pozdrawiam
Piotr Dąbrowski
Źle szukałeś w helpie. Powinieneś wykorzystać inną metodę:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, nazwatabeli,
nazwa pliku, nazwy pól, zakres
nazwatabeli
Wyrażenie typu ciąg znaków będące poprawną nazwą tabeli programu Microsoft
Access, do której mają być importowane dane z arkusza kalkulacyjnego, z
której mają być eksportowane dane lub do której mają być przyłączone dane
arkusza albo kwerenda wybierająca programu Microsoft Access, której wyniki
mają być wyeksportowane do arkusza kalkulacyjnego.
nazwapliku
Wyrażenie typu ciąg znaków będące pełną nazwą, wraz ze ścieżką dostępu,
pliku arkusza kalkulacyjnego, do którego mają być eksportowane dane albo z
którego mają być importowane lub przyłączane dane.
nazwypól
Wartość True (-1) wskazuje, że w pierwszym wierszu arkusza kalkulacyjnego
znajdują się nazwy pól używanych przy imporcie lub łączeniu. Wartość False
(0) wskazuje, że pierwszy wiersz arkusza zawiera zwykłe dane. Jeśli argument
ten jest pusty, przyjmowana jest wartość domyślna (False).
Podczas eksportu tabeli programu Microsoft Access lub danych kwerendy
wybierającej do arkusza kalkulacyjnego, nazwy pól umieszczane są w pierwszym
wierszu arkusza, niezależnie od wartości tego argumentu.
zakres
Wyrażenie typu ciąg znaków, które jest poprawnym zakresem komórek lub nazwą
zakresu w arkuszu kalkulacyjnym. Argument ten stosuje się tylko podczas
importu. Jeśli argument ten jest pusty, importowany jest cały arkusz.
Przy exporcie do arkusza kalkulacyjnego argument ten musi być pusty. Jeśli
zostanie podana dla tego argumentu jakaś wartość, operacja exportu nie
powiedzie się.
To są informacje z helpa. Jak już mówiłem tam jest wszystko (no prawie!!!),
Powodzenia,
Mihó M.
Dzieki za poradę, ale metoda opisana przez ciebie nie daje mi swobodnego
wyboru lokalizacji importowanego pliku poprzez okno eksploratora .
Jeżeli masz jakis inny pomysł to przeslij.
Piotr
| dziękuję , jesli mógłbyś jeszcze powiedzieć w jaki sposób zmienić
polecenie
| DoCmd.RunCommand acCmdImport żeby zawęzić importowane np.do plików.xls
| z góry dziekuję i pozdrawiam
| Piotr Dąbrowski
Źle szukałeś w helpie. Powinieneś wykorzystać inną metodę:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, nazwatabeli,
nazwa pliku, nazwy pól, zakres
nazwatabeli
Wyrażenie typu ciąg znaków będące poprawną nazwą tabeli programu Microsoft
Access, do której mają być importowane dane z arkusza kalkulacyjnego, z
której mają być eksportowane dane lub do której mają być przyłączone dane
arkusza albo kwerenda wybierająca programu Microsoft Access, której wyniki
mają być wyeksportowane do arkusza kalkulacyjnego.
nazwapliku
Wyrażenie typu ciąg znaków będące pełną nazwą, wraz ze ścieżką dostępu,
pliku arkusza kalkulacyjnego, do którego mają być eksportowane dane albo z
którego mają być importowane lub przyłączane dane.
nazwypól
Wartość True (-1) wskazuje, że w pierwszym wierszu arkusza kalkulacyjnego
znajdują się nazwy pól używanych przy imporcie lub łączeniu. Wartość False
(0) wskazuje, że pierwszy wiersz arkusza zawiera zwykłe dane. Jeśli
argument
ten jest pusty, przyjmowana jest wartość domyślna (False).
Podczas eksportu tabeli programu Microsoft Access lub danych kwerendy
wybierającej do arkusza kalkulacyjnego, nazwy pól umieszczane są w
pierwszym
wierszu arkusza, niezależnie od wartości tego argumentu.
zakres
Wyrażenie typu ciąg znaków, które jest poprawnym zakresem komórek lub
nazwą
zakresu w arkuszu kalkulacyjnym. Argument ten stosuje się tylko podczas
importu. Jeśli argument ten jest pusty, importowany jest cały arkusz.
Przy exporcie do arkusza kalkulacyjnego argument ten musi być pusty. Jeśli
zostanie podana dla tego argumentu jakaś wartość, operacja exportu nie
powiedzie się.
To są informacje z helpa. Jak już mówiłem tam jest wszystko (no
prawie!!!),
Powodzenia,
Mihó M.
Dzieki za poradę, ale metoda opisana przez ciebie nie daje mi swobodnego
wyboru lokalizacji importowanego pliku poprzez okno eksploratora .
Jeżeli masz jakis inny pomysł to przeslij.
Piotr
| | dziękuję , jesli mógłbyś jeszcze powiedzieć w jaki sposób zmienić
| polecenie
| DoCmd.RunCommand acCmdImport żeby zawęzić importowane np.do plików.xls
| z góry dziekuję i pozdrawiam
| Piotr Dąbrowski
| Źle szukałeś w helpie. Powinieneś wykorzystać inną metodę:
| DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97,
nazwatabeli,
| nazwa pliku, nazwy pól, zakres
| nazwatabeli
| Wyrażenie typu ciąg znaków będące poprawną nazwą tabeli programu
Microsoft
| Access, do której mają być importowane dane z arkusza kalkulacyjnego, z
| której mają być eksportowane dane lub do której mają być przyłączone
dane
| arkusza albo kwerenda wybierająca programu Microsoft Access, której
wyniki
| mają być wyeksportowane do arkusza kalkulacyjnego.
| nazwapliku
| Wyrażenie typu ciąg znaków będące pełną nazwą, wraz ze ścieżką dostępu,
| pliku arkusza kalkulacyjnego, do którego mają być eksportowane dane albo
z
| którego mają być importowane lub przyłączane dane.
| nazwypól
| Wartość True (-1) wskazuje, że w pierwszym wierszu arkusza
kalkulacyjnego
| znajdują się nazwy pól używanych przy imporcie lub łączeniu. Wartość
False
| (0) wskazuje, że pierwszy wiersz arkusza zawiera zwykłe dane. Jeśli
argument
| ten jest pusty, przyjmowana jest wartość domyślna (False).
| Podczas eksportu tabeli programu Microsoft Access lub danych kwerendy
| wybierającej do arkusza kalkulacyjnego, nazwy pól umieszczane są w
pierwszym
| wierszu arkusza, niezależnie od wartości tego argumentu.
| zakres
| Wyrażenie typu ciąg znaków, które jest poprawnym zakresem komórek lub
nazwą
| zakresu w arkuszu kalkulacyjnym. Argument ten stosuje się tylko podczas
| importu. Jeśli argument ten jest pusty, importowany jest cały arkusz.
| Przy exporcie do arkusza kalkulacyjnego argument ten musi być pusty.
Jeśli
| zostanie podana dla tego argumentu jakaś wartość, operacja exportu nie
| powiedzie się.
| To są informacje z helpa. Jak już mówiłem tam jest wszystko (no
prawie!!!),
| Powodzenia,
| Mihó M.
nazwapliku może być zmienną pod którą podstawiasz ścieżkę dostępu do pliku
.xls.
Możesz np. wykorzystać funkcję API GetOpenFile
MM
Stanley P <stan@pertus.com.plwrote in message
Jaroslaw Swiecicki napisał(a):
snip
| a następnie usunięcie konta
| użytkownika Administrator z grupy Administratorzy. W przeciwnym wypadku
| każdy posiadacz kopii programu Microsoft Access będzie mógł się
| zarejestrować w grupie roboczej na koncie użytkownika Administrator i
uzyska
| pełny dostęp do obiektów grupy roboczej."
No wlasnie, przeczytaj uwaznie co sam napisales:
"...a następnie usunięcie konta użytkownika Administrator z grupy
Administratorzy...".
Oo?
Usuniecie konta z grupy nie jest tym samym co usuniecie konta w ogole.
Zareczam Ci, a nawet daje glowe, ze usuniecie domyslnego konta Admin
(Administrator), grupowych kont Admins (Administratorzy), Users
(Uzytkownicy) NIE JEST MOZLIWE W DOWOLNEJ WERSJI JEZYKOWEJ ACCESSA.
Myslisz, ze M$ napisal CALEGO Acc'xx pl specjalnie dla Polakow? ;-)
Nie ale niewatpliwie tlumaczony na polski ma wiecej bug'ow niz ang.
A czym innym jest wycofanie uprawnien do obiektow tychze kont (i o czym
wspomnial Hans), na czym w zasadzie polega zabezpiecznie baz.
Pozdrawiam -
Stanley
Hmm, jak zabezpieczyc (powiedzmy) baze w Acc to wiem i sam tak robie, ale do
dzis dnia
bylem swiecie przekonany ze "wykrylem" pare lat temu nowego bug'a w polskim
accesie. Ze zlosci zainstalowalem sobie nawet teraz jakiegos acc97 v.ang
(chociaz na rano mam troche wazniejszych rzeczy) i tu sie rzeczywiscie nie
da usunac admin'a.
Oficjalne dementi zloze jak sprawdze angielskiego acc95.
Pozdrawiam
Co nieco skruszony
Jarek Swiecicki
Użytkownik Bohun <apiet@mops.uci.agh.edu.plw wiadomości do grup
dyskusyjnych napisał:8p2cf6$8o@galaxy.uci.agh.edu.pl...
Ale programowo?
Oto dokladny cytat z pomocy:
Uruchamianie programu Microsoft Access z opcjami wiersza polecenia za pomocą
skrótu
Otwórz folder, w którym jest zainstalowany program Microsoft Access
(zazwyczaj nosi on nazwę "Office" i znajduje się w podfolderze "Microsoft
Office" folderu "Program Files" na dysku C).
Kliknij prawym przyciskiem myszy ikonę programu Microsoft Access, a
następnie kliknij polecenie Utwórz skrót.
Kliknij prawym przyciskiem myszy nowo utworzoną ikonę skrótu, kliknij
polecenie Właściwości, a następnie kliknij kartę Skrót.
W polu Obiekt docelowy kliknij po prawej stronie polecenia uruchamiającego
program Microsoft Access, a następnie wpisz żądane opcje wiersza polecenia.
Następujące przykładowe polecenie uruchamia program Microsoft Access,
otwierając jednocześnie bazę danych "Northwind"' w trybie wyłączności.
"C:Program FilesMicrosoft OfficeOfficeMSAccess.exe" "C:Program
FilesMicrosoft OfficeOfficePliki przykładoweNorthwind.mdb" /excl
Aby wyświetlić listę opcji wiersza polecenia, kliknij przycisk .
Uwaga Nowo utworzony skrót można umieścić na pulpicie lub w folderze, bądź
też dodać go do menu Start. Więcej informacji na ten temat można znaleźć w
Pomocy systemu Windows pod hasłem "skróty".
Można również utworzyć skrót otwierający bezpośrednio z systemu Windows
dowolny obiekt bazy danych programu Microsoft Access.
Ostatnio jedna z osób, które jeszcze pare miesięcy temu miała dostęp do
mojej aplikacji (przerwa macieżyńska:-), teraz go utraciła.
Objawy:
- folder sieciowy z moją bazą danych jest zamapowany tak jak u innych
użytkowników na dysku M,
- zawartość tego dysku jest w pełni widoczna,
- co więcej bez żadnych problemów można otworzyć dokumenty Worda znajdujące
się na tym dysku,
- próba otwarcia dowolnego pliku accessowego z tego dysku skutkuje
komunikatami:
a. okno z ostrzeżeniami WXP (pewnie firewalla SP2):
<komunikat
Czy chcesz otworzyć ten plik?
Nazwa: test.mdb
Wydawca: Nieznany wydawca
Typ: Aplikacja Microsoft Access
Od: M:
Otwórz Anuluj
___
Pliki pochodzące z internetu mogą być użyteczne, ale ten typ pliku może być
potencjalnie szkodliwy dla komputera. Jeśli nie masz zaufania do źródła, nie
otwieraj tego oprogramowania
</komunikat
b. Po wybraniu "Otwórz" pojawia się następny komunikat, tym razem accessowy:
<komunikat
Program Microsoft Access nie może otworzyć pliku.
Plik znajduje się poza siecią intranet lub w niezaufanej witrynie. Program
Microsoft Access nie otworzy pliku z powodu potencjalnych problemó z
zabezpieczeniami.
Aby otworzyć ten plik, skopiuj go na swój komputer lub do dostępnej
lokalizacji sieciowej.
Ok
</komunikat
Czy macie pomysł jak się z tym problemem uporać?
Pozdrawiam
Grzegorz
<gdn__na@serwerze__poczta.onet.plwrote:
Jest sobie jakiś klient. Klient ma dużą sieć lokalną podzieloną na kilka
podsieci. Niestety jestem laikiem jeśli chodzi o te przesuszenie wiedzy i
więcej szczegółów nie znam.
Ostatnio jedna z osób, które jeszcze parę miesięcy temu miała dostęp do
mojej aplikacji (przerwa macierzyńska:-), teraz go utraciła.
Objawy:
- folder sieciowy z moją bazą danych jest zmapowany tak jak u innych
użytkowników na dysku M,
- zawartość tego dysku jest w pełni widoczna,
- co więcej bez żadnych problemów można otworzyć dokumenty Worda znajdujące
się na tym dysku,
- próba otwarcia dowolnego pliku accessowego z tego dysku skutkuje
komunikatami:
a. okno z ostrzeżeniami WXP (pewnie firewalla SP2):
<komunikat
Czy chcesz otworzyć ten plik?
Nazwa: test.mdb
Wydawca: Nieznany wydawca
Typ: Aplikacja Microsoft Access
Od: M:
Otwórz Anuluj
___
Pliki pochodzące z internetu mogą być użyteczne, ale ten typ pliku może być
potencjalnie szkodliwy dla komputera. Jeśli nie masz zaufania do źródła, nie
otwieraj tego oprogramowania
</komunikat
b. Po wybraniu "Otwórz" pojawia się następny komunikat, tym razem accessowy:
<komunikat
Program Microsoft Access nie może otworzyć pliku.
Plik znajduje się poza siecią intranet lub w niezaufanej witrynie. Program
Microsoft Access nie otworzy pliku z powodu potencjalnych problemów z
zabezpieczeniami.
Aby otworzyć ten plik, skopiuj go na swój komputer lub do dostępnej
lokalizacji sieciowej.
Ok
</komunikat
Czy macie pomysł jak się z tym problemem uporać?
Dzieje się tak, jeśli zasób sieciowy jest mapowany po adresie IP.
Wtedy Windows nie wie, czy to adres IP zewnętrzny, czy wewnętrzny.
Znane mi rozwiązanie, to dodanie tego adresu do zaufanych witryn
sieciowych w ustwieniach internetowych...
Teraz przyszło mi do głowy Inne rozwiązanie - to mapowanie zasobu nie
przez adres IP, ale przez nazwę komputera.
---------------
Roman Wantola
p. Bartek Adamski napisal:
Wystarczy we wlaściwościach formularza (zakładka [Dane]) zmienić
[dodawanie dozwolone] na NIE i już.
Sprawdzilem i dzialalo, ale tylko chwilowo. Niestety teraz znowu po
nacisnieciu Next tworzy kolejne rekordy. Mysle sobie, co jest kurna -
dzialaloa teraz nie dziala? I co sie okazuje wystarczy otworzyc fromularz w
Designview i pozniej spowrotem w trybie normalnym i ... dziala. Wie ktos
moze co jest grane i jak to obejsc?
Z gory dziekuje za wszystkie uwagi i informacje.
---
Może otwierasz ten frm poleceniem:
DoCmd.OpenForm strNazFrm, , , , acFormEdit
Bo... F1(Uwaga Gdy używany jest argument "Tryb danych" akcji OtwórzFormularz
(OpenForm), program Microsoft Access zastępuje wiele ustawień właściwości
formularza. Jeśli argument "Tryb danych" w akcji OtwórzFormularz jest
ustawiony na wartość "Edycja", to program Microsoft Access użyje formularza z
następującymi ustawieniami właściwości
· AllowEdits (EdycjaDozwolona)Â – Tak
· AllowDeletions (UsuwanieDozwolone)Â – Tak
· AllowAdditions (DodawanieDozwolone)Â – Tak
· DataEntry (WprowadzanieDanych) – Nie)...
Jeżeli tak, i jest to niezbędne, to wyłącz AllowAdditions tuż po otwarciu frm.
Np:
...
Dim strNazFrm As String
strNazFrm = "ObrNwyr"
DoCmd.OpenForm strNazFrm, , , , acFormEdit
With Forms(strNazFrm)
.AllowAdditions = False
!ObrPwyr.Form.AllowAdditions = False
'...
End With
...
AP
Mam taki problem z którym nie potrafię sobie poradzić.
Access 2002 pod XP
Po uruchomieniu bazy danych:
- za pomocą makro autoexec, otwiera się formularz z trzema przyciskami
polecenia
- każdy z trzech przycisków polecenia ma otworzyć jeden inny formularz
- kiedy za pierwszym razem uruchamiam jeden (obojętne który)
z trzech wspomnianych przycisków pokazują mi się po kolei takie komunikaty:
Baza danych lub projekt programu Microsoft Access zawiera uszkodzone
odwołanie
do pliku "ACTIVESEX.OCX" wersja 1.2. lub odwołanie nie istnieje.
| klikam na OK i pokazuje się następny komunikat:
Baza danych lub projekt programu Microsoft Access zawiera uszkodzone
odwołanie
do pliku "BR549.OCX" wersja 1.0. lub odwołanie nie istnieje.
| klikam na OK i pokazuje się następny komunikat:
Baza danych lub projekt programu Microsoft Access zawiera uszkodzone
odwołanie
do pliku "MSISYS.OCX" wersja 1.0. lub odwołanie nie istnieje.
| klikam na OK i pokazuje się następny komunikat:
Baza danych lub projekt programu Microsoft Access zawiera uszkodzone
odwołanie
do pliku "MSIPRINT.OCX" wersja 1.0. lub odwołanie nie istnieje.
| i dopiero teraz otwiera się formularz który chciałem uruchomić za pomocą
przycisku.
Od tej pory pracując z bazą mogę otwierać pozostałe formularze za pomocą
wspomnianych przycisków, a taka seria komunikatów nie pokaże się, aż do
momentu
zamknięcia bazy i ponownego jej uruchomienia.
Nadmieniam, że uruchamiając ponownie bazę nie ma znaczenia który z trzech
przycisków
zostanie uruchomiony jako pierwszy - zawsze sytuacja powtarza się
analogicznie do tego
co opisałem wcześniej.
Czy może mnie ktoś naprowadzić w jaki sposób należy rozwiązać problem ???
Pozdrawiam
Grzegorz
1. A próbowałeś usunąć jeden przycisk, przesunąć na inny formukarz,
zmienić
ich kolejność, przypisać inne zdarzenia do tych przycisków, np. zwykłe
MsgBox'y, albo uruchamiać te formularze "ręcznie" po odpaleniu bazy?
tak - wszystko z tej listy było testowane, a formularz otwierany ręcznie
działa OK
2. Spróbuj napisać kod otwierania formularzy ręcznie, wstawiając
zwyczajne
"On error resume next" - to przypomina zalepianie opony taśmą klejącą,
ale
czasem działa.
tego nie jestem w stanie napisać - jestem początkującym użytkownikiem
i moja wiedza jest jeszcze bardzo uboga :(
3. Spróbuj przeczyścić bazę danych - skompaktuj, zdekompiluj,
bez skutku ....
użyj funkcji
BackupThisTextFiles (google) itd.
nie potrafię ...
4. Jeśli to nie pomoże importuj bazę po kawałeczku do innego pliku, może
problem się po drodze sam rozwiąże.
KURCZE - UDAŁO SIĘ !!!
Takich baz miałem kilka. Pisałem tylko o jednej i podałem ją jako przykład.
Ale aktualni wszystkie (z komunikatami) przepuściłem przez import i problem
zniknął.
Co prawda przy imporcie formularzy pokazał się znowu komunikat:
Baza danych lub projekt programu Microsoft Access zawiera uszkodzone
odwołanie do pliku "ACTIVESEX.OCX" wersja 1.2. lub odwołanie nie istnieje.
ale po zatwierdzeniu klawiszem OK zaimportowały się wszystkie formularze,
a po ponownym uruchomieniu bazy wszystko działało OK.
Ciekawostka - wspomniane bazy które nie chciały działać w Access 2002 dla
XP,
działały wcześniej bez najmniejszych problemów w Access 2000,
a dopiero po przesiadce na XP zaczęły się robić takie "jaja".
5. Jeśli i to nie pomoże, to zaczekaj, aż się tu wypowiedzą mądrzejsi ode
mnie...
I to okazuje się zbyteczne, chociaż wiedza innych jest "kopalnią"
dla takich początkujących jak ja.
DZIĘKUJĘ BARDZO !!!
Pozdrawiam
Grzegorz
Pozdrawiam,
K
--
============= P o l N E W S ==============
archiwum i przeszukiwanie newsów
http://www.polnews.pl
epsilon$ while read LINE; do echo "$LINE"; done < Pudel
| | Macie jakies pomysly na praktyczny projek z wykorzystaniem baz danych,
| | ktory by sie nadawal na prace dyplomowa?
| Moze strona internetowa z wykorzystaniem procedur PL/SQL.
| Na pracę _magisterską_???
| Na licencjat/inżyniera, to jeszcze mogę zrozumieć, ale magistra?
| na magisterską tez sie nadaje.
Hmm... Praca magisterska, w odróżnieniu od poziomu licencjatu, powinna
już być pracą naukową, badawczą. Poszerzającą obecny stan wiedzy. Gdzie
masz tu pole do popisu przy takim temacie?
| Poza tym tam jest napisane "praktyczny" i
| praktycznie jest tam co robić i co opisywac. (Cache, blokowanie danych,
| autoryzacja itd)
I które z wymienionych zagadnień cokolwiek wnosi? (bo, że można zrobić
opisówkę jak działa cache, albo uwierzytelnianie, to ja wiem; ale raczej
nie na tym powinna magisterka polegać).
Z tego co widze 90% albo więcej magisterek to właśnie opisówki,
podsumowania kilku opracowań. Ja kończyłem Uniwersytet Łódzki i tam
właśnie takie tematy są :
-Tworzenie stron internetowych z wykorzystaniem języka PL/SQL.
-Język znakowania dokumentacji technicznej DocBook jako przykład
modelowania dokumentów XML przy pomocy DTD.
-Wybrane aspekty tworzenia aplikacji XML przy pomocy Visual Basic w
oparciu o serwer baz danych MS SQL Server.
-PL/SQL - Proceduralny składnik programowania systemów bazodanowych Oracle.
-Zaawansowane możliwości wykorzystania Visual Basica w aplikacjach
bazodanowych programu Microsoft Access.
-Metodologia fazy projektowania bazy danych w cyklu życia bazy danych
dla systemów relacyjnych.
A nie wydaje mi sie zeby to było najgorsza szkoła w polsce. Liczy sie
równiez poziom pracy. Mozna wziąć naukowy temat i byle jak go napisac.
Co do zagadnien ktore wnoszą mozna przeanalizowac jak działa jaki cache
i jaki jest lepszy. Autoryzacje tez mozna zrobic na kilka sposobów
np.cooki i inny
Blokowanie danych - sumy kontrolne, dodatkowe pole w tabeli itp
Prace typowo naukowe które coś wnoszą to chyba od prac doktoranckich sie
zaczynają
Krzysiek
| Żeby Twoj aplikacja było konkurencyjna dla Accessa, to musiałbyś chyba
| *dużo* popracować, tak więc nie obawiaj się tego zarzutu ;))
Tego sie nie obawiam :))
| Po prostu nie wolno Ci napisać "klona" Accessa i tyle. Jeśli piszesz
| inny program (jak. np. Płatnik), to jest to jakieś szczególne
| zastosowanie bazy danych, a Access jest bardziej ogólny - służy tylko do
| obsługi bazy danych (inna sprawa to to, że za jego pomocą można utworzyć
| "aplikacje").
Cytat z licencji:
"...jeśli Aplikacja nie wymaga do swojego działania, aby użytkownicy mieli
licencję na oprogramowanie Microsoft Access, Licencjobiorca nie może
reprodukować ani używać Kodu redystrybucyjnego do komercyjnej dystrybucji w
połączeniu z oprogramowaniem ogólnego przeznaczenia do przetwarzania
tekstów, obsługi arkuszy kalkulacyjnych lub baz danych albo pakietów
zintegrowanych, których składniki zawierają oprogramowanie do przetwarzania
tekstów, obsługi arkuszy kalkulacyjnych i baz danych przeznaczone do celów
innych niż importowanie danych z różnych formatów obsługiwanych przez
program Microsoft Access. Uwaga: Za oprogramowanie "ogólnego
przeznaczenia" nie jest uważane oprogramowanie, które oprócz składników do
przetwarzania w ograniczonym zakresie tekstu, arkuszy kalkulacyjnych i baz
danych zawiera także inne składniki, decydujące o jego podstawowej i
istotnej wartości, jak na przykład oprogramowanie finansowo-księgowe,
pozwalające na ograniczone wykorzystanie możliwości arkusza kalkulacyjnego.
"
Czyli faktycznie, definicja oprogramowania "ogólnego przeznaczenia" wyjaśnia
sprawę.
Zastanawia mnie jeszcze kawałek:
"Firma Microsoft udziela Licencjobiorcy niewyłącznego, wolnego od opłat
prawa do używania, reprodukowania i rozpowszechniania plików .DLL
umieszczonych w Produkcie ("Kod redystrybucyjny") wyłącznie w postaci kodu
wynikowego..."
Nie wiem, jak to wygląda przy tworzeniu instalki w InnoSetup. Bo skopiowanie
.dll'ek, pewnie nie wystarczy. Wiec jak to właściwie zrobić, i czy będzie to
zgodne z w/w kawałkiem licencji??
Pozdrawiam i dziękuję za cierpliwość :))
Tomek
Jak odwolac sie do DLL napisanego w Delphi z Accessa ?
[...]
Witam!
To znalazłem w pomocy do Accessa:
<Access Help
W programie Microsoft Access można użyć instrukcji Declare na poziomie
modułu w module standardowym, aby zadeklarować odwołanie do zewnętrznej
procedury w bibliotece dołączanej dynamicznie (DLL). Domyślnie instrukcja
Declare jest publiczna. Umieszczając instrukcję Declare w module klasy,
należy ją poprzedzić słowem kluczowym Private.
W poniższym przykładzie najpierw deklaruje się procedurę z biblioteki DLL, a
następnie wywołuje ją z języka Visual Basic.
' In standard module.
Declare Sub MessageBeep Lib "User32" (ByVal intN As Integer)
' In class module.
Private Declare Sub MessageBeep Lib "User32" (ByVal intN As Integer)
' Once you have referenced procedure in DLL with Declare
' statement, you can call that procedure normally from code.
Sub SystemBeep(intBeeps As Integer, sngPause As Single)
Dim intI As Integer
Dim sngStart As Single
For intI = 1 To intBeeps
' Call system function.
Call MessageBeep(intBeeps)
' Get start time.
sngStart = Timer
' Pause between beeps.
Do While Timer < sngStart + sngPause
' Return control to operating system.
DoEvents
Loop
Next intI
End Sub
</Access Help
Pozdrawiam,
Marek Janaszewski
Received: from mx2.go2.pl ([193.17.41.42]:14466 "EHLO poczta.o2.pl")
by ps9.test.onet.pl with ESMTP id <S4817744AbVALNJx;
Wed, 12 Jan 2005 14:09:53 +0100
Received: from p4 (pj237.lodz.cvx.ppp.tpnet.pl [217.99.164.237])
by poczta.o2.pl (Postfix) with ESMTP id DA89760075;
Wed, 12 Jan 2005 14:09:50 +0100 (CET)
Message-ID: <416-22005131213954992@p4
To: "16" <spg@o2.pl
From: "" <spg@o2.pl
Subject: BAZA DANYCH - 600 000 FIRM - Adresy e-mail. PROMOCJA!!!
Date: Wed, 12 Jan 2005 14:09:55 +0100
MIME-Version: 1.0
Content-type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: quoted-printable
X-OnetAntySpam: NIE, to nie jest SPAM
X-OrigFrom: spg@o2.pl
X-ZA0: unknown (-1,0)
Status: O
BAZA DANYCH W PROGRAMIE MICROSOFT ACCESS - 600 000 FIRM z adresami e-mail.
Baza firm pracuje w programie Microsoft Access
- możliwość sortowania danych poprzez dowolne kryterium
- pełny eksport danych do innych programów i baz
- tworzenie własnych baz klientów
Katalog zawiera 600 000 firm i zawiera następujące informacje:
- dane adresowe (kod, nazwa firmy, adres)
- branża
- telefon, faks
- adres e-mail
- strona WWW
- nazwiska osób kontaktowych
- data rozpoczęcia działalności
- obrót
- zatrudnienie
- forma prawna, forma własności.
OFERTA SPECJALNA
Każde zamówienie złożone do dn.16-01-2005 zostanie zrealizowane
W cenie promocyjnej 350,00 zł + VAT (wliczone koszty wysyłki)
Zamówienia realizujemy w ciągu 5 dni, płatność przy odbiorze.
SPG
Brukowa 6/8
ŁÓDŹ 91-341
Zamówienia i pytania prosimy kierować:
tel. 042 640 72 88
tel kom. 0501 098 597
<mailto:bazafi@o2.pl
---
Return-Path: <accessb@o2.pl
X-Original-To: <xxx
Delivered-To: <xxx
Received: from localhost (localhost [127.0.0.1])
by panteon.mnc.pl (Postfix) with ESMTP id 5B7F733036;
Fri, 23 Sep 2005 14:29:32 +0200 (CEST)
Received: from panteon.mnc.pl ([127.0.0.1])
by localhost (panteon.mnc.pl [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id 01790-08; Fri, 23 Sep 2005 14:29:20 +0200 (CEST)
Received: from poczta.o2.pl (mx.go2.pl [193.17.41.41])
by panteon.mnc.pl (Postfix) with ESMTP id B910233030;
Fri, 23 Sep 2005 14:29:15 +0200 (CEST)
Received: from czaro-tattoo (terminal-1-251.retsat1.com.pl [195.13.38.251])
by poczta.o2.pl (Postfix) with ESMTP id 661271376B7;
Fri, 23 Sep 2005 14:29:09 +0200 (CEST)
Message-ID: <414-2200595231235462@czaro-tattoo
To: "09" <accessb@o2.pl
From: "" <accessb@o2.pl
Subject: BAZA DANYCH - 630 000 firm
Date: Fri, 23 Sep 2005 14:35:04 +0200
MIME-Version: 1.0
Content-type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: quoted-printable
BAZA DANYCH W PROGRAMIE MICROSOFT ACCESS - 630 000 FIRM z adresami
e-mail=2E=
Baza firm pracuje w programie Microsoft Access
- mo=BFliwo=B6=E6 sortowania danych poprzez dowolne kryterium
- pe=B3ny eksport danych do innych program=F3w i baz
- tworzenie w=B3asnych baz klient=F3w
Katalog zawiera 630 000 firm i zawiera nast=EApuj=B1ce informacje:
- dane adresowe (kod, nazwa firmy, adres)
- bran=BFa
- telefon, faks
- adres e-mail
- strona WWW
- nazwiska os=F3b kontaktowych
- data rozpocz=EAcia dzia=B3alno=B6ci
- obr=F3t
- zatrudnienie
- forma prawna, forma w=B3asno=B6ci=2E
OFERTA SPECJALNA
Ka=BFde zam=F3wienie z=B3o=BFone do dn=2E 28-09-2005 zostanie zrealizowane=
W cenie promocyjnej 350,00 z=B3 + VAT (wliczone koszty wysy=B3ki)
Zam=F3wienia realizujemy w ci=B1gu 5 dni, p=B3atno=B6=E6 przy odbiorze=2E
ON-LINE
Brukowa 6/8
=A3=D3D=AC 91-341
Zam=F3wienia i pytania prosimy kierowa=E6:
tel kom=2E 042 630 76 99
<mailto:accesszamow@o2=2Epl
Return-Path: <spg@o2.pl
Delivered-To: x
Received: from mx.irc.pl (mx.irc.pl [194.145.96.26])
by x (Rivendell MailServer) with ESMTP id 3551A2EF94
for <x; Tue, 28 Dec 2004 14:37:31 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
by mx.irc.pl (Postfix) with SMTP id ABEAB1442;
Tue, 28 Dec 2004 14:32:02 +0100 (CET)
Received: from poczta.o2.pl (mx2.go2.pl [193.17.41.42])
by mx.irc.pl (Postfix) with ESMTP id 1F2B910A6;
Tue, 28 Dec 2004 14:31:58 +0100 (CET)
Received: from p4 (pc53.lodz.cvx.ppp.tpnet.pl [213.76.62.53])
by poczta.o2.pl (Postfix) with ESMTP id B95A360071;
Tue, 28 Dec 2004 14:34:01 +0100 (CET)
Message-ID: <412-220041222813345650@p4
To: "12" <spg@o2.pl
From: "" <spg@o2.pl
Subject: BAZA DANYCH - 600 000 FIRM - Adresy e-mail. PROMOCJA!!!
Date: Tue, 28 Dec 2004 14:34:06 +0100
MIME-Version: 1.0
Content-type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: quoted-printable
X-Spam-Checker-Version: SpamAssassin 3.0.1 (2004-10-22) on rivendell
X-Spam-Status: No, hits=0.7 required=5.0
tests=FORGED_RCVD_HELO,NO_REAL_NAME,
PLING_PLING
X-Virus-Scanned: by ClamAV on akademickie.net
BAZA DANYCH W PROGRAMIE MICROSOFT ACCESS - 600 000 FIRM z adresami
e-mail=2E=
Baza firm pracuje w programie Microsoft Access
- mo=BFliwo=B6=E6 sortowania danych poprzez dowolne kryterium
- pe=B3ny eksport danych do innych program=F3w i baz
- tworzenie w=B3asnych baz klient=F3w
Katalog zawiera 600 000 firm i zawiera nast=EApuj=B1ce informacje:
- dane adresowe (kod, nazwa firmy, adres)
- bran=BFa
- telefon, faks
- adres e-mail
- strona WWW
- nazwiska os=F3b kontaktowych
- data rozpocz=EAcia dzia=B3alno=B6ci
- obr=F3t
- zatrudnienie
- forma prawna, forma w=B3asno=B6ci=2E
OFERTA SPECJALNA
Ka=BFde zam=F3wienie z=B3o=BFone do dn=2E31-12-2004 zostanie zrealizowane
W cenie promocyjnej 299,00 z=B3 + VAT (wliczone koszty wysy=B3ki)
Zam=F3wienia realizujemy w ci=B1gu 5 dni, p=B3atno=B6=E6 przy odbiorze=2E
SPG
Brukowa 6/8
=A3=D3D=AC 91-341
Zam=F3wienia i pytania prosimy kierowa=E6:
tel=2E 042 640 72 88
tel kom=2E 0501 098 597
<mailto:bazafirm4@o2=2Epl
No OK, ale w takim razie (o ile spam pochodzi z polskiego serwera) Interia
chyba jakoś _najpierw_ ostrzeże tego, komu grozi blokada (ISP)? Z praktyki
wiem, że takie monity są skuteczne.
Tiaaa... jasne już widzę jak Telekomuna wycina wszystkie podejrzane SDI.
Poniżej oryginał tego samego spamu z konta na o2 przekodowany dla
czytelności z QPy, aby nie było już wątpliwości.
Return-Path: <s@o2.pl
Received: from poczta.o2.pl (mx.go2.pl [193.17.41.41])
by red.alpha.net.pl (8.12.11/8.12.9) with ESMTP id
i7IDAOhx018518;
Wed, 18 Aug 2004 15:10:24 +0200 (CEST)
(envelope-from s@o2.pl)
Received: from p4 (pa181.lodz-zubardz.sdi.tpnet.pl [213.77.178.181])
by poczta.o2.pl (Postfix) with ESMTP id 393A0137938;
Wed, 18 Aug 2004 15:10:20 +0200 (CEST)
Message-ID: <4117-22004831813102549@p4
To: "03" <s@o2.pl
From: "" <s@o2.pl
Subject: BAZA DANYCH - 600 000 FIRM - Adresy e-mail
Date: Wed, 18 Aug 2004 15:10:25 +0200
MIME-Version: 1.0
Content-type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: quoted-printable
BAZA DANYCH W PROGRAMIE MICROSOFT ACCESS - 600 000 FIRM z adresami
e-mail.
Baza firm pracuje w programie Microsoft Access
- każdy rekord zawiera adres e-mail
- możliwość sortowania danych poprzez dowolne kryterium
- pełny eksport danych do innych programów i baz
- tworzenie własnych baz klientów
Katalog zawiera 600 000 firm i zawiera następujące informacje:
- dane adresowe (kod, nazwa firmy, adres)
- branża
- telefon, faks
- adres e-mail
- strona WWW
- nazwiska osób kontaktowych
- data rozpoczęcia działalności
- obrót
- zatrudnienie
- forma prawna, forma własności.
OFERTA SPECJALNA
Każde zamówienie złożone do dn.31-08-2004 zostanie zrealizowane
W cenie promocyjnej 350,00 zł + VAT (wliczone koszty wysyłki)
Zamówienia realizujemy w ciągu 5 dni, płatność przy odbiorze.
SPG
Brukowa 6/8
ŁÓDŹ 91-341
Zamówienia i pytania prosimy kierować:
tel kom. 0501 098 597
mailto:spg@poczta.fm
BAZA DANYCH W PROGRAMIE MICROSOFT ACCESS - 600 000 FIRM z adresami e-mail.
Baza firm pracuje w programie Microsoft Access
- możliwość sortowania danych poprzez dowolne kryterium
- pełny eksport danych do innych programów i baz w tym do programu Outlook
Express
- tworzenie własnych baz klientów
Katalog zawiera 600 000 tys. firm i zawiera następujące informacje:
- dane adresowe (kod, nazwa firmy, adres)
- branża
- telefon, faks
- adres e-mail
- strona WWW
- nazwiska osób kontaktowych
- data rozpoczęcia działalności
- obrót
- zatrudnienie
- forma prawna, forma własności.
OFERTA SPECJALNA
Każde zamówienie złożone do dn. 31 marca 2004 r. zostanie zrealizowane
W cenie promocyjnej 350,00 zł + VAT (wliczone koszty wysyłki)
Zamówienia realizujemy w ciągu 3 dni roboczych, płatność przy odbiorze.
SPG System Promocji Gospodarczej
Łódź 90-554
Łąkowa 29
Zamówienia i pytania prosimy kierować:
tel./fax (042) 639 55 32
tel kom. 0508 907583
mailto:s@poczta.fm
----------------------------------------------------------------------------
-
Sorki - że puściłem cały - ale temat się powtarza z bazą 600 tys. firm.
Przylazło dzisiaj w HTMLu
----------------------------------------------------------------------------
----
Received: by mail.xxxx.com.pl (mbox xxxx)
(with Cubic Circle's cucipop (v1.31 1998/05/13) Thu Aug 19 14:24:28 2004)
X-From_: s@o2.pl Thu Aug 19 14:07:20 2004
Return-Path: <s@o2.pl
Received: from poczta.o2.pl (mx.go2.pl [193.17.41.41])
by mail.xxxxx.com.pl (8.12.8/8.12.8) with ESMTP id i7JC6cPp009830;
Thu, 19 Aug 2004 14:07:04 +0200 (CEST)
(envelope-from s@o2.pl)
Received: from p4 (pa181.lodz-zubardz.sdi.tpnet.pl [213.77.178.181])
by poczta.o2.pl (Postfix) with ESMTP id 4E2741376A9;
Thu, 19 Aug 2004 14:06:17 +0200 (CEST)
Message-ID: <4118-22004841912626326@p4
To: "05" <s@o2.pl
From: "" <s@o2.pl
Subject: BAZA DANYCH - 600 000 FIRM - Adresy e-mail
Date: Thu, 19 Aug 2004 14:06:26 +0200
MIME-Version: 1.0
Content-type: text/plain; charset=iso-8859-2
X-Virus-Scanned: by amavisd-new
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by mail.cybernet.com.pl
id i7JC6cPp009830
BAZA DANYCH W PROGRAMIE MICROSOFT ACCESS - 600 000 FIRM z adresami e-mail.
Baza firm pracuje w programie Microsoft Access
- każdy rekord zawiera adres e-mail
- możliwo?ć sortowania danych poprzez dowolne kryterium
- pełny eksport danych do innych programów i baz
- tworzenie własnych baz klientów
Katalog zawiera 600 000 firm i zawiera następuj?ce informacje:
- dane adresowe (kod, nazwa firmy, adres)
- branża
- telefon, faks
- adres e-mail
- strona WWW
- nazwiska osób kontaktowych
- data rozpoczęcia działalno?ci
- obrót
- zatrudnienie
- forma prawna, forma własno?ci.
OFERTA SPECJALNA
Każde zamówienie złożone do dn.31-08-2004 zostanie zrealizowane
W cenie promocyjnej 350,00 zł + VAT (wliczone koszty wysyłki)
Zamówienia realizujemy w ci?gu 5 dni, płatno?ć przy odbiorze.
SPG
Brukowa 6/8
ŁÓD? 91-341
Zamówienia i pytania prosimy kierować:
tel kom. 0501 098 597
mailto:spg@poczta.fm
---------------------------------------------------------------------
-------- Wiadomość oryginalna --------
From: - Mon Dec 20 10:45:19 2004
X-UIDL: 00057cd300aa5eec
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Received: from mx.go2.pl ([193.17.41.41]:43693 "EHLO poczta.o2.pl") by
ps8.test.onet.pl with ESMTP id <S1351818AbULTJgU; Mon, 20 Dec 2004
10:36:20 +0100
Received: from p4 (pj59.lodz.cvx.ppp.tpnet.pl [217.99.164.59]) by
poczta.o2.pl (Postfix) with ESMTP id EA1A9137903; Mon, 20 Dec 2004
10:36:18 +0100 (CET)
Message-ID: <4119-220041212093625369@p4
To: 10 <sp@o2.pl
From: <sp@o2.pl
Subject: BAZA DANYCH - 600 000 FIRM - Adresy e-mail. PROMOCJA!!!
Date: Mon, 20 Dec 2004 10:36:25 +0100
MIME-Version: 1.0
Content-type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: quoted-printable
X-OnetAntySpam: NIE, to nie jest SPAM
X-OrigFrom: sp@o2.pl
X-ZA0: unknown (-1,0)
Status: O
BAZA DANYCH W PROGRAMIE MICROSOFT ACCESS - 600 000 FIRM z adresami e-mail.
Baza firm pracuje w programie Microsoft Access
- każdy rekord zawiera adres e-mail
- możliwość sortowania danych poprzez dowolne kryterium
- pełny eksport danych do innych programów i baz
- tworzenie własnych baz klientów
Katalog zawiera 600 000 firm i zawiera następujące informacje:
- dane adresowe (kod, nazwa firmy, adres)
- branża
- telefon, faks
- adres e-mail
- strona WWW
- nazwiska osób kontaktowych
- data rozpoczęcia działalności
- obrót
- zatrudnienie
- forma prawna, forma własności.
OFERTA SPECJALNA
Każde zamówienie złożone do dn.22-12-2004 zostanie zrealizowane
W cenie promocyjnej 299,00 zł + VAT (wliczone koszty wysyłki)
Zamówienia realizujemy w ciągu 5 dni, płatność przy odbiorze.
SPG
Brukowa 6/8
ŁÓDŹ 91-341
Zamówienia i pytania prosimy kierować:
tel. 042 640 72 88
tel kom. 0501 098 597
<mailto:bazafi@o2.pl
---------------------
zaraz pójdzie do abuse...
Stanley P napisał(a) w wiadomości:
<36E27E4A.F6D0C@pertus.com.pl...
|Faktycznie wszędzie pisze o tym, aby wywalić Admina i faktycznie
nie
|można tego zrobić.
|
|Nie wszedzie. Oryginalny podrecznik "Tworzenie aplikacji" (mam przed
|soba od Acc 2.0, od Acc'97 zostal w pracy, co chyba jest bez
znaczenia,
|ogolny model zabezpieczen nie zmienil sie), strona 360. "Domyslne
konta
|programu Microsoft Access. <...Konta te nie moga byc usuniete:
|* Administrator
|* Gosc (te konto zdaje sie juz nie wystepuje w Acc'97, ale w Acc2.0 i
|tak zawsze domyslnie nie ma zadnych uprawnien do obiektow)
|* Administratorzy
|* Uzytkownicy
|* Goscie (dla Acc'97 moja uwaga podobna ja dla konta Gosc)"
Racja! Po wnikliwszej analizie dokumentacji, helpu i innych publikacji
stwierdzam, że przeświadczenie o możliwości usunięcia konta
Administrator było błędne i stanowiło chyba wynik jakiegoś skrótu
myślowego. Rzeczywiście nie znalazłem nigdzie uwagi o usuwaniu tego
konta W OGÓLE, a jedynie o usuwaniu go z GRUPY ADMINISTRATORZY. To
oczywiście nie jest to samo.
|To jakaś niedoróbka.
|
|Nie uwazam tak
A ja jednak tak. Cóż szkodziłaby możliwość usunięcia tego konta?
Odebranie wszelkich praw Adminowi daje ten sam efekt, ale czyż nie
prościej byłoby po prostu usunąć to konto?
|Na początku nie chciało to działać, tj. pomimo wywalenia
|Administratora z grupy Administratorzy i zabraniu mu wszystkich
praw,
|nadal mógł wszystko otworzyć (to chyba dlatego, że baza była
tworzona
|z konta Administratora i jako właściciel i tak miał prawa do
|wszystkiego.
|
|Jesli byl wlascicielem obiektow (a zwlaszcza obiektu 'Baza danych',
to
|oczywiste ze mogl. Jedna z "regul" zabezpieczen (wspomniany
podrecznik,
|str. 352) mowi: "Konto, do ktorego nalezy obiekt, moze ZAWSZE
|(podkreslenie moje) uzyskac pelne uprawnienia dla tego obiektu".
Właśnie! Wiedziałem o tym, ale w pierwszej chwili nie pomyślałem.
|Zrobiłem w końcu tak: stworzyłem od nowa grupę roboczą, założyłem
nowe
|konto i dodałem je do grupy Administratorzy, zalogowałem się na to
|konto, wywaliłem Administratora z grupy Administratorzy i odebrałem
mu
|wszelkie prawa.
|Zalogowany na nowe konto utworzyłem jakąś bazę (właścicielem już
nie
|jest Administrator).
|To jednak nadal nic nie daje (cholera wie czemu).
|
|Nie zapominaj, ze w Accessie istnieja inne "nieusuwalne" konta, np.
|konto grupowe Uzytkownicy (Users).
[ciach]
|Dlatego jednym z etapow zabezpieczania jest zabranie uprawnien
|grupie Users.
I tu leżał pies pogrzebany. Faktycznie przeoczyłem uprawnienia grupy
Użytkownicy.
Dzięki za wskazówkę. Po odebraniu praw tej grupie wszystko działa bez
używania kreatora.
|Trzeba skorzystać z
|kreatora "Kreator zabezpieczeń na poziomie użytkownika".
|
|Niekoniecznie.
Teraz to już jasne.
|ani szyfrowanie bazy.
|
|Szyfrowanie ma calkiem co innego na celu, aczkolwiek - jak
stwierdzilem
|doswiadczalnie, a nie znalazlem w podrecznikach - odszyfrowac baze
moze
|tylko wlasciciel bazy (i bardzo dobrze ;-). Przy okazji szyfrowanie
|calkowicie uodparnia zabezpieczone bazy na GetAccessa.
Dobrze wiedzieć.
No i wszystko jasne! Dzięki Stanley!
Dokumentację trzeba rzeczywiście czytać uważnie i pamiętać o każdym
szczególe.
Ja, jak pisałem, bawiłem się w zabezpieczanie po raz pierwszy i stąd
niepowodzenia.
I tak nieźle mi poszło, bo zapomniałem tylko o jednym punkcie
"programu", czyli o
uprawnieniach grupy Użytkownicy. Ostatecznie kreator nie jest
potrzebny, choć początkującym na pewno się przyda, bo pamięta o
wszystkim.
Dziekuję za wyczerpujące wyjaśnienia i pozdrawiam
+- Krzysztof Czurylo -+
+- Technical University of Gdansk & Medical University of Gdansk -+
+- krzy@SPAM.polbox.KILLER.com -+
+- remove 'SPAM.' and 'KILLER.' before reply !!! -+
No wlasnie. Moja bazka jest przeznaczona dla jednego tylko Usera. I tak:
Option Explicit
dim dbs as DataBase
dim rstZD as Recordset
Form_Load()
Set Dbs = CurrentDb
Set rstZD = Dbs.OpenRecordset("ZbieraczDanych")
End Sub
I tak sobie te zmienne sa otwarte (czy jak to sie tam mowi/nazywa je)
przez
caly czas dzialania programu.
Raczej przez cały czas jak długo otwarty jest formularz !
Chyba, że zmienne są w module standardowym.
1) "niezamykanie" takich zmiennych po zakonczeniu z ich udzialem
"operacji"
ma wplyw na szybkosc dzialania programu podczas wykonywania innego kodu?
Currentdb raczej nie - ale rstZD to już zależy ile ma rekordów.
Bo mniej więcej tyle, ile ich jest, tyle musi być zajętej pamięci.
A jesli nie, to czy pozostawiajac je otwarte nieprzyspieszam przypadkiem
dzialnia programu (ktory nie musi znow ich otwierac)?
Różnie to bywa i zależy od kontekstu.
Zwłaszcza jeśli funkcje pobierające rartości z rekordseta wykorzystujesz
później w dużych kwerendach. Czasami raz otwarty rekordset daje lepsze
wyniki czasami odwrotnie.
Przy czym mówimy niejednokrotnie o znacznych różnicach !)
Zalecam każdorazowe testy !
2) moze zajmuje to duuuzo pamieci (pewnie zalezy od wielkosci otwratego
polaczenia). A jesli tak, to czy mozna jakos tak "mniej wiecje na oko w
przyblizeniu" policzyc?
Nie wiem - ja myślę, że zależy to od typu rekordsetu i ilości ściąganych
danych.
I drugi przyklad:
Option Explicit
dim dbs as DataBase
Form_Load()
Set Dbs = CurrentDb
End Sub
Private ZapiszDane (...)
dim rstZD as Recordset
Set rstZD = Dbs.OpenRecordset("ZbieraczDanych")
...
End Sub
Cos mi sie wydaje, ze nie musze tutaj robic rstZD=nothing, bo konaczac ta
procedure, Acces "traci" ta zmienna, bo jest zadeklarowana w module. Czy
mam
racje?
Teoretycznie masz rację. W praktyce zdarzało się, że obiekty - zwłaszcza te
otwierane z poziomu innych baz czy aplikacji nie chciały schodzić ze stosu.
W takim jak powyżej przypadku autorzy "Access Developer Handbook" nie widzą
konieczności "kasowania" poprzez .Close i set = Nothing
Ale kto na zimne dmucha ...
Jeszcze odnośnie
Dim db As Database
(..)
Set db = Currentdb
Każde wywołanie Currentdb tworzy nową instancję bazy,
czym różni się to od DBEngine(0)(0), które zawsze wskazuje na ten sam
obiekt.
cytat z help'a:
Uwaga W poprzednich wersjach programu Microsoft Access możliwe było użycie
składni DBEngine.Workspaces(0).Databases(0) lub DBEngine(0)(0) do zwracania
wskaźnika bieżącej bazy danych. W programie Microsoft Access 97 należy
zamiast niej używać funkcji CurrentDb. Funkcja CurrentDb tworzy następną
instancję bieżącej bazy danych, natomiast składnia DBEngine(0)(0) odwołuje
się do otwartej kopii bieżącej bazy danych. Funkcja CurrentDb pozwala
utworzyć kilka zmiennych typu Database odwołujących się do bieżącej bazy
danych. Program Microsoft Access nadal obsługuje składnię DBEngine(0)(0),
lecz należy rozważyć wprowadzenie tej modyfikacji do kodu w celu uniknięcia
możliwych konfliktów w udostępnianej bazie danych.
/koniec
Jak Ci pewnie wiadomo, to że będzie to wersja jednostanowiskowa nie znaczy,
że w danym momencie tylko jeden użytkownik pracuje na bazie. Jest ich
znacznie więcej:
- Ty jako klepacz na formularzu, ty jako coś dzióbiący poprzez rekordset w
kodzie, w końcu użytkownik Engine ...
Zaś tworząc uniwersalną zmienną globalną, jak powyżej, praktycznie
korzystasz wszędzie z tej samej instancji. Czy spowoduje to konflikty ? Nie
potrafię powiedzieć, ale jeśli ostrzegają to po co eksperymentować ... Dla
oszczędzenia na tych dwóch dodatkowych linijkach w każdej procedurze ? Dla
mnie to nie jest argument !
Wykorzystanie przeze mnie zdarzenia Retreat przeciwdziała ponownemu
przeliczaniu pól podsumowujacych ostatniej strony jeśli Access generuje
zdarzenie Retreat. Ot wszystko.
Sekwencyjne przegladanie stron na podgladzie daje zawsze prawidłowe wyniki,
nawet bez wykorzystania zdarzenia Retreat. Tak samo skok do okreslonej
strony (nawet ostatniej) poprzez podanie numeru strony dawał prawidłowe
wyniki. Pozostały więc do obsłużenia przypadki ponownego formatowania stron,
co jak wiesz załatwia moja kombinacja z flagą mCancel ustawiana w Retreat.
Odnośnie testowania to nie wiem. Przyznaję że nie miałem czasu tym
dogłębniej się zająć. Mam obawy że zastosowanie pól i sekcji z atrybutami
CanGrow i/lub CanShrink oraz sekcji typu KeepTogether moze moje rozwiązanie
"połozyć".
Oto cytat z helpa MS Access 2002:
..... "W pewnych sytuacjach program Microsoft Access musi powrócić do
wcześniejszej sekcji raportu, aby stwierdzić, gdzie w raporcie znajdują się
określone formanty i sekcje oraz czy zmieszczą się one w danym obszarze.
Wśród przykładów wymienić można:
a.. grupy (z wyjątkiem nagłówków i stopek stron), których właściwość
KeepTogether jest ustawiona na wartość Całą grupę lub Z pierwszym
szczegółem;
b.. podraporty lub podformularze, których właściwość CanGrow i/lub
CanShrink jest ustawiona na Tak;
c.. sekcje na ostatniej stronie raportu.
W takich sytuacjach, podczas analizowania przez program Microsoft Access
rozmieszczenia sekcji na drukowanej stronie, zachodzi zdarzenie Format (nie
zachodzi jednak zdarzenie Print, ponieważ sekcje nie są jeszcze drukowane).
Jeśli wydrukowanie sekcji nie jest możliwe, następuje powrót do
odpowiedniego miejsca, tak aby sekcje można było wydrukować na następnej
stronie. Zdarzenie Retreat zachodzi dla każdej sekcji, do której program
Microsoft Access powraca. Następnie dla każdej z sekcji ponownie zachodzi
zdarzenie Format, w czasie gdy przygotowywane są do ich faktycznego
wydrukowania. ....... "
Moje rozwiazanie jest jak widzisz implementacją mysli w tym helpie zawartej.
Testowanie pozostawiam Tobie.
Pozdrawiam, Wojtek
© 2009 Najlepszy miesiąc kawalerski w Polsce !!! - Ceske - Sjezdovky .cz. Design downloaded from free website templates