[ raspudic @ 04.05.2005. 13:33 ] @
Tu imam jedan za mene nerješiv problem ali prije toga da ukratko izložim koncepciju. Ideja mi je bila da napravim program za vođenje knjigovodstva za više maloprodajnih objekata i to tako da korisnik sam, prema potrebi, otvara nove maloprodajne objekte a isto tako da može da pobriše one koji više ne postoje. Prodavnica za koju želite da knjižite bira se sa spiska prodavnica tako da se dvoklikom na njen naziv. Na taj način se otvara meni koji sadrži sve one referate koji su potrebni: maloprodajne kalkulacije, nota blokove, knjigu poreza, trgovačku knjigu, inventure, nivelacije cijena itd. Pošto svi prodajni objekti moraju da imaju isti šifrarnik roba zamislio sam koncepciju tako da tabela tblRoba pored uobičajenih polja kao što su šifra, naziv robe, jedinica mjere ima i po jedno polje cijene za svaku prodavnicu (recimo MC1, MC2 itd.). Razlog za ovo je da ne mora sva roba imati iste cijene u svim prodavnicama. To sam uspješno riješio tako da pri otvaranju prodavnice u tabelu tblRoba dodam gore spomenuto polje MCX gdje je X šifra prodavnice. Ako kome ovo zatreba to sam riješio na sljedeći način: ' dodavanje kolone u tblRoba Dim catR As ADOX.Catalog Dim strDbR As String Dim cnnR As ADODB.Connection Dim strtableR As String Dim rstRobaR As ADODB.Recordset strtableR = "tblRoba" Set cnnR = CurrentProject.Connection Set catR = New ADOX.Catalog catR.ActiveConnection = cnnR strDbR = catR.Tables(strtableR).Properties("Jet OLEDB:Link Datasource") If Len(strDbR) > 0 Then ' Open a connection to the external database. Set cnnR = New ADODB.Connection cnnR.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & strDbR & ";" End If Dim brpr As Integer brpr = Me!PRODAVNICAD Dim sSQL As String ' dodaj kolonu sSQL = "ALTER TABLE " & strtableR & " ADD COLUMN MC" & brpr & " INTEGER;" cnnR.Execute sSQL Set catR = Nothing If Len(strDbR) > 0 Then cnnR.Close End If Set cnnR = Nothing Obrnuta procedura (brisanje prodavnice) je urađena na sljedeći način: Dim brpr As Integer brpr = Me!PRODAVNICAD Dim sSQL As String ' brisanje kolone sSQL = "ALTER TABLE " & strtableR & " DROP COLUMN MC" & brpr Predstavljenje obrasca za ažuriranje podataka o robi je urađen na klasični način osim što je polje cijena definisano pri otvaranju obrasca i to: Me!CIJENA.ControlSource = "MC" & Forms!frm_Prodavnice!PRODAVNICA Jasno je da je frm_prodavnica obrazac sa spiskom prodavnica. Isti ovaj princip sam primjenio i u izvještajima tako da prokazujem cijenu iz odgovarajuće prodavnice. E sada konačno PROBLEM ( da ne ispada kako samo držim predavanje o svojim pogledima na koncepciju programa za praćenje viže maloprodaja). PROBLEM SU UPITI! Kako da napravim upit tako da mi budu iz tblRoba predstavljena polja sifra, naziv (ovo znam) i cijena i to ne sve cijene već recimo ako radim prodavnicu 2 da bude cijena koja se u tblRoba nalazi u koloni MC2. Možda pitanje izgleda trivijalno ali ja stojim u mjestu već danima..... |