Błąd występuje, gdy próbuje się odwołać do rekordu w obiekcie Recordset, który jest pusty lub nie zawiera żadnych danych. Innymi słowy, nie ma aktywnego rekordu, do którego można by się odwołać w danym momencie
Chcąc go uniknąć – warto sprawdzić, czy i ile rekordów ma Recordset, czy nie osiągnięto już ostatniego rekordu ewentualnie wprowadzić obsługę błędów.
Error 438 – Object doesn’t support this property or method
Błąd wykonania 438 – Obiekt nie obsługuje tej właściwości lub metody
Błąd pojawia się w przypadkach błędnego zastosowania parametru.
U mnie wystąpił w takiej procedurze
Public Sub WybierzFolderB()
Dim FD As FileDialog
Dim NazwaPlik As String
Set FD = Application.FileDialog(msoFileDialogFolderPicker)
With FD .Filters.Add „Obrazy jpg”, „*.jpg”
Kompilacja kodu prawidłowa – Application.FileDialog ma taką właściwość, ale użycie jej parametrem wejściowym msoFileDialogFolderPicker (do zaznaczenia folderu) powoduje konflikt przy dodawaniu filtrów. Takie okno nie pozwala na filtrowanie.
Błąd ten pojawia się w sytuacji niezgodności typów np. m.in. dodawanie liczby i tekstu itp.
Zabezpieczeniem przed wystąpieniem tego błędu jest sprawdzenie, czy dana wartość ma prawidłowy typ danych na przykład przez wykorzystanie którejś z funkcji informacyjnych.
Błąd wykonania 2505 – wyrażenie ma nieprawidłową wartość
Przejrzałam dokładnie internet, przepytałam AI i wygląda na to, że jest to bardzo nietypowy błąd i właściwie nic o nim nie wiadomo.
U mnie wystąpił w takiej banalnie prostej procedurze
Private Sub PolecenieSzukaj_Click()
DoCmd.SearchForRecord acDataForm, „SpisKsiazek”, acGoto,”[autor] like '” & „*aga*” & „'” End Sub
Podpowiedzi do wartości tego argumentu wyglądają tak:
kliknij, aby powiększyć
Formularz otwarty, aktywny, bez blokad. Podobny efekt występuje w przypadku innych wartości parametru 3, prawidłowo działa tylko przy użyciu acFirst i acLast, acNext, acPreview. Sprawdzałam to przy różnych konfiguracjach. Jedyną satysfakcjonująca i logiczną odpowiedź otrzymałam od ChatGPT: w podpowiedziach jes t błąd. Odnoszą się one bardziej do możliwości acRecord, ale w połączeniu z SearchForRecord – nie pasują i wywołują ten błąd.
Błąd ten pojawia się w sytuacji, gdy następuje odwołanie do wartości Null w miejscu (np. jako argument funkcji), gdzie wartość jest wymagana.
Najlepszym zabezpieczeniem kodu przed tym błędem jest zastosowanie funkcji nz. Null to nie zero
Przykładowy kod może wyglądać tak:
Private Sub PolecenieSzukaj_Click() Dim JData As Date
JData = Nz(Me.TOD, Date) '(…) End Sub