Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

promenljiva kroz ceo program?

[es] :: Access :: promenljiva kroz ceo program?

[ Pregleda: 5085 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MarkoA
Beograd

Član broj: 24600
Poruke: 80
*.sezampro.yu.



Profil

icon promenljiva kroz ceo program?31.03.2005. u 08:11 - pre 231 meseci
Pozdrav. Imam sledeci problem. U Access aplikaciji mi je prva strana login forma, pri čemu se zaposleni loguju svojim brojevima (integerima), ne pitajte zasto, i šifrom. To je u redu, ako im je šifra okej, idu dalje na glavni meni, odnosno ekran. E sad, ja bih hteo da vučem kroz program tu promenljivu (ja sam je nazvao LOGOVAN as Integer) tako da se ona pojavljuje u querijima tako da oni vide samo svoje unose u formama i reportovima. Kako da učinim da se ova promeljiva vidi u celom programu? I da li ja mogu da dodeljujem vrednost globalnoj konstanti?
Hvala na pomoći,
MarkoA
 
Odgovor na temu

JogyII

Član broj: 29257
Poruke: 623
*.imtel.co.yu.



Profil

icon Re: promenljiva kroz ceo program?31.03.2005. u 10:47 - pre 231 meseci
napravi u nekom modulu globalnu public promenljivu i njoj dodeli vrednosti koje hoces da uvek budu dostupne, samo jedna napomena, ovaj metod nije pouzdan posto access ume da "zaboravi" vrednosti ovih globalnih promenljivih ponekad

konstanti nemozes da podeljujes i menjas vrednost, ali zato mozes promenljivoj



So Long, and Thanks for All the Fish


 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: promenljiva kroz ceo program?31.03.2005. u 14:32 - pre 231 meseci
YogiII je u pravu - izbegavaj globalne promenljive. Zasto ne probes ovo:

1) napravis u aplikacionom fajlu lokalnu tabelu tblCurrentUser, sa poljima (RecordID integer, UserID integer)
2) Stavis da je RecordID PK za tabelu
3) stavis da je dozvoljena vrednost za RecordID=1
4) Uneses jedan rekord u tabelu i upises RecordID=1, ostavo UserID prazno

Na ovaj nacin tvoja tabela ne moze da ima vise od jednog rekorda. Onda radis ovo pri logovanju - kad se covek loguje, ti uradis Update u tabeli tblCurrentUser. Na taj nacin cuvas u tabeli trenutnog korisnika. Naravno uradis sve provere pri logovanju itd. kada ti zatreba da vidis ko je trenutno ulogovan, procitaj iz tabele. Mozes da koristis Dlookup funkciju ili da napises svoju funkciju, nesto ovako (kucam direktno u poruku, nemoj cut/paste)
Code:

Function GetCurrentUser() as integer
GetCurrentUser=Dlookup("UserID","tblCurrentUser")
End  Function

Sacuvaj funkciju u nekom modulu, tako da je vidljiva iz cele aplikacuije.

U sve kverije koji treba da filtriraju zapise po korisniku mozes da JOINujes tabelu tblCurrentUser i tako resis problem.

:-)
 
Odgovor na temu

MarkoA
Beograd

Član broj: 24600
Poruke: 80
*.sezampro.yu.



Profil

icon Re: promenljiva kroz ceo program?16.04.2005. u 23:41 - pre 231 meseci
Hvala ti Zidaru, ideja je luda skroz. Imao sam mali predah od projekta, a sad cu da probam da je implementiram, pa cu ti javiti kako je proslo.

 
Odgovor na temu

izonic
ishab zonic
Tuzla

Član broj: 38128
Poruke: 591
217.71.52.*

Sajt: www.icentar.ba


+2 Profil

icon Re: promenljiva kroz ceo program?17.04.2005. u 10:11 - pre 231 meseci
Jedan komentar za global variable.
Procitao sam cesto puta u forumu da ih treba izbjegavati.
Ako one nisu pouzdane zasto se onda opste tu nalaze jer meni je svaki podatak bitan da bude tacan. Neznam zasto bi ih inda koristio.
Globalne varijable gube svoju vrijednost (Podatak) onda kada program naidje na nepredvidjenu gresku. Znaci ako mi presretneme ogresku podaci se nece izgubiti.
Ako to uporedimo sa nekim drugim programma napr. VB.
Vb ako naudje na gresku koju niste presreli obavezno pada a i ostali programi.

Evo sad konkretan primjer za gore navedenu namjeru.
Ako podatak zapisemo u bazu ili u neki fajl tada moramo kad god nam zatreba podizati tu tabelu procitati vrijednost i zapisati je u drugu tabelu i to bi bilo veoma puno posla. Primjera radi, covjek se loguje sa sifrom pod rednim brojem 3, sada kad hocemo da vrsimo upis sa forme mi hocemo da znamo podatak ko je logovan da bi ga upisali u ta rs. jer predpostavljam da u svakoj tabeli ima i polje korisnik u koje se upisuje ta vrijednost.
Ja licno sam to radio ovako i nisam do sada imao problema sa gubljenjem podataka:
1. Napravim jednu funkciju koja se odradjuje pri ulazu u program
2. Napravim nekoliko globalnih variabli koje cu koristiti u cijelom programu
(global DB as database global Korisnik as integer itd.)
3. Sada kroz gore navedenu funkciju odredim vrijednosti tim variablama

E sada da bi izbjegli gubljenje podataka zbog nepredvidjene greske onda na svakoj formi na on error pozivamo ponovo uvu istu funkciju tako da se podaci obnove.

Mozda bi bilo dobro postaviti top temu pa malo vise izanalizirati ovo.
Pozdrav
zxz
 
Odgovor na temu

vbraca
Bratislav Velickovic
Administrator informacionih sistema
Kragujevac

Član broj: 4956
Poruke: 230
*.ptt.yu.

Sajt: velickovic.net


Profil

icon Re: promenljiva kroz ceo program?17.04.2005. u 10:17 - pre 231 meseci
Elem, ako sam dobro pročitao, šta u slučaju da se istovremeno uloguje više korisnika !?!

Naravno i za to ima rešenja, bar dva mi padaju na pamet jer sam ih ranije koristio. Prvo, ako koristiš Access sigurnosna podešavanja koristi Application.CurrentUser svojstvo. Drugo, ako imaš neku formu koja je stalno otvorena, recimo glavni meni ili slično, napravi na njoj skriveno polje u kome ćeš držati ime korisnika a referenca na to polje bi bila Forms!ImeOtvoreneForme!naziv_polja.Value Za drugi slučaj možeš da koristiš i neku novu formu koja bi bila nevidljiva za korisnika a sadržala bi polje sa nazivom korisnika ili već kakve druge podatke koje želiš da vučeš kroz celu aplikaciju.
Bratislav Velickovic
hhtp://blog.velickovic.net
 
Odgovor na temu

Gomatami
Goran Markovic

Član broj: 33496
Poruke: 163



+2 Profil

icon Re: promenljiva kroz ceo program?17.04.2005. u 23:15 - pre 231 meseci
Da li moze primercic, bar za jednog korisnika...?
I tako ...
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.privsav.co.yu.



+1 Profil

icon Re: promenljiva kroz ceo program?18.04.2005. u 07:47 - pre 231 meseci
Ja sam to rešio na ovaj način:

-Korisnik na glavnoj login formi ukuca user/pass kombinaciju
-kada pritisne na "login" dugme, proverava se user i pass, i ako je OK onda se zapisuje novi record u login tabelu sa datumom, vremenom i ID-om korisnika (ovo je potrebno radi informacije o loginu, koju koristim za analize)
-u GLOBALNU promenljivu se stavlja ID trenutno logovanog korisnika
-u GLOBALNI modul (modul kome mogu svi da pristupaju) stavlja se funkcija GetCurrentUserID koja glasi ovako:

Code:

Public Function GetCurrentUserID ()
     GetCurrentUserID = plngCurrentUserID
end Function


Kao što vidite, vrlo je trivijalna, samo vraća vrednost promenljive CurrentUserID, koja je public long (otuda ono "plng" ). Trik je u sledećem: kad god vam treba CurrentUserID (odnosno, ime ili neki drugi podaci o logovanom korisniku) u nekom upitu otkucate sledeće:

Code:

... WHERE UserID=GetCurrentUserID()


Ovo je po meni univerzalno rešenje, jer koliko sam shvatio Access-ov Query Designer ne može da prihvate varijable iz VBA, ali ovako radi perfektno. Ako grešim, neka me neko ispravi.

Inače, koliko sam primetio, public varijable se uredno pamte u Access-ovim projektima, osim ako nastane critical error (dakle, padne baza). Čak i ako nastane običan "Debug" error, i program se posle debug-ovanja pokrene dalje, public promenljive ostaju. Dakle, public promenljive se UREDNO pamte, makar po mom iskustvu. Sve ostalo (korišćenje hidden polja, i druge budževine) po meni nisu dobro rešenje, u programerskom smislu. E sad, to što je M$ radio Access, pa moramo da se snalazimo na razne načine, nismo mi krivi...

Pozdrav!


Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: promenljiva kroz ceo program?18.04.2005. u 20:55 - pre 231 meseci
Izonic je predlozio da ovo bude TOP tema - i evo je. Posto je Izonic tuzlak, a i ja sam na neki nacin tuzlak, a i stariji je od mene, i medju najpamentnijim na ovom forumu, zahtev mora da se postuje.

Sto se tice globalnih varijabli, ako je neko profesionalac i zna sta radi, i koristi error kod i razmislja unapred o impelmentaciji, naravno da sve moze da se odradi kako god hoce i sve ce da radi OK.. A ko uci, nije lose da cuje vise ideja, pa zavisno od situacije primeni sta mu kad odgovara.

:-)
 
Odgovor na temu

izonic
ishab zonic
Tuzla

Član broj: 38128
Poruke: 591
217.71.52.*

Sajt: www.icentar.ba


+2 Profil

icon Re: promenljiva kroz ceo program?18.04.2005. u 22:27 - pre 231 meseci
Izgleda da ce ovo biti veoma poucno jer ima dosta dobrih ideja.
Ovo sto je Mika napisao, i ja radim otprilike isto samo sto je on to bolje opisao od mene, stim sto ja jos setujem i bazu kao globalnu variablu pa da je nemoram stalno setovat, te na svakoj formi na on error pozivam odgovore iz tabele gresaka koju napravim a one koje nisam predvidio isto tako zapisujem da posle mogu vidjeti sta nisam predvidio, a to radim ovako:
Imeforme = Screen.ActiveForm
ImePolja = Screen.ActiveControl
BrGreske = Err.Number
opis = Err.Description
Tako da kad poslije radim novu verziju mogu sve predvidjeti.

Usput bi dodao ovde jos nesto u stvari kako ja radim.
U svakoj tabeli dodam po jos jedno polje koje se zove brisanje ili nesto slicno, te nedozvoljavam nista brisati iz baze nego podtke verifikovane kao obrisane prebacujem u rezervnu bazu a tu komandu nazovem Indeksiranje podataka a pri pokretanju toga vrsim prenos i kompakt baze.

Htio bih malo obrazloziti ovu drugu ideju u vezi zapisivanja u tabelu iako samtram da je losija ali nije neizvodiva i u visekorisnickom sistemu.
Dovoljno je samo napraviti jednu lokalnu tabelu i u njoj trenutnog korisnika.

Ujedno se zahvaljujem Zidaru sto je prihvatio moj predlog.
Pozdrav svima.


zxz
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.privsav.co.yu.



+1 Profil

icon Re: promenljiva kroz ceo program?19.04.2005. u 07:45 - pre 231 meseci
Naravno, Zidar. Slažemo se da treba znati i jedan i drugi i treći metod, jer da je jedan metod najbolji - drugi ne bi ni postojali, zar ne?

Samo nisam najbolje razumeo Izonic-a: šta radiš sa tim poljima koje si pribeležio? Da li odradiš jedan INSERT u tabelu pa posle datu tabelu analiziraš, ili šta?


Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

izonic
ishab zonic
Tuzla

Član broj: 38128
Poruke: 591
217.71.52.*

Sajt: www.icentar.ba


+2 Profil

icon Re: promenljiva kroz ceo program?19.04.2005. u 19:48 - pre 231 meseci
Ako mislis na polje brisanje to radim ovako.
npr. obrisani opcija 1 neobrisani opcija 0 e sada kada pravim preglede onda selektujem po uslovu 0 a kada hocu da izvrsim export u drugu bazu onda selektujem
po uslovu 1 te ih tad obrisem u osnovnoj bazi po istom uslovu a onda odradim i kompakt baze.
Ovo navodim primjer za jednu tabelu a i za ostale radim isto, jednu za drugom i to radi korisnik povremeno sa menija koji napisem kao indeksiranje baze. Naravno to zapisujem i datumski kad je uradjeno pa ako on ne odradi jednom u pjesecu onda program sam ponudi da to odradi.

zxz
 
Odgovor na temu

[es] :: Access :: promenljiva kroz ceo program?

[ Pregleda: 5085 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.