Karol Marszałek Montażysta
Temat: [Access 2003] Błąd: "Funkcji nie można używać w...
Witam.Bardzo proszę o pomoc w rozwiązaniu następującego problemu.
Mam trzy formularze w bazie danych:
1) Zamówienia na wyroby - zawiera dane o klientach, zamówieniach itd
2) Wycena - wylicza cenę wyrobu po podaniu różnych parametrów
3) Narzuty - przechowuje wartości różnego rodzaju narzutów, które będą od czasu do czasu modyfikowane.
Wszystkie wartości z formularza narzuty są przypisane do zmiennych globalnych.
Zmienne globalne zdefiniowane w module:
Kod:
Public zm_kz As Long
Public zm_nomb As Long
Public zm_norb As Long
Public zm_pk As Long
Public zm_z As Long
Po edycji "Narzuty" i jego zamykaniu, do zmiennych globalnych zostają przypisane odpowiednie wartości i otwiera się "Wycena":
Kod:
Private Sub OK_Click()
On Error GoTo Err_OK_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "wycena"
stLinkCriteria = "[IDnrprojektu]=" & nr_projektu 'nr_projektu zmienna globalna, pozwala otworzyć odpowiedni wyrób do wyceny
zm_kz = Forms![narzuty]![narzut1] 'przypisanie do zmiennych globalnych odpowiednich wartości narzutów
zm_nomb = Forms![narzuty]![narzut2]
zm_norb = Forms![narzuty]![narzut3]
zm_pk = Forms![narzuty]![narzut4]
zm_z = Forms![narzuty]![narzut5]
DoCmd.Close
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_OK_Click:
Exit Sub
Err_OK_Click:
MsgBox Err.Description
Resume Exit_OK_Click
End Sub
Podobnie przypisywane są te wartości przy otwieraniu "wycena" z "zamówienia na wyroby".
Przy ładowaniu "wycena" definiowane są zmienne lokalne, przypisane do nich odpowiednie wartości z ładowanego formularza, dokonywane obliczenia na zmiennych globalnych i lokalnych a ich wyniki są zapisywane do odpowiednich pól tego formularza.
Kod:
Private Sub Form_Load()
If IsNull([IDnrprojektu]) Then
Me!IDnrprojektu = nr_projektu
DoCmd.Requery
End If
Dim zm_mb As Long 'definiowanie zmiennych lokalnych
Dim zm_mpk As Long
Dim zm_rb As Long
Dim zm_l As Long
Dim zm_tkww As Long
Dim zm_ckww As Long
zm_mb = Me.wycena1 'przypisanie wartości zmiennym lokalnym
zm_mpk = Me.wycena2
zm_l = Me.wycena3
zm_rb = Me.wycena4
Me.obliczane1 = zm_mb * zm_kz / 100 'obliczenia na zmiennych i zapisywanie do odpowiednich komórek
Me.obliczane2 = zm_mb * zm_nomb / 100 'te wyrażenia powodują błąd
'kolejne wyrażenia
End Sub
I teraz najważniejsze. Jeśli "wycena" zostanie wywołana z "zamówienia na wyroby" wszystko działa. Ale jeśli z "wyceny" otworzę "narzuty" aby je zmodyfikować lub przejrzeć to po powrocie z "narzuty" do "wyceny" otrzymuję następujący komunikat:
"Run-time error '-2147352567 (80020009)':
Funkcji nie można używać w wyrażeniach. w wyrażeniu kontroli poprawności na poziomie tabeli."
Jak już zaznaczyłem w poprzednim kodzie, błąd powodują te wyrażenia:
Kod:
Me.obliczane1 = zm_mb * zm_kz / 100 'obliczenia na zmiennych i zapisywanie do odpowiednich komórek
Me.obliczane2 = zm_mb * zm_nomb / 100
Proszę o wyrozumiałość jeśli źle naprowadziłem na mój problem - jestem początkujący w temacie.