E da!
Nemam puno iskustva s accessom.Sve sam pomalo iz knjige i na primjerima koje sam skinuo s net.A zadnje vrijeme najviše putem ovog foruma-koji je za mene pun pogodak jer u knjigama nemogu naći konkretna riješanja..Što da kažem u petom mjesecu nisam znao pozvat iz forme niti određeni rekord .
Fali mi terorijskog dijela to priznajem.Tako da mi je i informatička terminologija loša.
1.Radio sam program za obračun kamata.Program funkcionira.Ali sad bi ga još ja malo dotjerao.Inače program nije za komercijalu već za mene osobno(radim kako knjigovođa).
Napravio sdam formu za unos elemenata putnog naloga.I to redom:
U tabeli StranaA
Red_Broj,mjesto,Sifra_radnika,Datum_putovanja,Mjesato_putovanja,Predujam,Izvjesce , ,....
U tabeli StranaB
Sat_odlaska,Sat_dolaska,Datum_povratka,Dnevnica,Sifra_relacije,Cijena_pokm,,Ostali_troškovi .....
U bazi mi se još nalazi (dvije tabele)sifrarnik za relacije i sifrarnik za radnike(sifrarnik_radnici)
Prvi problem combobox:Napravio sam combobox "cboime" za unos šifre radnika("sifra_radnika").A pored toga commandbutton za unos ako nepostoji radnik ili ako hoću dodat novog radnika!
Recimo kad stavim broj koji se ne nalazi u tabeli(bazi)radnici javlja mi da not in list izbacuje tabelicu s tim upozorenjem.
Moja želja je bila da ako ja unesem broj recimo 99 u combobox "cboime"(krećem iz fome "putniA") i ako ga nema u kombo boxu da aplikacija ponudi informaciju da traženog broja(sifre radnika nema) i da pita «zelite li novi unos?».To sam radio s ovom procedurom not in list.
Private Sub cboime_NotInList(NewData As String, Response As Integer)
On Error Resume Next
Dim NewId As Integer, MsgTitle As String, MsgDialog As Integer
......
If NewId = IDNO Then
Response = acDataErrContinue
Else
DoCmd.OpenForm " radnici ", acNormal, , , acFormAdd, acDialog
Response = acDataErrAdded
End If
Nakon odabira YES otvara se forma radnici i dozvoljava se novi unos.
Nakon unosa i potvrde unosa(potvrdi) zovem code:
Public Function fpotvrdi()
Dim CurrentForm As Form
Set CurrentForm = Screen.ActiveForm
DoCmd.Close acForm, CurrentForm.Name, acSaveYes
[Forms]![putniA].Refresh
End Function
Kad se vrati na početnu formu PutniA-zelio bi da mi automatski upise redni broj zadnjeg unesenog(za kojeg sam tražio novi unos) i krene dalje.To jest iz tog comboxa (posto je to sifra).U unbound polje povlači ime i prezime djelatnika putem =[cboime].column(1) ->cboime ima Rowsource iz tabele Sifrarnik_radnici.
Ja sam u ovoj drugoj proceduri uvrstio Forms!putniA!cboime = Me!rb dobio sam zadnji redni broj unosa radnika ali kad kliknem na enter javlja mi opet da taj redni broj nije na listi i otvara mi listu a ja ga tada odaberem iz liste i pretisnem enter i on ga prijavi dalje normalno.
Kako da premostim to da odmah nakon unosa pritiskom na enter program krene dalje!
Nadam se da sam bio malo precizniji.
Volio bih znat i kako da prevedem ovu orginal poruku s engleskog i da se prikazuje na našem.
Ako te ne mrzi mogu ti poslat taj dio aplikacije pa da malo probaš pomoć.
Isto želim napravit i kod unosa sifre_relacije jer ni svih relacija nema u list.
Znači taj bi combobox ujedno služio i kao filter.
2.Ovo s rednim brojem mi treba iz tog razloga u tabeli radnici postoje polja ID(primary key),Red_broj,Ime,Prezime,God_rodjenja ....
Mislio sam napravit pregled (edit )tog sifrarnika,Da mogu izbacit pojedninog radnika i na njegovo mjesto upisat novog (ili iz bilo kojeg drugog razloga promijenit redni broj).
Prvo dam koristio onu opciju da sam otvorio tablicu parametri i iz nje izvlačio sljedeći redni broj i uvijek ga uvećavao za jedan(to mi je tražilo uvijek puno koda i radilo mi zapekljancije iako su me savijetovali da je taj način dobar za rad više korisnika.:
Code za brojač:
Dim db3 As DAO.Database, tb3 As DAO.Recordset, br As Integer
Set db3 = CurrentDb
Set tb3 = db3.OpenRecordset("parametri")
tb3.MoveFirst
br = tb3!rbrelacije
tb3.Edit
tb3!rbrelacije = br + 1
tb3.Update
tb3.Close
db3.Close
Nakon toga sam uzeo ovaj tvoj(Od zidara )code i puno mi je olakšao ali bih sad volio još napravit da se može editirat redni broj a da ukoliko već postoji da ga se neda zamijenit .Zanči da ako after_update nije zadovoljen da ga fokusira nazad na to polje(Red_broj).Dali je to moguće i koji je najlakši način.Dali moram s set tb=db.openrecordset(" radnici") ili ima druga caka!Ovaj način mi se čini nezgrapan.I nikad me ne fokusira nazad na to polje unosa nego prvo sljedeće.
Zašto i kako?
3. Ono s pretraživanjem list boxa i pozicioniranje na traženi tecord sam riješio i nečini mi se loše(za manju bazu).Ali se baza jako brzo povećava ,tako da je tu malo nezahvalno.A u nekim slučajevima je i sporo!
4.Ko što je zidar rekorder u davanju odgovora na ovom forumu tako sam i ja rekorder u postavljanju pitanja na ovom forumu!!!!:- )
Hvala!
Romano
romano