|
[ THE_NELE @ 20.01.2007. 23:24 ] @
| Zna li ko kako mogu ovo uraditi:
Otvorim Formu1, iz nje otvaram Formu2, nakon što unesem podatke u Formu2 treba da okpiram Id (Autonumber polje) nazad u Formu1 u odrđeno polje?
Napomena: Nakon otvaranja Forme1 obje ostaju aktivne svo vrijeme!
|
[ Getsbi @ 21.01.2007. 08:53 ] @
Deklariši globalnu promenljivu recimo : Global prom As Variant. U On Enter događaj polja na formi 1 postavi
Me![polje na formi 1] = prom. U događaj AfterUpdate polja na formi 2 napiši:
prom = Me![polje na formi 2]
DoCmd.Close acForm, "Form1"
DoCmd.OpenForm "Form1"
Nije elegantno ali je efikasno.
[ Getsbi @ 21.01.2007. 08:58 ] @
Deklariši globalnu promenljivu recimo : Global prom As Variant.
1. U On Click događaj polja na formi 1 postavi
Me![polje na formi 1] = prom. i u događaj On Activate postavi
Me.Requery
2. U događaj AfterUpdate polja na formi 2 napiši:
prom = Me![polje na formi 2]
Ovo je malo bolje jer ne zatvara i otvara formu 1
[Ovu poruku je menjao Getsbi dana 21.01.2007. u 20:59 GMT+1]
[Ovu poruku je menjao Getsbi dana 21.01.2007. u 21:00 GMT+1]
[ Trtko @ 22.01.2007. 10:31 ] @
najjednostavnije ti je
da u onoj formi iz koje trebas prebaciti napises
Forms!forma1!sifra= nekaisfra
znači samo navedeš u koju formu prebacuješ i u koje polje
s time da ti ta forma mora biti aktivna
[ THE_NELE @ 22.01.2007. 13:32 ] @
E fala ljudi! Probam pa javim!
[ Fanta @ 23.01.2007. 11:39 ] @
Bog ljudi, ja imam isti problem ili malo sličan kao i NELE, ali meni nimalo nece da radi, s tim da ja osim slucaja koji je nele opisao, imam i malo drugaciji slucaj.
Moj problem je sada sto zelim kopirati podatke iz forme u formu.Problem je u tome sto nikako to ne uspijevam ma kako se trudio.
O cemu se konkretno radi!
Napravio sam tablicu tvrtke-djelatnosti, a zatim još sličnu takvu tvrtke-proizvodi. Zajednicka su im tri polja, IDtvrtka, naziv i ustroj. Glupo je da kad odaberem jednu tvrtku u formi moram to isto opet raditi, tj.traziti je u drugoj formi, jer kod prve biram biram djelatnosti, a kod druge proizvode. Uglavnom radi se o tome da birao je tvrtku u bilo kojoj tablici prevuce mi podatke u drugu.
[ Zidar @ 23.01.2007. 13:51 ] @
@ Fanta: Ocigledno je da imas tabelu Tvrtke i dve child tabele tvrtke-djelatnosti i tvrtke-proizvodi. Posto je tako, pokusaj ovo: napravi master formu za Tvrtke, sa dve subforme, tvrtke-djelatnosti i tvrtke-proizvodi. Spoji ih po kojim god hoces poljima (verovatno ono sto je PK za tvrtke, i istovremeno FK za child tabele). Kad spojis formu i subformu, onda spojna polja ne moras da unosis, Access to sam radi za tebe. Spojna polja ne moras cak ni da vidis.
Ovako bo u tom slucaju izgledao posao korisnika programa:
1. pronadji tvrtku s kojom zelis da radis (neki datasheet bi dobro dosao, jer se onda za pretrazivanje koriste Accessovi ugradjeni mehanizmi Find, SOrt, Filter, nema pisanja koda za pretrazivanje)
2. otvori master formu za tu tvrtku (tvoj kod otprilike ovako: DoCmd.OpenFrom FormName:= "frmTvrtkeMaster", WhereCondition:= "TvrtkaID = " & me!tvrtkaID)
3. unesi koliko god hoces novih rekorda u bilo koju od subformi. Unosis samo polje sa podacima, vezna polja ce Access sam prepisati.
Na ovaj nacin imas ubedljivo najmanje koda da pises i kod je daleko jednostavniji nego neki mumbo-jumbo sa rekordsetima.
[ Fanta @ 23.01.2007. 19:45 ] @
@THE_NELE, hvala, u pravu si što se tiče tabela, one su upravo u takvim odnosima, ali ustvari imaš tri glavne tabele Tvrtke, Djelatnosti i Proizvodi te među tabele između te tri tablice u kojima su međusobni odnosi više na prema više, tj.Tvrtke-Proizvodi i Tvrtke-Djelatnosti.
Moj problem u zivotu je ustvari nastao kad sam dobio zadatak da moram puniti tablicu sa odnosima više na prema više i to na principu, da korisnik npr. odabere tvrtku u formi Tvrtke-Proizvodi uz nju odmah odabere sve proizvode(odabir jer morao biti što lakši i jednostavniji) koji idu uz tu tvrtku i to potvrditi na kraju sa samo jednim klikom miša. Budući da access ima problema sa subformom kad su u pitanju odnosi više na prema više, morao sam nešto iskemijati i uz pomoć frenda napravio sam nešto sa listboxom i to za tablice tvrke-proizvodi i tvrtke- djelatnosti,sto znaci da svaka ima svoju formu. Te dvije forme se upravo razlikuju samo u svojem sadržaju u listboxu, kao što rekoh imaju tri zajednička polja: Id tvrtka,naziv i ustroj, a kad za jednu formu ispuniš proizvode, istu moraš svrstati i pod koje djelatnosti sve spada. Znam što bi neki rekli, zašto ne stavim ta dva listboxa na istu formu? Problem je u tome što samo djelatnosti ima oko 200, proizvoda preko tisuću pa ako stavim ih jednu ispod druge biće ne baš dobro za pregled, a opet ne mogu ih staviti jednu kraj druge jer neki nazivi su slični, a jako dugački.
Isto tako želio bih da kad upišem novu tvrtku, što je naravno opet posebna forma, na njoj će također biti buttoni za dvije navedene forme pa kad korisnik upiše tvrtku da može automatski da dodijeli i djelatnosti i proizvode.
Očigledno je da ću ovo morati raditi preko recordseta, kao što si i sam rekao, stoga zna li netko kako, jer se u njih baš najbolje ne razumijem ili barem ima kakav link gdje bih mogao pogledati sličan primjer?
[ Fanta @ 24.01.2007. 11:47 ] @
Našao sam kod na ovom forumu, a odnosio se je na kopiranje iz subforme u subformu.Malo sam ga prepravio, ali sada mi javlja type missmatch, ali nije mi jasno zašto, kad oba dvije forme vuku iste podatke iz istog querija koji opet vuče podatke iz iste tabele. Jedina razlika među njima je listbox, kao što rekoh jedan u prvoj formi s popisom djelatnosti, drugi u drugoj formi s popisom proizvoda.
Kod glasi ovako:
Private Sub Izbor_Click()
On Error GoTo Err_Izbor_Click
Const FORM_DESIGN = 0
Dim i As Integer
Dim rs As Recordset
Dim rs1 As Recordset
Dim Idtvrtka As Variant
Dim Oznaka As Variant
Dim Ustroj As Variant
Dim stDocName As String
Dim stLinkCriteria As String
For i = 0 To Forms.Count - 1
If Forms(i).FormName = "Tvrtke_Djelatnosti" Then
If Forms(i).CurrentView <> FORM_DESIGN Then
Set rs1 = Forms![Tvrtke_Djelatnosti].Form.RecordsetClone
Set rs = Forms![Tvrtke_proizvodi].Form.RecordsetClone
If rs.RecordCount > 0 Then 'ako je 0 nema gje skociti i treba otvoriti novi
rs.MoveLast
Else
rs.AddNew
End If
Idtvrtka = Forms![Tvrtke_Djelatnosti].Idtvrtka ' treba citati iz forme Tvrtke_Djelatnosti
Naziv = Forms![Tvrtke_Djelatnosti].Naziv
Ustroj = Forms![Tvrtke_Djelatnosti].Ustroj
Do While Not rs1.EOF
rs.AddNew
rs![Idtvrtka] = Idtvrtka
rs![Naziv] = Naziv
rs![Ustroj] = Ustroj
rs.Update
rs1.MoveNext
Loop
Exit Sub
End If
End If
Next
stDocName = "Tvrtke_Proizvodi"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Izbor_Click:
Exit Sub
Err_Izbor_Click:
MsgBox Err.Description
Resume Exit_Izbor_Click
End Sub
[ Fanta @ 25.01.2007. 19:21 ] @
Zaboravite sav ovaj kod gore, kad razmislim hrpa gluposti.
Našao sam stvar koja mi riješila problem, djelomično, jer pojavio se je opet drugi problem.
Problem sam riješio sa Docmd.OpenForm methodom,koju sam našao nakon tri dana trazenja na jednom forumu, a kod bi glasio ovako(vezan je uz primjer koji sam stavio dolje u attacment):
U prvu formu na button se stavi na događaj:
DoCmd.OpenForm "druga"(forma koja se želi otvoriti), acNormal, , , , , Me.GC_ID(što se točno traži, u mojoj formi je to id koji je autonumber)
U drugu formu na OnOpen se stavi:
Private Sub Form_Open(Cancel As Integer)
Dim ID_Arg As Long
' Ucitaj openarg u lokalnu varijablu id_arg
ID_Arg = Nz(Form_druga.OpenArgs, 0)
'Provjeri da ID_ARG nije nula. Ako nije nula potreban je Filter da bi se izabrao gc_id
If ID_Arg <> 0 Then
' U redu imamo GC_ID pa ga filtrirajmo!
Me.Filter = "GC_ID=" & ID_Arg
Me.FilterOn = True
End If
End Sub
Ono što će se dogoditi je da će on stvarno otvoriti drugu formu i upisati sve tražene podatke koji su pod tim ID-em.
Ali problem je u tome što kad se pogleda dolje na selector vidi se da ga je otvorio pod rednim brojem 1, a ne pod onim brojem kojim je zaveden u orginalnoj formi. Isto tako ako se proba kliknuti na selektore, oni su blokirani,tj. nemaju nikakav efekt na zapise u tablici,a trebalo bi se uz pomoć njih kretati dalje ako se poželi i u drugoj formi.
Sjedim ovdje već devet sati i nemam više ideja, ako neko drugi ima kakvo daljnje riješenje novonastalog problema neka se slobodno pridruzi
[ Fanta @ 30.01.2007. 14:48 ] @
Problem sam riješio preko pomoćne tabele i malo pomoć uz recordseta, tako sam dobio i jednu dodatnu funkciju osim kopiranja podataka, uvijek se otvara zadnji zapis koji sam unio u bilo kojoj formi.
Ako ikad tko bude trebao primjer neka se slobodno javi.
[ nixonst @ 21.03.2007. 07:58 ] @
Imam formu1 ime,prezime,korisnickoime(kljuc) i password.Treba da unesen novoga korisnika ali u drugoj formi2 sa istim poljima te da kao takvoga spremim u formu1. Zanima me kako da to napravim.
Hvala na svakoj pomoci.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|