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

Kloniranje polja

[es] :: Access :: Kloniranje polja

[ Pregleda: 3893 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Daks
Tu Tamo

Član broj: 2310
Poruke: 88
*.as54.bi.bih.net.ba.



Profil

icon Kloniranje polja28.06.2004. u 23:20 - pre 213 meseci

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!
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com



+79 Profil

icon Re: Kloniranje polja29.06.2004. u 17:45 - pre 213 meseci
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.
 
Odgovor na temu

Daks
Tu Tamo

Član broj: 2310
Poruke: 88
*.as54.bi.bih.net.ba.



Profil

icon Re: Kloniranje polja30.06.2004. u 10:28 - pre 213 meseci

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
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com



+79 Profil

icon Re: Kloniranje polja30.06.2004. u 13:49 - pre 213 meseci
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.

:-)

 
Odgovor na temu

[es] :: Access :: Kloniranje polja

[ Pregleda: 3893 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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