Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190
iCentar » Racunari i oprema » Programirannje i baze podataka » Access » Problem sa logiranjem
pmiroslav 11.01.2012 14:02
Predmet:Problem sa logiranjem

U aplikaciji koristim formu za logiranje na kojoj imam Kod:
PreuzmiIzvorni kôd (vbnet):
  1. Private Sub Korisnik_AfterUpdate()
  2. M_Oper.OperID = Me.Korisnik.Column(0)
  3. M_Oper.KorImeO = Me.Korisnik.Column(1)
  4. M_Oper.ImeO = Me.Korisnik.Column(2)
  5. M_Oper.PrezO = Me.Korisnik.Column(3)
  6. End Sub
U modulu imamfunkcije:
PreuzmiIzvorni kôd (vbnet):
  1. Function tkoRadiIme()
  2. tkoRadiIme = M_Oper.ImeO
  3. End Function
  4.  
  5. Function tkoRadiPrezime()
  6. tkoRadiPrezime = M_Oper.PrezO
  7. End Function

I konačno na formi
Text Box: KorisnikID
Default Value =tkoRadiIme() & " " &tkoRadiPrezime()

Problem je u tome Å¡to se često desi da se u tablicu u polje KorisnikID ne upiÅ¡e podatak, a on se koristi za potpis na računu itd.

Å to bi mogao biti uzrok toga?
Prilozi:
Image1.jpg (Velicina datoteke:71.79 KB)

zxz 11.01.2012 15:48
Predmet:Re: Problem sa logiranjem

Pretpostavljam sta se desava.
Imas formu za logovanje gdje se korisnik identifikuje i to drzis u memorijskim lokacijama:
M_Oper.OperID
M_Oper.KorImeO
M_Oper.ImeO
M_Oper.PrezO

E sad ja nevidim da imas tabelu logovanja te da zapisujes vrime logovannja no nije to uzrok praznih polja.
Prazna polja se upisuju onda kada dodje negdje do greske u kodu jer tada ove memorijske lokacije izgube vrijednosti.
M_Oper je cini mi se moji nazivi koji su smjesteni u jednan klas modul i pored toga imamklasu za linkovanje kao i proceduru za presretanje gresaka i njihpv upis ako nisu predvidjene od programera tako da se nikako nemoze desiti ovo kao kod tebe.

Sta trebas uraditi?
Mozes jednostavno napraviti provjeru kodom:
If M_operID="" Then
Ovdje kod ili da se ponovo loguje ili ako imas tabelu logovanja ta ucita sve podatke ponovo?

Function tkoRadiIme()
if format$(M_operID)="" Then
UcitajOper
endif
tkoRadiIme = M_Oper.ImeO
End Function

Function tkoRadiPrezime()
if format$(M_operID)="" Then
UcitajOper
endif
tkoRadiPrezime = M_Oper.PrezO
End Function

Function UcitajOper()
Dim Rs as recordset
Dim Db as database

Set db=Currentdb()
set Rs =db.Openrecordset("SELECT * FROM LOGOVANJE"
itd.
ako ima tabela logovanje ako ne moras ponovo pozvati formu za logovanje.

End function

pmiroslav 11.01.2012 15:54
Predmet:Re: Problem sa logiranjem

Imam tabelu za logovanje, a zove se A_Logiranje

zxz 11.01.2012 16:49
Predmet:Re: Problem sa logiranjem

Function UcitajOper()
Dim Rs as recordset
Dim Db as database

Set db=Currentdb()
set Rs =db.Openrecordset("SELECT TOP 1 *
FROM A_Logovanje
ORDER BY VrijemeLog DESC"
M_Oper.ID=Rs!KorisnikID
rs.close
set Rs=db:Openrecordset("SELECT * FROM L_Operatori WHERE OperID=" & M_OperID)
M_Oper.ImeO=Rs!Ime
M_Oper.Prezime=Rs!Prezime
M_Oper.KorIMeO=Rs!KorIme
Rs:close
set deb=Nothing
End function

pmiroslav 11.01.2012 19:36
Predmet:Re: Problem sa logiranjem

Pokušao sam primjeniti kako si mi rekao ali mi se kod unosa novog podatka zaustavi procedura i javlja grešku
Prilozi:
LogiranjePM.rar (Velicina datoteke:30.51 KB)

zxz 11.01.2012 21:13
Predmet:Re: Problem sa logiranjem

Pa ja sam ovo napamet kucao bez tvojih tabela.
Mislio sam da ces popraviti.
PreuzmiIzvorni kôd (Visual Basic):
  1. Function UcitajOper()
  2. Dim Rs As Recordset
  3. Dim Db As Database
  4.  
  5. Set Db = CurrentDb()
  6. Set Rs = Db.OpenRecordset("SELECT TOP 1 * FROM A_Logiranje ORDER BY VrijemeLog DESC")
  7. M_Oper.OperID = Rs!KorisnikID
  8. Rs.Close
  9. Set Rs = Db.OpenRecordset("SELECT * FROM tblOperatori WHERE KorisnikID=" & M_Oper.OperID)
  10. M_Oper.ImeO = Rs!FirstName
  11. M_Oper.PrezO = Rs!LastName
  12. 'M_Oper.KorImeO = Rs!KorIme ovo neznam odkle citas i dali jos sta citas.
  13. Rs: Close
  14. Set deb = Nothing
  15. End Function

pmiroslav 12.01.2012 10:04
Predmet:Re: Problem sa logiranjem

Citiraj zxz:

'M_Oper.KorImeO = Rs!KorIme ovo neznam odkle citas i dali jos sta citas.
[/code]
Ovo stvarno ne citam i ostalo je tu u brzini.
Čitam joÅ¡ prava korisnika i time pravim zabrane na otvaranje pojedinih formi.

Inače primjenio sam tvoj kod i za sada radi dobro jedino sada moram pratiti kako će se ponaÅ¡ati ubuduće.

zxz 12.01.2012 10:26
Predmet:Re: Problem sa logiranjem

Radit ce to svoj posao sigurno.
Samo moras popuniti sve variable M_Oper.
Ja nisam znao sve sta ti je sta.

zxz 20.01.2012 15:36
Predmet:Re: Problem sa logiranjem

Neznam jesil ovo gore probao ali htio sam napomenuti kako bi to sve trebalo napraviti.
Vidim da imas ovaj klas moful kao moj ili je moj.
Da napomenem da u bilo kom programskom jeziku ako programiras pa napravis gresku koju nisi presreo program pada.
Znaci rusi se.
Zato je bitno presresti sve greske?
Ja uz to imam nisz procedura jos.
Imam i tabelu gresaka kao i tabelu vrsta upozorenja.
Ima takav primjer negdje i na forumu sa obrazlozenjem.
Imam proceduru koja se zove GreskaZ sa ulaznim parametrom broja greske.

Sada kada pisem procedure onda pisem:
on eror goto greska

na dnu procedure imam
Greska:
GreskaZ(Err.number)

Znaci pozivam proceduru greskaZ kojoj prosljedjujem broj greske.
Procedura trazi gresku u tabeli pa ukoliko je ne nadje onda izbacuje err.number i err. deskription
te to zapisuje u drugu tabelu sa imenom objekta na kojem se pojavila.
Tako kada poslije dodjes i pregledas svoj app. vidjet ces sve gde se greske javile a ti ih nisi predvidio.
Naravno ovo mozes napraviti da ti salje i emailom.

Na svim formama imas dogadjaj
Private Sub Form_Error(DataErr As Integer, Response As Integer)
GreskaZ(dataerr)
Response = 0
End Sub

Znaci ovo na svakoj formi treba uraditi.
Presresti greske ako se dogode.

pmiroslav 16.01.2012 18:20
Predmet:Re: Problem sa logiranjem

Izgleda da ovdje ipak imamo problem.
Naime recimo da se ja ulogiram pod svojim imenom u 7:00 sati i ne izlazim iz aplikacije i sada se drugi korisnik ulogira sa drugog kompjutera u recimo 7:30 sati i on je sada zadnji na popisu logiranja.
Ja sa svom kompjuteru pišem neki dokument i u potpisu dobijem ime kolege koji se ulogirao nakon mene.

SELECT TOP 1 * FROM A_Logiranje ORDER BY VrijemeLog DESC