[ necca1 @ 18.03.2017. 12:55 ] @
U okviru baze koju sam napravio, postoji forma preko koje se unose neki podaci. Medjutim, unos podataka bi trebao da bude ogranicen tako da sam postavio password koji to radi, evo kako:

Private Sub CommAddNewMarket_Click()
Dim PassWord As String
PassWord = InputBox("Enter Password")
If PassWord = "olga.popovic" Then
' Open Form
DoCmd.OpenForm "frmAddNewConnection"
DoCmd.GoToRecord , , acNewRec
Else
MsgBox ("You're not authorized to add new market")
End If

End Sub

ALI kada unosim pass on je vodljiv u InputBox-u.

Da li postoji mogucnost da se pass ispisuje u formatu ****** ili da promenim boji texta u Input Box-u u recimo belu ili da promenim boju pozadine Input Box-a u recimo crnu kako se pass ne bi video prilikom unosa.


Hvala

[ Getsbi @ 18.03.2017. 13:54 ] @
U osobinu Text boxa, Input Mask, postavi jednu masku ako je nemaš sa zvezdicama i recimo neka se zove Password. Kao što je u primeru.
[ necca1 @ 18.03.2017. 15:56 ] @
Nije mi bas najjasnije kako treba da ovo uradim zato sto kada kliknem na dugme CommAddNewMarket u jednoj formi pokrece se kod koji otvara drugu formu za unos podataka. Medjutim VB kod ce otvoriti tu drugu formu tek kada se unese ispravan pass. Znaci trebalo bi da nekako kroz kod da provucem da se pass ispisuje kao *****.
Molim za pomoc i ako treba jos neko dodatno pojasnjenje problema
[ necca1 @ 18.03.2017. 15:58 ] @
Nije u pitanju tekst box nego button
[ Getsbi @ 18.03.2017. 16:18 ] @
Lozinku unosiš u Text box, a ispravnost unesene vrednosti tog Text boxa proveravaš kroz VBA kôd na dugme ili button. Vodi računa kako ti je imenovan Text box kad mu se obraćaš kroz prokramski kôd.
[ SLOJ.1973 @ 18.03.2017. 16:21 ] @
Mislim da ste ovo trazili.Pozdrav.
[ Getsbi @ 18.03.2017. 16:34 ] @
@ Sloj.1973 Može i sa proverom Input boxa, a može i sa proverom vrednosti polja (Me.polje.Value). Problem je kad se koristi tuđi VBA kôd koji baš ne razumeš najbolje. U svakom slučaju ima oba rešenja.
[ SLOJ.1973 @ 18.03.2017. 16:41 ] @
Ok. Nisam ni otvorio tvoj primer,tako da ne znam kako je resen. Cim sam procitao za inputbox,odreagovao sam sa ovim primerom,koji je meni davno pomogao,a i access 2010 nemam instaliran na laptopu. Svejedno,mislim da smo mu resili problem.
[ necca1 @ 18.03.2017. 16:51 ] @
Mislim da cu morati da uradim malo drugaciji pristup problemu. Nisam uspeo jer bi trebalo da promenim prikaz unosa lozinke u Input Box-u sto, koliko sam procitao na vecini foruma, je nemoguce. Koliko sam vas shvatio trebalo bi da uradim novu formu sa Passwordom koja bi bila veza izmedju dve forme ( jedna na kojoj je command button i druga koja se otvara kada je pass ispravan). Ako sam shvatio dobro ne gine mi Login forma
[ SLOJ.1973 @ 18.03.2017. 17:27 ] @
Nisam siguran sta ti nije jasno.Okaci primer,pa da vidim sta zapravo zelis. I ako moze u access 2003. Jel si uopste probao sa mojim primerom.Kad kliknes na dugme otvara se input box i sta god da kucas,prikazuju se zvezdice. Ne mora na komndno dugme,moze na after update nekog polja da se prikaze input,to nije problem. Koliko sam shvatio,tebi je bio problem da kada kucas u input boxu da se prikazuju zvezdice. Moj primer to upravo i radi. Sta ti nije jasno?!
[ necca1 @ 18.03.2017. 20:10 ] @
Evo kacim primer.

Kada se otvori main menu klikni na Add new market i na ostale ipod njega pa ces videti sta mi je problem.

Hvala na pomoci
[ necca1 @ 18.03.2017. 20:14 ] @
Ne mogu trenutno da ga okacim suvise je veliki file. Pokusacu da ga umanjim
[ necca1 @ 18.03.2017. 20:22 ] @
Ustvari hajde ovako:

U formi koja se zove Add new market imam button istog imena kome je dodeljen event on click da radi:

Private Sub CommAddNewMarket_Click()
Dim PassWord As String
PassWord = InputBox("Enter Password")
If PassWord = "olga.popovic" Then
' Open Form
DoCmd.OpenForm "frmAddNewConnection"
DoCmd.GoToRecord , , acNewRec
Else
MsgBox ("You're not authorized to add new market")
End If

End Sub

I ovo isto sam uradio za jos tri button-a u istoj formi.

Ono sto si mi poslao kao primer je OK ali ono sto me buni je to gde da udenem kod koji je u tvom primeru

I gde ja gresim

Hvala
[ SLOJ.1973 @ 18.03.2017. 21:02 ] @
Imas modul InputPass kopiraj ga kod sebe i onda svuda gde ti stoji InputBox zamenis sa InputBoxDK.I to je to.
Code:
Private Sub CommAddNewMarket_Click()
Dim PassWord As String
PassWord = InputBoxDK("Enter Password")
If PassWord = "olga.popovic" Then
' Open Form
DoCmd.OpenForm "frmAddNewConnection"
DoCmd.GoToRecord , , acNewRec
Else
MsgBox ("You're not authorized to add new market")
End If

End Sub
[ necca1 @ 18.03.2017. 21:17 ] @
Hvala na odgovoru. Samo jos jedna stvar:
koristim access 2016 i kada sam uradio ovo sto si mi poslao VB mi izbacuje poruku da nesto nije u redu

Poruku sam okacio

Hvala
[ SLOJ.1973 @ 18.03.2017. 21:40 ] @
Nisam radio sa 64bitnim accessom,ali sam sada proguglao i vidim da bi trebalo umesto Private Declare Function da stoji Private Declare PtrSafe Function. Znaci u modulu InputPass svuda gde imas Private Declare Function stavi Private Declare PtrSafe Function. Probaj ,stvarno ne znam.
Evo imas ovde nesto o tome.
[ necca1 @ 18.03.2017. 21:57 ] @
Izvini sto sam te cimao ali proguglao sam i ja i pronasao kompletan sreodjen kod za 64-bit. Izmenio sam ga onako kako su i naznacili i finkocionise bez gresaka. Ali u moju bazu sam uvezao ImputPass modul i kako si mi rekao izmenio InputBox sa InputBoxDK i opet ne radi.

Hvala u svakom slucaju na trudu i izvini na cimanju
[ SLOJ.1973 @ 18.03.2017. 22:06 ] @
Ne razumem,kazes da si sredio sve i da kod radi,a opet ne radi?! Sta ne radi. Stavi brakepoint na inputboxDK pa kad se zaustavi izvrsavanje koda,kreni sa F8 pa vidi sta ne valja.
[ necca1 @ 18.03.2017. 22:10 ] @
Probao sam sa tvojim primerom da ga prilagodim za 64-bit i dodao sam Private Declare PtrSafe Function.
Sada mi prijavljuje gresku u liniji


hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)

[Ovu poruku je menjao necca1 dana 19.03.2017. u 00:12 GMT+1]
[ SLOJ.1973 @ 18.03.2017. 22:13 ] @
Koju gresku?
[ necca1 @ 18.03.2017. 22:20 ] @
AddressOf NewProc
[ necca1 @ 18.03.2017. 22:23 ] @
Mislim da sam pronasao definitivan odgovor na moje pitanje



The * mask works correctly on a machine with MSAccess 2010 32 bit. The * mask just doesn't work in the MSAccess 2010 64 bit
[ necca1 @ 18.03.2017. 23:09 ] @
Uspeo sam da resim problem.

Pronasao sam kod koji radi i na 64-bitnim verzijama

Evo koda pa ako nekome zatreba

Option Explicit
Public hHook As LongPtr
Public Declare PtrSafe Function SetCurrentDirectoryA Lib "kernel32" (ByVal lpPathName As String) As Long
Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Public Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long
Public Declare PtrSafe Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPtr
Public Declare PtrSafe Function TerminateProcess Lib "kernel32" (ByVal hProcess As LongPtr, ByVal uExitCode As Long) As Long
Private Declare PtrSafe Function CloseHandle Lib "kernel32" (ByVal hObject As LongPtr) As Long
Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
Public Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, ByVal ncode As Long, ByVal wParam As LongPtr, lParam As LongPtr) As LongPtr
Public Declare PtrSafe Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" (ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
Public Declare PtrSafe Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As LongPtr
Public Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As LongPtr) As Long
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare PtrSafe Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As LongPtr, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Public Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long

Public Const EM_SETPASSWORDCHAR = &HCC
Public Const HCBT_ACTIVATE = 5
Public Const WH_CBT = 5
Public Const HC_ACTION = 0
Here is the code...

Sub testInput64()
Dim test As String
test = InputBoxDK_64("Enter your SAP password.", "SAP Password")
End Sub

Function InputBoxDK_64(Prompt, Title) As String
Dim lngModHwnd As LongPtr, lngThreadID As Long
On Error Resume Next
lngThreadID = GetCurrentThreadId
lngModHwnd = GetModuleHandle(vbNullString)
hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc_64, lngModHwnd, lngThreadID)
InputBoxDK_64 = InputBox(Prompt, Title)
UnhookWindowsHookEx hHook
End Function

Public Function NewProc_64(ByVal lngCode As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
Dim RetVal
Dim strClassName As String, lngBuffer As Long
On Error Resume Next
If lngCode < HC_ACTION Then
NewProc_64 = CallNextHookEx(hHook, lngCode, wParam, lParam)
Exit Function
End If
strClassName = String$(256, " ")
lngBuffer = 255
If lngCode = HCBT_ACTIVATE Then
RetVal = GetClassName(wParam, strClassName, lngBuffer)
If Left$(strClassName, RetVal) = "#32770" Then
SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
End If
End If
CallNextHookEx hHook, lngCode, wParam, lParam
End Function



Ovaj kod se koristi kao modul

Hvala svima