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.....