Mislim da nećeš moći da je sačuvaš u nižoj verziji, .mdb, pošto koristiš neke funkcije koje ne postoje u verziji 2003, kao što su Calaculated fields. Trebao bi da malo drugačije postaviš model baze, pošto nema potrebe čuvati vrednosti koje se dobijaju preračunavanjem. Njih možeš uvek preračunati pomoću kverija ili čak direktno unutar forme ili izveštaja.
Što se tiče dobijanje trenutne vrednosti za UnitPrice, možeš da iskoristiš funkciju Dlookup. Mogao bi da staviš sledeći kod kada se vrednost combo boxa ServiceID promeni:
Code:
Option Compare Database
Option Explicit
Private Sub ServiceID_AfterUpdate()
Me.UnitPrice.Value = DLookup("Price", "Services", "Servicescode=" & Me.ServiceID.Value)
End Sub
Za reminder bi trebao postojeći kod, koji imaš pod Form Load, da zameniš sa sledećim:
Code:
Option Compare Database
Option Explicit
Private Sub Form_Load()
Dim db As Database
Dim overdueQ As QueryDef
Dim rst As DAO.Recordset
Set db = CurrentDb
Set overdueQ = db.QueryDefs("Overdue")
Set rst = overdueQ.OpenRecordset()
If (rst.RecordCount) > 0 Then
MsgBox ("You have overdue invoices")
DoCmd.OpenReport "Overdue", acViewReport, , , acDialog
Else
MsgBox ("You don't have overdue invoices")
End If
End Sub
Ne znam zašto si imao Quit kada nema faktura kojima je prošao datum dospeća. Zar nije dovoljno samo obavestiti da nema faktura kojima je prošao datum dospeća bez zatvaranja aplikacije (baze)?
Za štampanje samo određene fakture u kveri koji si napravio, QueryReport, samo dodaj sledeći uslov:
Code:
WHERE (((Invoice.ID)=[Forms]![Invoice]![ID]));
Na ovaj način će se štampati samo faktura koju trenutno gledaš u formi Invoice.
Takođe, dodaj dugme na formu koje će otvarati izveštaj Invoice za štampu.
Probaj u nazivima za objekte (tabele, kverije, forme, izveštaje...) dodaješ sufiks ili prefiks koji će praviti razliku u imenu na osnvu objekta o kome se radi.