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

Dariusz Kolasa Akademia VBA

Temat: [Access 2003] Błąd: "Funkcji nie można używać w...

nie pracuj na zmiennych globalnych, jak chcesz przekazać parametr z fm do innego fm używaj parametrów przy otwieraniu

Temat: [Access 2003] Błąd: "Funkcji nie można używać w...

Bardzo dziękuję za podpowiedź. Wypróbuję na pewno - dam znać z jakim rezultatem.

Następna dyskusja:

ms access 2010 i sharepoint...




Wyślij zaproszenie do