[ lon wolf @ 14.05.2019. 19:24 ] @
Imam vrlo konkretan problem, pa bih molio za istu takvu pomoc, ako je to u redu. Naime, radim na izradi jedne DB u MS Access-u, koristeci VBA, a kako su moja iskustva u VBA skromnija nego u nekom drugom programskom jeziku, neophodna mi je pomoc.
Potrebno mi je da na jednom polju na formu unesem podatak koristeci bar-kod skener (sa neke liste), da se izvrsi provera da li uneti podatak sadrzi 10 karaktera, te da li je vec unet u DB (ako jeste da se ne dozvoli ponovni unos), ako nije da se upise i da fokus dobije isto to polje za novi unos, takodje bar-kod skenerom. Prakticno, za onog ko radi taj posao, to bi znacilo samo kontinualno koriscenje bar-kod skenera.
Nadam se da sam bio prilicno jasan i da ovo nije previse. U svakom slucaju, unapred zahvalan.
[ bokinet @ 14.05.2019. 22:15 ] @
Sta je konkretno sporno i gde skripi?

Proces je jako slican kao i rucni unos preko tastature posto vecina barkod citaca se ponasa kao tastura i vrsi unos ocitane barkod vrednost gde nakon iscivatavanja obicno se salje CrLf tj. ENTER taster kao terminacija i kraj unosa.

To znaci da ako uradite resenje za rucni unos na nacin da proveravate recimo preko KeyPress event koji je taster pritisnuti u textbox kontroli mozete ovo i resiti.

U nastavku je klasican primer koda za textbox kontrlu koja se nalazi na formu gde je ime te kontrole txtVrednost.

Kada se unese sadrzaju u textbox kontrolu i korisnik nakon unosa pritisne ENTER onda se izvrsava dole navedeni kod...


Code:


Private Sub txtVrednost_KeyPress(KeyAscii As Integer)
    
    
    ' Ako je karakter ENTER tj. RETURN tj. vbCrLf onda
    If KeyAscii = vbKeyReturn Then
    
        Dim iLen As Integer
    
        ' Duzina trenutnog unetog teksta
        iLen = Len(txtVrednost.Text)
        
        ' Kada je vrednost veca od karaktera
        If iLen > 10 Then
            
            ' Prikazi poruku
            MsgBox "Uneta vrednost je veca od 10 karaktera." & vbCrLf & "Proverite unos i pokusajte ponovo."
            
            ' Postavi fokus na textbox kontrolu
            Me.txtVrednost.SetFocus

            Exit Sub

        End If
    
        ' Kada je vrednost manja od 10 karaktera
        If iLen < 10 Then
            
            ' Prikazi poruku
            MsgBox "Uneta vrednost je manja od 10 karaktera." & vbCrLf & "Proverite unos i pokusajte ponovo."
            
            ' Postavi fokus na textbox kontrolu
            Me.txtVrednost.SetFocus
            
            Exit Sub
            
        End If
        
        ' Ovde bi isao deo koda koji proverava da li uneta vrednost recimo postoji u bazi ako ista nije pronadjena dodaje... i radi sve ostalo sto treba.
        Debug.Print "Vrednost "; Me.txtVrednost.Text; " bice dodata u bazu."
        ' ...
        
        ' Nakon procesa provere sa bazom sledi resetovanje sadrzaj recimo na delu povrsine koja sluzi kao maska za unos...
        
        ' Resetuj sadrzaj textbox kontrole
        Me.txtVrednost.Text = ""
        
        ' Postavi fokus na textbox kontrolu
        Me.txtVrednost.SetFocus
        
    End If
    
End Sub




[ lon wolf @ 14.05.2019. 22:55 ] @
U prvom redu, zahvaljujem se na brzoj i adekvatnoj reakciji.
Ideja o proveri "koji taster je pritisnut" na trazenom polju je zaista odgovarajuca.
U sustini skripi u, kako rekoh, nedostatku iskustva u VBA. Nazalost nikad dosta ucenja...
Da li bi bilo previse da zatrazim i konkretan kod za proveru postojanja sloga prilikom upisa u bazu, te
i samog upisa kodno?
A u svakom slucaju, neizmerno zahvalan.
[ bokinet @ 14.05.2019. 23:17 ] @
Par dodatnih stvari u vezi cele price su:

- Ako zapis postoji u bazi sta se onda radi u procesu?

- Ako zapis nije u bazi sta se onda radi u procesu?


Pre toga isto potrebno je definisati i samu tabelu sa poljima u kojima ce biti smesteni podaci a koji se kasnije koriste prilikom pretrazivanja i provere postojanja unetog zapisa u formi.

O tome takodje nista niste naveli niti rekli.

[ lon wolf @ 15.05.2019. 21:04 ] @
Citat:
Da, u pravu ste, nisam bas bio dovoljno detaljan.
Dakle ovako, tabela postoji, već sam je i testirao sa podacima-unetim preko forma sa tastature, bez bar kod skenera, takodje i odgovarajući form za unos (za koji i tražim pomoć), a i pripadajući izvještaji.
Sto se tiče provere koju tražim, potrebno mi je da se prilikom unosa sa skenerom proveri postojanje zapisa u tabeli (provera se vrši po tom podatku):
a) ako postoji, da vrati poruku, bez akcije s fokusom na isto polje
b) ako ne postoji, upise podatak, očisti polje i omogući odmah novi unos sa istog polja, opet sa skenerom
Pored tog polja u tabelu se još unosi:
a)ID-ono je Autonumber i Primary key
b)user-promjenjiva za ovo polje se puni prilikom ulaska u aplikaciju i nalazi se u modulu
c)date- datumsko polje, vuče se tekući sistemski datum
Ove tri stvari mi nisu problem. Toliko, nadam se da nisam ništa bitno izostavio i da sam sad mnogo jasniji bio.
Još jednom se zahvaljujem sto imate sluha za moj problem i želju da pomognete.
Pozzz
Citat:
[ bokinet @ 15.05.2019. 22:35 ] @

Ako postoji tabela u izvornom obliku ili neki alternativni primer te tabele zajedno sa podacima ne bi bilo lose da se prilozi kako bi odgovori i resenja od nas sa formu bila konkretnija i jasnija tj. ciljana.
[ lon wolf @ 16.05.2019. 21:35 ] @
Ok, opet ja, da pokusam sa dodatnim informacijama. U prilogu saljem dio fajla kreiranog u Excel-u. Ova tabela u stvari predstavlja bazu, kakvu je sada treba da napravim u Access-u, sto bi znacilo da se isti posao vise ne bi radio u Excel-u, nego u Access-u.
A posao trenutno radi jedna sluzbenica, ciji je zadatak da na kraju dana preuzme radne naloge u stampanoj formi i na kojima se nalaze bar kodovi, te da u zavisnosti ko ih je uradio (neko od 20-ak tehnicara) se uloguje pod sifrom svakog tehnicara pojedinacno i skenira njegove radne naloge. Sve ovo se radi kako bi supervisor stekao uvid (u obliku odgovarajucih izvestaja) ko je, kada i koliko uradio u nekom proizvoljnom vremenskom roku. To je za sada, vremenom ce verovatno biti jos zahteva.
[ bokinet @ 17.05.2019. 00:40 ] @
U prilogu imate uprosceni primer odradjen u MS Access kako bi to moglo da se odradi.

Imajte u vidu da je ovo samo primer na osnovu onoga sto ste vi vec napisali.

Isti se moze dodatno modifikovati kako bi u potpunosti ispunio ono sto je vama potrebno.
[ sdurut @ 17.05.2019. 08:44 ] @
Još jedna sitnica koja može biti od koristi. Barkod skeneri obično imaju Utility software koji služi za podešavanje skenera. Obično imaju mogućnost da se podesi da se pre slanja bar kod broja pošalje i neka sekvenca unapred zadatih karaktera. To može biti jako od koristi jer npr podesiš da pošalje specijalni karakter Alt+B koji dovodi polje za unus u fokus. Nakon toga šalje Bar kod + Enter. Tako da kasir ako klikne bilo gde na formu pre očtiavanja koda kod će biti unet u pravo polje. E sad nisam siguran da Access to podržava ali u Visual Basicu nekada se dodavao & karakter ispred slova u imenu Button-a ili text boxa. &Ok C&ancel O i a su bili podvučeni i mogao si da ga aktiviraš dugme sa Alt+O i Alt+A.

PS:
Upravo sam proverio i u Acessu funkcioniše da se & doda ispred slova u imenu polja na formi. Tako da Alt+(Slovo) dovodi u fokus. To slovo je podvučeno u imenu forme kad je podešen normal view.

[Ovu poruku je menjao sdurut dana 17.05.2019. u 10:37 GMT+1]

[Ovu poruku je menjao sdurut dana 17.05.2019. u 10:37 GMT+1]
[ lon wolf @ 18.05.2019. 15:44 ] @
Zahvaljujem se od srca na svrsishodnoj i sveobuhvatnoj pomoci sdurut-u, a posebno bokinet-u. Bokinet, ovo u prilogu je zaista sjajna stvar i funkcionise besprekorno, jos jednom jedno veliko HVALA.
Nadam se, isto tako, da nece biti problem da vas opet kontaktiram ako nanovo "zapnem" negdje, obzirom da me vrlo verovatno ceka jos sijaset izazova na ovom koderskom putu.
Takodje bio bih neizmerno zahvalan za neku prigodnu literaturu sa naglaskom na sam proces programiranja u VBA for Access, ako je moguce na nasem jeziku.
Znam da je ima dosta, ali cesto od sume ni drvo ne vidim, a preporuka od iskusnijih zlata vredi.
Toliko, veliki pozdrav za sve clanove foruma.