|
[ kamicak @ 02.12.2008. 09:04 ] @
| Čuveni problem da imam kolunu u Tabeli Artikli gde će u svaki sledeći unos vrednost povećati za jedan počevši od 1,
naravno kod kao rešenje sam našao na forumu, međutim moj problem je malo drugačiji.
Pošto svaki Artikal pripada određenoj grupi, meni treba da u okviru grupe artikli dobiju redne brojeve,
Kategorija1
1.Artikal1
2.Artikal2
3........
Kategorija2
1.Artikal3
2.Artikal4
3.Artikal
4...........
Znači kao Izveštaj koji je grupisan po grupama i onda u okviru grupe je ubačeno =1,
samo što to meni treba kao zapis u tabeli TblArtikli, pošto fizički svaki Artikal u magacinu ima na sebi taj broj koji se ne menja i on predstavlja redni broj artikla u okviru Kategorije kojoj pripada Artikal.
TblArtikli
IDArtikla,NazivArtikla,Kategorija,RedniBroj
Hvala unapred
Pozdrav |
[ Scelle @ 02.12.2008. 10:29 ] @
Jedini nacin koji ja vidim je kod (vec vidim kako neki prevrcu ocima  ) na formi. Da se na osnovu vrijednosti nekog polja na formi (pretpostavljam da ce biti Combo Box) koje cuva vrijednost za kategoriju pronadje u tabeli najveci redni broj za tu kategoriju, poveca za 1 i upise u odgovarajuce polje u formi. To je najvise sto ti mogu reci bez konkretne baze (ili njenog dijela). Nadam se da ce pomoci. Pozdrav!
[ kamicak @ 02.12.2008. 10:49 ] @
Eh, pa znam i ja da je rešenje kod, ali ne znam da ga napišem,
a što se tiče baze, vrlo jednostavno kao što sam i napisao,
Tabela Kategorija, IDKategorija, NazivKategorija
Tabela Artikli,IDArtikli,NazivArtikla,Kategorija,RedniBroj,
relacija jedan prema više,
unose se podaci u Tbl Artikli preko Forme Kategorija koja ima Subform Artikal,
Znači u zaglavlju forme se nalazi ImeKategorije, u subformi u obliku datashita je unos artikla, gde se kuca imeArtikla i rednibroj,
e sad treba samo automatizovati kolonu RedniBroj da se sama popunjava onako kako sam objasnio.
Nema nigde ComboBox.
Pozdrav
[ Trtko @ 02.12.2008. 11:39 ] @
If IsNull(DLookup("brojac", "artikli","kategorija=" & saformekategorija)) Then
brojac = 1
Else
brojac = DMax("brojac", "artikli","kategorija=" & saformekategorija) + 1
End If
' ovo dodaš prije upisa u bazu , ili na on click na formi ..... to jest gdje ti paše
Pozdrav
[ Zidar @ 02.12.2008. 14:22 ] @
Scelle je u pravu - mora na formi. I to onako kako ti je trle rekao. Njegov kod mozes da odradis na forminom BeforeUpdate eventu, ili mozes da napises funkciju, ovako nekako (kucam iz glave pravo u poruku)
public function Brojac (saformekategorija as int) as long
If IsNull(DLookup("brojac", "artikli","kategorija=" & saformekategorija)) Then
brojac = 1
Else
brojac = DMax("brojac", "artikli","kategorija=" & saformekategorija) + 1
End If
end function
Onda na kontrolu koja ima Brojac za source, stavis Default value = Brojac (form!kategorija)
Ovim izbegavas kod u Form.Before_Update, ako zelis. Meni se ovo dopada vise od Form.Before_Update zato sto kad otvorim formu u Design modu i pogledam tu kontrolu, na property sheet odmah vidim da podaci dolaze iz neke funkcije. Ako idem sa Form.Before_Update onda moram da se setim da sam to resio u kodu i to bas na Form.Before_Update. No, to je stvar ukusa. Uradi ono sto ti je lakse i sto ces da razumes. Kasnije mozes da predjes na neke 'finije' tehnike, ima vremena za to.
[ kamicak @ 02.12.2008. 15:45 ] @
Probao sam cod od Trtka na Before_Update of glavne forme i od subforme ali stalno mi javlja grešku u prvom redu coda,
možda nisam dobro prilagodio nazive polja?
Evo baze, pa ako hoće neko da pomogne,
hvala unapred
pozdrav
[ Trtko @ 02.12.2008. 18:07 ] @
Javlja ti gresku jer si pomijesao kruske i jabuke
If IsNull(DLookup("brojac", "artikli", "kategorija='" & Forms!Kategorija!Kategorija & "'")) Then
Brojac = 1
Else
Brojac = DMax("brojac", "artikli", "kategorija='" & Forms!Kategorija!Kategorija & "'") + 1
End If
Obrati paznju na "kategorija='" vidis da je unutra stavljen apostrof. u bazi ti je kategorija definirana kao string
pa takav tip uvijeta moraš i poslat u Dlookup i Dmax. da ti je numerik u bazi onda bi bio bez apostrofa
[ kamicak @ 02.12.2008. 18:46 ] @
Radi,
Hvala Trtko
Pozdrav
[ domaci_a_nas @ 18.12.2008. 09:53 ] @
Evo opet ja sa skraćivanjem koda sa samo 15 dana zakašnjenja
Code: Brojac = Nz(DMax("brojac", "artikli", "kategorija='" & Forms!Kategorija!Kategorija & "'"),0) + 1
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|