[ Air Live @ 22.04.2009. 16:39 ] @
Imam problem sa relacijama u tbl stavkama.Želim da svaka stavka može imati više spjanja,Tako što i svaki kupac može imati više stavki.
Gdje giješim.

Slikovito.





[ domaci_a_nas @ 22.04.2009. 18:32 ] @
Ništa ne razumem, ali pogledaj da li je postavljena default vrednost u polju koje je spoljni ključ u podtabeli.
[ Zidar @ 22.04.2009. 19:51 ] @
Imas dakle tri nivoa Kupac --- ima nekoliko --< Stavke ---- a svaka stavka ima nekoliko -- Spajanja

Proble je logicki resen, tabele su ti dobro 'spojene' koliko vidim iz dijagrama relacija. Fino. Kako sada programski resiti da za jednog 'Kupca' mozes da dodas koliko god hoces 'Stavki', i onda za svaku stavku koliko god hoces 'Spajanja'?

Parent-Child se resava parom GlavnaForma--->Subforma. Pod subformom podrazumevam bound kontrolu na glavnoj formi. Ocigledno je da ti treba GlavnaForma_Kupci i subforma_Stavke, povezane preko Kupci.ID = Stavke.ID.
1. Napravi formu GlavnaForma_Kupci koja je u Form view, a i formu subforma_Stavke koja je je u DatasheetView
Sad na GlavnaForma_Kupci dodoas formu subforma_Stavke ipovezes je (Link Master.Child field properties)
2. dalje napravi novu glavnu formu, GlavnaForma_stavke, koja ima na sebi sve sto zelis da vidis o stavki, u Form view. Pazi, ovo nije ista forma kao subforma_Stavke , treba ti kompletna nova forma.
3. Napravi formu u datasheet view subforma_Spajanja, koja ce biti u continiouus form view. Neka izgleda kao ono sto si nam dao na slici (gde su dugmad Vise/Manje).
Onda nju navuces na GlavnaForma_stavke i spojis ih preko tblStavke.RB = tblSpajanja.BrojStavke

Kako ce sad ove dve Glavne forme da rade zajedno? Za GlavnaForma_Kupci i subforma_Stavke sve je ocigledno, foma i subforma, kao Racun/Stavke racuna. Samo kucas i vozis. Stos je da za izabranu stavku otvoris u novom prozoru formu GlavnaForma_stavke. To je lako. Neka subforma_Stavke dobije kod na DoubleClick na polju Rb (to ti je PK za tblStavke, je l' tako). Dakle, na subforma_Stavke .Rb u OnDoubleClick napises jednu liniju koda ovako nekako:

Code:

sub Rb_OnDoubleClick()
'(Posto si profesionalac, ti ces naravno da dodas error handling i komentare)
Docmd.OpenForm FromName:="GlavnaForma_stavke",WhereCondition:= "Rb = " & me!Rb

end sub


Otvorice se u posebnom prozoru GlavnaForma_stavke, za bas onu stavku koja je tekuca na subforma_Stavke. GlavnaForma_stavke ima na sebi subformu, koja izgleda bas kao ono sto si dao an slici "Spajanje i dupliranje iverala". samo ti ne trebaju oni dugmiic za manje-vise. Uvek ces imati "related record u tblStavke" tako da ti se ona greska nikad nece javiti. Jedino ces verovatno izgubiti ono Resize, ali to ni ne treba u sustini. Ako ces d aradis spajanje, onda je lepo da se vidi sta ti treba. Ako neces, sva ce polja biti prazna i gotovo.

Sad polako na pocetak i citaj recenicu po recenicu jos jedamput i polako pocni da radis.



[ Air Live @ 22.04.2009. 20:15 ] @
Hvala na iscrpnom odogovoru ali ja sam vec dodao ovu komndu i sve radi ok
Code:
DoCmd.OpenForm "frmSpajanje", , , "[BRSpajanja]=" & Me.[BRSpajanja]
Ali kada zatvaram formu frmSpajanja onda dobivam gresku.ajd procitacu sta si napisao samo jos da kazem da relacija između tblstavke i tbl spajanja može biti 1:1 tako da jedna stavka vuče samo jedno spajanje.
[ Zidar @ 22.04.2009. 21:03 ] @
Pazi, ti otvaras formu frmSpajanje kao glavnu formu a ne kao subformu. Subforma je forma koja je zkacena na glavnu formu. Ti pozivas formu "frmSpajanje" sa neke forme. to ne cini "frmSpajanje" subformom.

Ti pokusavsa da ubacis rekord u tabelu tblSpajanja a da nisi zadao podatke za BrStavke. Zato dobijas gresku. Nacin koji sam ja opisao garantuje da takva greska ne moze da se desi.

Ovako kako ti radis, morao bi da posaljes BrStavke kao neki parametar formi "frmSpajanje", pa da onda ona to iskoristi kad insertuje rekord u svoju tabelu. Ima i za to resenje, ali treba previse vremena da se objasni. To je vise trik, a ono sto sam opisao jeste kako se ispravno radi. Zasto 'ispravno'? Pa zato sto se koriste standardne komande (DoCmd) i nista ,vise. Slanje parametara formi koju otvaras zahteva trikove, kojih ima nekoliko i koje moze neko drugi da ti objasni ako bas tako zelis da radis.
[ Air Live @ 23.04.2009. 11:11 ] @
Uuuuu @Zidar svaka čast ali nista te nisam baš skuzioooo.Ovo si brate malo vise zakomplikovao ili se meni čini.Hmmm
Vjeruj ja mogu postaviti tabele u mdb i okaciti ih, ali nemogu da tražim više od tebe pomoć da to uradiš u toj bazi sa nekim bezveze formama.
Zato ću postaviti pa ako je neko skužio ovo molimobih samo da da uvod u ovo sa par formi.

Ja sam na ovaj gore način već uradio 85 % programa i imam problem samo kod dodavanja prvog spajanja kakda je autonumber na formi tblstavka = 1.Tako da Ovaj sa tbl stavke neželi da proslijedi tblSpajanje index rednog broja jedan da doda kao novi record u tabelu tbl stavke.Ja bih više volio tu foru da proslijedim index tabeli tblspajanja za stavku koja je trenutna u tblStavke.I recimo još da tblStavke može za svaku kolonu imati samo jedno btlSpajanje.Možda će tako biti lakše.

Pozzz
[ Zidar @ 23.04.2009. 15:51 ] @
Evo kod mene radi

Na tvoju formu dodaj polje Redni, koje ti je veza za tabelu tblStavke. Mozes da ga ucinis i nevidljivim. Zatim tvoju formu ubaci u frmStavke_Glavna kao subformu. Povezi Ling master / child fields za subformu i gotovo.

Citat:
I recimo još da tblStavke može za svaku kolonu imati samo jedno btlSpajanje.Možda će tako biti lakše.

Sta ti ovo znaci/a svaku kolonu? Koju kolonu?
[ Air Live @ 23.04.2009. 17:13 ] @
Baš si se potrudio da mi ovo približiš kroz primer i svaka čast.Ali iam problem.

Opet ovo neradi ukoliko ispraznim program i uradim compact i krenem sa unosom open neprihvata spajanja za prvog kupca.Ja sam formu "frmStavke_Datasheet"
postavio u Continuous Forms jer mi tako treba da stoji zbog nekih gumbova koji trebaju da budu postavljeni za svaku kolonu.A formu "frmSpajanja_CONT" postavio sam u "Single Form" baš iz razloga zato što sam rekao da jedan record u tblStavka može da ima jedan record u tblSpajanje.I tako mi glase sve forme u programu koje sam vec postavio.I šta ti znači onaj filter u formi "frmStavke_Glavna" Rb=1

[ Air Live @ 23.04.2009. 17:46 ] @
Evo vidjeo sam da kada svoju formu frmStavke prebacim u oblik Datasheet onda radi ali kada je u "Continuous Forms" nema šanse.
[ Zidar @ 23.04.2009. 22:05 ] @
A sto ne zakacis bazu sa tvojm formom, pa da vidimo. Mozda je nesto nevezano za celu ovu pricu, pa se moze desiti dati proradi i na stari nacin? U svakom slucaju to tek sutra, dans je kasno.
[ Air Live @ 25.04.2009. 10:19 ] @
Evo opet belaja
Kada na glavnoj formi popunim kupce i sada pređem u formu stavke da dodajem materijal zašto redni broj kreće od NPR.8,4,itd..., a trebalo bih da autonumber kreće za tabelu stavke od jedinice.



Zar nemože svaki kupac imati vise stavki da one za svakog kupca imaju redosljed autonumbera od 1 pa nadanje.

[Ovu poruku je menjao Air Live dana 25.04.2009. u 11:45 GMT+1]
[ Zidar @ 27.04.2009. 14:07 ] @
q:
Citat:
Kada na glavnoj formi popunim kupce i sada pređem u formu stavke da dodajem materijal zašto redni broj kreće od NPR.8,4,itd..., a trebalo bih da autonumber kreće za tabelu stavke od jedinice.


Ovo se desava zato sto su postojali neki rekordi u tabeli stavke pa su obrisani. Autonumber raste uvek. Dovoljno je da samo pokusas dodavanje novog rekrda i autonumber odmah ide za jedan gore. Ako odustanes od unosa, rekord nece biti insertiovan, ali ce autonumber biti povecan. Nad autonumber poljima prakticno nemas nikakvu kontrolu. Jedino ih mozes resetovati na 0 kad uradis Compact. Ako ti smeta ponasanje autonumber, onda nemoj da koristis autonumber. Napisi tri linije koda koje ce da povecavaju redni broj onako kako ti zelis. To je bilo na forumu jedno milion puta, pa encu sad ponavljati kako se radi.

Pravilo 80:20 o razvoju aplikacija: Ako je vreme izrade projekta 100 sati, onda ce za prvih 80% projekta biti utroseno 80 sati a za preostalih 20% bice utroseno 80 sati.

[ Air Live @ 27.04.2009. 19:08 ] @
Ejjj pozdrav Zidar.Da slazem se sa tobom oko utrošenog vremena.Ali autonumber mi smeta samo iz razloga sto se preko njega otvara subforma i vidi se taj broj...Ali riješit cu ja to.
[ Zidar @ 27.04.2009. 21:23 ] @
Uh, ovo nisam video, na kraju tvog prdzadnjeg posta:
Citat:
Zar nemože svaki kupac imati vise stavki da one za svakog kupca imaju redosljed autonumbera od 1 pa nadanje.

ne moze. Autonumber je brojac na celoj tabeli. Pocinje od 1 i samo dodaje kad god pokusas da uneses novi rekord. AKo ti treba da stavke pocinju od 1 za svakog kupca, to moras da resis sam nekom funkcijom. Autonumber tu ne pomaze. Savertujem da ostavis Autonumber kako jeste, PK i ostalo, ali da ga sakrijes na subformi, da se ne vidi uopste. Sad je kasno da tu nesto menjas i ne diraj, neka ga. Dodaj jos jednu kolonu u tabeli Stavke i da to bude broj kojice pocetio od 1 za svakog kupca, i da ga onda nekom funkcijom povecavas za 1 kad uneses novu stavku. I to da se vidi.
[ Air Live @ 29.04.2009. 20:34 ] @
Hvala na odgovoru.Imam još jedno pitanje : Kako kroz cod mogu dodati sa forme spajanje na formi frmstavke novih 4 maksimalno nova recorda gdje ce mi podatke crpiti sa forme frmSpajanja.
[ Zidar @ 29.04.2009. 23:00 ] @
Citat:
Kako kroz cod mogu dodati sa forme spajanje na formi frmstavke novih 4 maksimalno nova recorda gdje ce mi podatke crpiti sa forme frmSpajanja.


Ne razumem gde treba da bude maksimalno 4 rekorda, u stavkama ili uspajanju. Ako zelis da ti Spajanje ogranicava broj stavki, onda imamo problem, ne moze child tabela da ogranicava roditelj tabelu. Tu onda nesto debelo ne valja u relacijama.

Pretpostavicu da je sve OK i pokazati jedan ancin kako se ogranicava broj rekorda u 'subformi'. Iz slike relacija koju si dao na pocetku, vidi se da je tblStavke roditelj tabela za tabelu Spajanja. Iz toga zakljucujem da zelis da ogranicis broj spajanja na 4 za svaku stavku. Princip je uglavnom isti.

1) Uvedi u tabeli Spajanja brojac, novu kolonu, BrojacSpajanja, integer, required= Yes
2) Onda stavis UNIQUE INDEX na tabeli Spajanja (RBStavke, BrojacSpajanja).
3) Onda stavis u tabeli Spajanja u design modu u Validation rule za kolonu BrojacSpajanja glasi [BrojacSpajanja] BETWEEN 1 AND 4
5) Navuci na formu subSpajanja kolonu BrojacSpajanja
6) Na fomi stavi na OnInsert kod nesto kao Me!brojacSpajanja = 1 + NZ(DMAx('BrojacSpajanja","tblSPajanja","RBStavke = " & me!RbStavke )

Vidi zakaceni primer. Neces moci da uneses u subformu spajanja vise od 4 spajanja po jednj stavki. Svrha koda je da programski dodeli brojac i da korisniku pokaze poruku a ne da spreci vise od 4 rekorda. Vise od 4 rekorda sprecavaju index i validation rule.



[ Air Live @ 30.04.2009. 08:06 ] @
Hvala @ Zidar, vidim da se trudiš da mi pomogneš oko ovoga.Ali mislim da si malo promasio ovoaj gore odgovor zato što vjerovatno ja nisam dobro obrazlozio problem.
Nije stvar u ograničavanju dodavanja,nego je fora sledeća :

Znači imam osnovnu ploču od iverala 18 mm koja je dimenzije NPR : 2100 x 600 mm eh sada na nju treba spojiti male trakice od iverala koji su inače širine 150 mm 200 mm a debljine 18 mm tj.dupliranje ploča,to je kod mene sirina trake na slici.Eh sada kada ja odem na glavnu formu i upisem na subformi "frmStavke" osnovnu dimenziju ploče na koju treba da se lijepe male trakice od iverala,onda kliknem na onaj RB koji smo naopravili i otvorim formu "frmSpajanjaStavke"(ova forma je napravljena po predlogu od tebe,gdje sam ja frmStavke dao kao osnovnu formu i frmSpajanja kao sub formu,to je bilo zbog onih ID-ova sto nije htjelo da upisuje.Što znači da mi je forma za spajanje koja je prikazana na slici subforma koja je ubacena u formu koja je napravljena od tabele tblstavke.)
Eh sada vratimo se na formu spajanja,znači ja mogu imati najviše trakica za spajanje 4 komada ali u zavisnosti kako se oni spajaju,eh sada kad ja iscrtam spajanje ploče zelim da te dimenzije od tih komadića prebacim direktno u formu frmstavke - odnosno da napunim tabelu tblStavke sa novim podatcima iz forme frmSpajanja.Fora je što npr imam dva ili više spajanja pa cod mora biti da automatski doda novi record za tabelu tblspajanja ukoliko ima više podataka za dodati.

Ali ja sam zamislio ovako možda jednostavnije sa INSERT INTO u tabelu tblstavke da postavim 4 gumba za svako spajanje i da mu dodam isti cod pa bih ja kliknuo samo na gumbove gdje se spajaju te trakice i od bih dodao record u tabelu za svaku posebno.

Pozzzz

[Ovu poruku je menjao Air Live dana 30.04.2009. u 18:44 GMT+1]

[Ovu poruku je menjao Air Live dana 30.04.2009. u 18:46 GMT+1]
[ Air Live @ 30.04.2009. 09:32 ] @
Postavio sam ovaj cod za update sa forme frmSpajanja u tabelu "tblStavke" I RADI OK Ali ima problem.
ID koji veze tbl kupac i TBLStavke moram dodati sa forme spajanja inače neće da prikaze dodati record na formi frmStavke jer neprepoznaje ID stavke.


Code:
Private Sub Update_Click()

DoCmd.RunSQL "INSERT INTO tblStavke(ID,Naziv,Duzina,Sirina,Kolicina,Duza,Kraca)" & _
"SELECT '" & Me.Redni & "','" & "Trakica" & "','" & Me.DimGore & "'," & Me.DimDesno & ",'" & _
Me.KolGoreDole & "','" & Me.KantDuza & "','" & Me.KantKraca & "'"
Me.Requery
End Sub


Moguli ovde reci da je ID tblstavke = IDtblKupci
[ Air Live @ 30.04.2009. 10:06 ] @
Sredio sam i ovaj ID ali opet nece da mi prikazuje podatke na subformi koaj stoji na glavnoj formi iako su ti podatci upisani u tabelu tblStavke.

Šta sad zeza.

Slika :

Code:
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO tblStavke(ID,Naziv,Duzina,Sirina,Kolicina,Duza,Kraca)" & _
"SELECT '" & Me.ID & "','" & "Ploča za spajanje" & "','" & Me.DimGore & "'," & Me.DimDesno & ",'" & _
Me.KolGoreDole & "','" & Me.KantDuza & "','" & Me.KantKraca & "'"
Forms!frmGlavna!frmStavke.Form.Requery
MsgBox "Uspjesno Spremnjeno", vbInformation, "Upis"
[ galac1968 @ 30.04.2009. 15:08 ] @
Proguglaj i nadji Program "Kitchendraw 5.0" imas sve to sto ti radis vec gotovo
[ domaci_a_nas @ 30.04.2009. 15:26 ] @
Ja sam čuo da video rekorderi iz UK ne rade na kontinentalnom naponu Pusti čoveka neka radi, sigurno radi za nekog čoveka koji možda ne zna engleski ili ne zna da postoji već gotov takav program. Sve što mi radimo sigurno postoji na internetu, samo kad bi ljudi uvek to jurili mi custom developeri ne bi imali šta da radimo.
[ Zidar @ 30.04.2009. 15:44 ] @
Citat:
Eh sada vratimo se na formu spajanja,znači ja mogu imati najviše trakica za spajanje 4 komada ali u zavisnosti kako se oni spajaju,eh sada kad ja iscrtam spajanje ploče zelim da te dimenzije od tih komadića prebacim direktno u formu frmstavke - odnosno da napunim tabelu tblStavke sa novim podatcima iz forme frmSpajanja.Fora je što npr imam dva ili više spajanja pa cod mora biti da automatski doda novi record za tabelu tblspajanja ukoliko ima više podataka za dodati.


Objasni ovaj deo "eh sada kad ja iscrtam spajanje ploče zelim da te dimenzije od tih komadića prebacim direktno u formu frmstavke"
Zasto bi ovo uopste radio? Sve sto je uslo u tableu SPajanja je vec povezano na neku stavku. Tako to stoji u tvojim relacijama. Imas dakle stavka 1 i na njoj nekoliko rekorda u tabeli Spajanja. Sad zelis da od toga napravis novi rekord u tabeli stavke? Zasto? Sta to ima u tabeli spajanja za stavku 1 a moralo bi da ide u tabelu stavke za snovu stavku, stavka = 2?

Imas dete-rekord koje pripada jednom roditelju. Sad hoces da stvoris jos jednog roditelja koji jos nema decu, zato sto prvi roditelj ima neku decu. To nekako ide u krug. To nema bas mnogo smisla, u bazama podataka. Ako ipak u tvom biznisu to zaista ima smisla, onda ti nisu postavljene relacije dobro.

Objasni zasto postojanje nekih spajanja za stavku 1 trazi kreiranej nove stavke i prebacivnja podataka u tu novu stavku iz spajanja koja pripadaju prethodnoj stavki.
[ galac1968 @ 30.04.2009. 15:47 ] @
OK. . Izvinjavam se na povredi casti svim custom developerima iz Velike Srbije
A U kitchendraw-u moze da vidi kako to rade profesionalci i da primeni kod sebe
[ Air Live @ 30.04.2009. 17:29 ] @
Citat:
A U kitchendraw-u moze da vidi kako to rade profesionalci i da primeni kod sebe

Mislim da nisi dobro upucen dečko,čisto da se ne uvrediš,nemaš pojma o čemu se zapravo ovde radi "kitchendraw" je rješenje za neke druge ljude koji se bave dizajnom i krojnim listama,ali ovde se radi o optimizaciji softvera za rad sa stolarima.Softver koji ujedno ima export cod za HOLZM mašinu i pritome pravi fakturu po komadu ploče i oduzima sve popuste za različite kupce za razlicitu vrstu materijala po dobavljaču, pravi radni nalog sa odbijanjem predfrezera za kantaricu ako znaš šta je to u opće.Kompleksan je ovo posao zato neka prave drugi šta žele mene to uopće neiteresuje.Ali ovako nešto upotpunosti što ja radim smatram a i gledao sam sajt da ovako nešto nepostoji 100% što ja sada radim.Hvala na savjetu ali već sam u tome 6 godina i jako dobro poznajme drvnu industriju pločastog namještaja.
[ Air Live @ 30.04.2009. 17:42 ] @
Odgovor za myster @ Zidar

Citat:
Objasni ovaj deo "eh sada kad ja iscrtam spajanje ploče zelim da te dimenzije od tih komadića prebacim direktno u formu frmstavke"
Zasto bi ovo uopste radio?


Da upravu si 100% mislio sam to čisto zbog prikaza na reportu da ide sve iz jedne tabele, a i za prikaz vizuelno na formi.Jer cu na reportu morati provjeravati za svaku stavku dali je izvršeno spajanje ploče ukoliko jest prikaži sve stavke za spajanje ukoliko nije neprikazuj a i zbog obračuna kant trake i repromaterijala jer to već proračunavam u frmStavke.

Ajd pozdrav Radim i dalje na projektu
[ galac1968 @ 30.04.2009. 18:04 ] @
Ja cisto onako da se nadjem u pomoci.Pa recimo da se ni ti nebi snasao na polju Fizike koju sam ja zavrsio a neradim to vec ugadjam kupcima kao trgovac,od fizike nema leba. Necu se vise mesati jer stvarno sada vidim da neraumem sta se tu radi. Inace onako usput,brat mi se bavi upravo izradom kuhinja,kupatilskog namestaja i svega drugog od plocastog materijala. U fazonu "od zida-do zida" pa je imao velikih problemakoje sam mu pomocu Kitchendraw-a resio. Pozdrav
[ domaci_a_nas @ 01.05.2009. 00:06 ] @
Hvala na dobroj nameri u svakom slučaju
[ Air Live @ 01.05.2009. 08:33 ] @
@galac1968 u SVAKOM SLUČAJU TEBI HVALA NA ANGAŽMANU CJENIM TO
Ukoliko ti šta zatreba za buraza javi se tu sam na PP.
[ Air Live @ 04.05.2009. 18:33 ] @
Hmmm Zidar riješio sam vo spajanje na najlakši način koji je mogao postojati.Forma frmSpajanje je postavljena kao nezavisna forma koja nema veze sa stavkama i samo kroz cod dodavao nove komade u tblstavke bez ikakvih relacija tako da mi je cod obracuna k.trake ostao iz forme frmstavke.To sam trebao već davno skontati da mi ova relacija tblSpajanja e tblStavke nije ni trebala.Malo sam komplikovao ali imak sam nesto vise spoznao o uklapanju formi na formama to što si ti uradio.Hvala u svakom slučaju na tvom angažmanu i volji za pomoć.

Ljep pozdrav