[ Gomatami @ 12.02.2005. 12:11 ] @
Evo koda koji mi 90% vrsi posao. On je na OnLostFocus-u. Problem mi pravi prilikom odustajanja operatera od unosa. Posto nije unet ID, pokusa da izvrsi Undo i tu puca. Da li postoji neko lepo resenje? Komanda Undo, mora da stoji gde jeste jer ona ponistava unos ID broja kojeg nema u sifarniku.

Code:

Private Sub ID_LostFocus()
Dim qdf As QueryDef
    Dim rs As Recordset
    
    Set qdf = CodeDb.QueryDefs("id-ime")
    With qdf
        .Parameters("upisi ID") = ID
        Set rs = .OpenRecordset(dbOpenForwardOnly, dbReadOnly)
    End With
    
    If rs.RecordCount > 0 Then
        Me.imeiprezime = rs!ime_prez
        Me.jmbgf = rs!jmbg
    Else
        Me.imeiprezime = "Ne postoji trazeni ID broj"
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
        ID.SetFocus
    End If

End Sub


Hvala unapred!
[ Gomatami @ 13.02.2005. 14:39 ] @
Ej, ljudi, pocinjem opasno da se nerviram! Toliko sam zablentavio oko ovoga da vise ne vidim nacina da resim problem. Da ponovim, problem mi je upisivanje nepostojeceg ID broja u tabelu. Taj dogadjaj hocu da izbegnem. Medjutim, kada operater nista ne unese u formu (predomisli se) i hoce da je zatvori, imam gresku:

Run - time error '2046':
The command or action 'Undo' isn't available now.

Help!
[ Zidar @ 14.02.2005. 14:31 ] @
Video sam post i namerno nisam hteo da odgovaram. Razlog - greska nije u jednoj liniji, mnogo toga je naopako postavljeno, a ako pocnem o tome ispasce da se pravim pametan umesto da pomazem.

Resenje je prekomplikovano za jednostavnu stvar. Pre nego sto posatvim pitanja, evo generalnih primedbi. Prvo, ne valja koristiti LostFocus za ovakve stvari. Mozda AfterUpdate za kontrolu ili BeforeUpdate za formu, zavisi od toga sta radis. Ali nikako LostFocus, makar izgledalo da to ponekad radi. Ovo mi veruj na rec, da ne objasnjavam na dugacko.

Drugo, parameter kveriji se ne koriste ako se programira. Svrha parameter kverija je da korisnik ne-programer moze da ima nekakvu fleksibilnost kad radi direktno sa bazom - kad sam pravi kverije. Ovo je drugi slucaj u polednjih nekoliko dana da neko ko ocigledno ume da programira bazira deo aplikacije na parameter kverijim. Dodje mi da postavim Top temu sa jednom recenicom - Programerima se zabranjuje da koriste parameter kverije. :-)

Usput, kod koji si napisao pokazuje da ti umes da pises kod, definitivno :-) Samo ne umes da procenis sta kad treba upotrebiti. Taj cemo problem sad pokusati da resimo. :-)

Sad pitanja, pa da vidimo sta se moze uraditi.

1) Sta forma radi? ili
2) Da li je u pitanju forma za unos novog rekorda ili se na osnovu unetog ID trazi i prikazuje neki postojeci rekord?

Postoje resenja za oba slucaja i ne lice jedno na drugo.

:-)

[ Gomatami @ 14.02.2005. 14:54 ] @
Nazalost, bio sam prinudjen da primenjujem "lakse" resenje, jer sam probio
prvi rok a ovo sto sada koristim je neki "extra time" i nadam se da ce sve
biti u redu.

U vezi forme:

Operater unese ID broj radnika => ukoliko ga ima u sifarniku, prikazuje na
formi ime i prezime i JMBG => sledi unos podataka o isplatama ... i tako za
sve radnike.

E sad, kada operater ukuca ID=1500 ili neki drugi ID kojeg NEMA u sifarniku
trebalo bi ukazati na to da uneseni ID ne postoji u sifraniku, a zatim
ponistiti vrednost unesenu i polje ID, da se ne bi formirao neupotrebljiv
slog u bazi.

Napisani kod ovaj posao odradjuje korektno, sve do onog momenta kada
operater zapocne unos otvaranjem forme, a zatim BEZ UPISIVANJA podataka
pokusa da zatvori formu. Tada se javlja greska koja mi pravi problem.

Mozda je zahtev previse sitnicav, ali smatram da je komforan rad operatera
osnov za pravilnu upotrebu aplikacije.
[ Gomatami @ 14.02.2005. 16:44 ] @
Problem (na misice) resen:
On Error Resume Next