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

Problem sa aktiviranjem polja

[es] :: Access :: Problem sa aktiviranjem polja

[ Pregleda: 1867 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

hristinadj

Član broj: 168237
Poruke: 8
*.dynamic.isp.telekom.rs.



Profil

icon Problem sa aktiviranjem polja16.03.2013. u 12:39 - pre 135 meseci
Moram reci odmah na pocetku da sam pocetnik sto se tice Accessa. Ali, uz pomoc svih ovih tema, datih predloga i resenja - covek za vrlo kratko vreme moze njime ovladati. Vise puta sam citalo o datim predlozima kako zastiti neki program, ali mi se najvise svidela ideja zastite preko serijskog broja HDD-a. Ja sam hteo ovo resenje da malo nadopunim, pa sam u ovu zastitu ukljucio i limitiranje vaznosti programa do odredjenog datuma. U tu svrhu sam napravio jedan mali programcic koji bi sluzio kao neka vrsta generatora, tj. za dobijanje aktivacionog broja koristim serijski broj HDD-a koji se sabira sa datumom (prethodno pretvoren u broj) i zatim se tu radi jos neka aritmeticka operacija (nebitno).
Problem je sledeci: sa duplim klikom na polje Datum, pojavljuje se kalendar u kojem biram odredjeni datum. Kada kliknem na dugme "Odredi aktivacioni broj" nista se ne desava. Ali, kada kliknem misem u polje "Aktivacioni broj" pa idem ponovo na dugme "Odredi aktivacioni broj" - broj se normalno generise.
Moze li mi neko reci gde gresim, ubih se trazeci problem, ali za jednog pocetnika kao sto sam ja izgleda da je mnogo korisniji savet iskusnih programera.

U prilogu postavljam i fajl.

Hvala unapred!

Prikačeni fajlovi
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 13:32 - pre 135 meseci
Na kraju procedure za dugme dodaj: Me.Text16.SetFocus
I poređaj kontrole u Tab Order.
Prikačeni fajlovi
 
Odgovor na temu

hristinadj

Član broj: 168237
Poruke: 8
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 14:33 - pre 135 meseci
Veliko hvala. U kodu sam greskom umesto naziva text boxa iz forme, napisao ime polja iz tabele.
Sada radi!
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 14:53 - pre 135 meseci
Nisam na to obratio pažnju, samo sam lakonski osvežio focus na polje.
Uzgred u svaki VBA modul ispod Option Compare Database dodaj i Option Explicit.
Uradi Save i Debag Compile. Dobićeš grešku u vezi argumenta drvpath.
 
Odgovor na temu

hristinadj

Član broj: 168237
Poruke: 8
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 15:10 - pre 135 meseci
Da, prijavljuje gresku.
Kako mogu taj problem resiti?
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 16:01 - pre 135 meseci
Izgleda kao da fali deo.
Pretposatvaljam da si to preuzeo iz nekog koda. Nađi i vidi kako je definisan taj argument.
 
Odgovor na temu

hristinadj

Član broj: 168237
Poruke: 8
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 16:56 - pre 135 meseci
Taj kod je preuzet odavde:

http://www.praktikum.rs/office/access/acc_081.asp

Nema nigde definisanja tog argumenta.
A prilikom pokretanja te funkcije prikazuje se neki negativni desetocifreni (cini mi se) broj, koji je razlicit i zavisi od racunara. Cinjenica je da to nije pravi serijski broj HDD.
Puno sam trazio (kako ovde, tako i na drugim sajtovima) ali nisam mogao naci PRAVI kod koji ce mi izbaciti serijski broj HDD.
Ako neko poseduje taj kod, bilo bi lepo postaviti ga ovde.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 17:48 - pre 135 meseci
U onom tvom kodu argument treba ti da zadaš. Mislio sam da si poslao samo deo tvog programa. Međutim funkcija koju si skinuo sa tog linka traži da ga zadaš. Satviš u globalni modul:

Global drvpath As String
drvpath = "C:"

No sve jedno. Daću ti funkciju koja stvarno vraća serijski broj diska ali opet moraš negde da zadaš argumente. Recimo ovako: Na događaj On Click nekog dugmeta napišeš

Dim disk As String
disk = Fsi_Uzmi_SnDisk("C:", "HEX")

Funkciju stavi u VBA modul i ona izgleda ovako:
Code:

Public Function Fsi_Uzmi_SnDisk(Drajv, TipOdg As String) As String
    'Funkcija za uzimanje broja diska.
    'Drajv = Putanja diska za disk ciji broj nam treba. npr.: "C:\Windows" ili samo "C:\"
    'TipOdg = Tip odgovora "DEC" za decimalni ili "HEX" za Heksadecimalni
    
    Dim FS, d
    Set FS = CreateObject("Scripting.FileSystemObject")
    Set d = FS.GetDrive(FS.GetDriveName(FS.GetAbsolutePathName(Drajv)))
    
    Select Case TipOdg
        Case "Dec": Fsi_Uzmi_SnDisk = CStr(Abs(d.SerialNumber))
        Case "Hex": Fsi_Uzmi_SnDisk = CStr(Hex(Abs(d.SerialNumber)))
        Case Else:  Err.Raise 65535, "Fsi_Uzmi_SnDisk", "Nepoznat ulazni parametar TipOdg=[" & TipOdg & "]"
    End Select
    
End Function


Kad pogledaš promenljivu disk ona bi trebalo da ima vrednost. To uradiš koristeći MsgBox.
Sad bi trebalo da ti je jasnije, pa ćeš odlučiti koju ćeš funkciju da koristiš. U svakom slučaju ništa bez argumenta.
 
Odgovor na temu

hristinadj

Član broj: 168237
Poruke: 8
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 19:06 - pre 135 meseci
Ovo mi nije jasno:
"Kad pogledaš promenljivu disk ona bi trebalo da ima vrednost. To uradiš koristeći MsgBox."

Znaci, kao modul ubacim kod koji si mi dao i to mi je jasno.
I na dogadjaj Onclik nekog dugmeta ubacim:
Dim disk As String
disk = Fsi_Uzmi_SnDisk("C:", "HEX")

Ali kako dalje?

Koliko vidim iz koda, funkcija moze vratiti broj u 2 oblika: dekadnom ili heksadecimalnom (ili mozda gresim). Kako cu ja izabrati jedan od ta 2 broja i na koji nacin ga upisati u neki textbox (predvidjen za upisivanje serijskog broja HDD-a)?

p.s. Ja sam probao da funkciju Fsi_Uzmi_SnDisk pozovem u OnLoad neke forme i da vrednost dodeli nekom textboxu i to radi (a dobijeni broj je u heksadekadnom obliku, sto mi ne odgovara, jer se taj broj kasnije upotrebljava u drugom izrazu za dobijanje aktivacionog broja)
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 19:14 - pre 135 meseci
Citat:
hristinadj:
p.s. Ja sam probao da funkciju Fsi_Uzmi_SnDisk pozovem u OnLoad neke forme i da vrednost dodeli nekom textboxu i to radi (a dobijeni broj je u heksadekadnom obliku, sto mi ne odgovara, jer se taj broj kasnije upotrebljava u drugom izrazu za dobijanje aktivacionog broja)


Onda zameni HEX sa DEC.
disk = Fsi_Uzmi_SnDisk("C:", "DEC")
 
Odgovor na temu

hristinadj

Član broj: 168237
Poruke: 8
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 19:36 - pre 135 meseci
To je - TO.
Hvala!
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 20:17 - pre 135 meseci
Zoran Eremija je skinuo negde sa neta i poslao mi jednu funkciju koja daje proizvođački broj diska.

Code:

Function ManufacturesID()
    Dim WMIService As Object, Items As Object, SubItems As Object, temp
    On Error Resume Next
    Set WMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2")
    Set Items = WMIService.ExecQuery("Select * from Win32_PhysicalMedia", , 48)
    For Each SubItems In Items
        temp = SubItems.SerialNumber
        If LenB(temp) Then Exit For
    Next
    ManufacturesID = temp
End Function


Njoj ne treba argument. Upiši je u VBA modul. iz View menija VBA prozora odaberi Immediate Window i ukucaj u donji prozor:

?ManufacturesID, pa enter. Dobićeš proizvođački broj.


U program napiši neka varijabla=ManufacturesID i onda proveri varijablu.
 
Odgovor na temu

hristinadj

Član broj: 168237
Poruke: 8
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem sa aktiviranjem polja16.03.2013. u 21:27 - pre 135 meseci
Bravo za funkciju. To je prava stvar. Proverio sam i daje pravi serijski broj hard diska.
Imam jos samo jedno pitanje...
Kako da ovaj string (tj. niz slova i brojki) pretvorim u dekadni broj ?
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa aktiviranjem polja17.03.2013. u 07:10 - pre 135 meseci
Volume Serial Number je nešto što izgleda ovako 22F7-537P
Moguće da je kod tebe dao serijski broj diska zato što je proizvođač tako hteo.
Međutim, Zoran ovom funkcijom dobija string od 40 karaktera. Ja na jednoj mašini dobijam rezultat od 9 karaktera, a na drugoj rezultat od 14 karaktera. Tako da ovo nije siguran podatak za pravljenje funkcije, jer sadrži slova poput J,Z,F,S.......

Da bi se napisala funkcija mora se znati opseg u kojem će se dobijeni rezultati kretati. Ovde to nije slučaj. Šta ako neki proizvođač uključi specijalne znake ili proširenu listu ASCII znakova.

Baš ako moraš da se štitiš na ovaj način onda napravi dve brave, jednu sa prvom, a drugu sa drugom funkcijom. Možeš i treću sa tvojom prvobitnom funkcijom. To će možda da deprimira napadača.

I još nešto, gornja funkcija je za 32-bitne mašine. Šta ćeš ako neko ima 64-bitnu.
 
Odgovor na temu

hristinadj

Član broj: 168237
Poruke: 8
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem sa aktiviranjem polja17.03.2013. u 09:21 - pre 135 meseci
Onda je najbolje da koristim prvobitnu funkciju sa pravilno definisanim argumentima. Tada se dobija broj koji je koliko vidim razlicit za svaki racunar sto je sasvim dovoljno, jer se ionako on kasnije koristi u daljim izrazima
 
Odgovor na temu

[es] :: Access :: Problem sa aktiviranjem polja

[ Pregleda: 1867 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

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