[ Daks @ 28.06.2004. 23:20 ] @
Jedno pitanje: Potrebno mi je da pomocu neke funkcije ili neceg drugog kloniram polja u Continuous Formi. Razlog je da se olaksa unos kad se polja ponavljaju! Moze li neko pomoci. Unaprijed hvala! Pozdrav! |
[ Daks @ 28.06.2004. 23:20 ] @
[ Zidar @ 29.06.2004. 17:45 ] @
Cini mi se da ti hoces da prenosis vrednost jednog polja iz rekorda u rekord.
Ima vise nacina, a evo ga jedan, relativno jednostavan. 1) za svako polje koje zelis da prenosis iz rekorda u rekord, deklarise se varijabla na nivou forme Code: Option Compare Database Option Explicit 'varijabla strAdresa vidljiva je iz svih procedura u okviru ove forme Dim strAdresa As String 2) Dodaj sledeci kod u event procedure Form_AfterUpdate() i Form_Current() Code: Private Sub Form_AfterUpdate() 'Spakujemo poslednju unetu vrednost u form level varijablu strAdresa = Me!txtAdresa End Sub Private Sub Form_Current() If Me.NewRecord Then 'prepisemo sta smo sacuvali iz prethodnog rekorda If strAdressa <> vbNullString Then Me!txtAdresa = strAdresa End If End If Sta ce se desiti? Kad se forma otvori prvi put, polje txtAdresa je prazno. Unesemo neku vrednost i sacuvamo (Save) record. Kad predjemo na novi rekord (ali zaista novi, ne na sledeci postojeci), u polju txtAdresa bice upisana vrednost koju smo uneli u prethodni rekord. Ako nam odgovara, ostavimo to kako jeste, unesemo ostatak i sacuvmo rekord. Ponovo se vrednost iz txtAdresa upise u varijablu i prenosi na sledeci NOVI rekord. I tako dalje. sta god je upisano poslednje, prenece se u sledeci rekord. kako sve u stvari funkcionise? Varijabla strAdresa se koristi u dve razlicite procedure. Form_AfterUpdate() upise vrednost u strAdresa, a Sub Form_Current() procita tu vrednost i dodeli je text boxu txtAdresa . Kad sacuvas rekord, poslednji event koji se desi je Form_AfterUpdate. Kad predjes na novi rekord, desi se prvo CurrentRecord event za formu. Primeti kako je u Sub Form_Current() upotrebljen Me.NewRecord za utvrdjivanje da li smo na novom rekordu. Bez ovog testa bi se adresa prepisala u sledeci rekord, makar i postojeci, kad god bi neki prethodni rekord bio promenjen, sto nije dobro. Metod radi sa formama, bez obzira na izgled - Form View, Cont. Form ili Datasheet. Moguci problem je ako ima mnogo polja koja se prepisuju iz forme u formu, mora da se pise kod za svaku od njih, pa procedure postaju pretrpane i teske za odrzavanje. [ Daks @ 30.06.2004. 10:28 ] @
Zidar hvala na trudu i pomoci! Za sada ce mi to pomoci, mada mi nije bas optimalno rjesenje. Meni je potrebna funkcija koja ce prenijeti vrijednost ali samo onda kada ja to zelim. Npr. kada pritisnem neku tipku (F5). Nacicu neko rjesenje. U svakom slucaju hvala puno jer mi je za pocetak ovo bilo sasvim dovoljno. Pozdrav [ Zidar @ 30.06.2004. 13:49 ] @
Moze i to. Umesto F5, ja sam stavio dugme na formu koje treba kliknuti da bi se upisala default adresa u polje adresa. U okviru forme, imao sam ovaj kod:
Code: Function DefaultAdresa() As String 'Ova funkcija je u Form modulu Me!Adresa = "Default Adresa" End Function Private Sub cmdDefaultAddress_Click() If Me.NewRecord Then Call DefaultAdresa Else MsgBox "Daefault adresa se moze dodeliti samo novim rekordima" End If End Sub 'Moze i ovako: Private Sub cmdDefaultAddress_Click() If isnull(Me!Adresa) Then Call DefaultAdresa Else MsgBox "Default adresa se ne moze upisati preko postojece adrese!" End If End Sub Je ne koristim funkcijske tastere, pa ne znam napamet kako se tasteru F5 dodeljuje funkcija, zato koristim dugme. :-) Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|