Błąd "wprowadzony tekst nie jest elementem na liście" podczas dodawania nowego rekordu do tabeli

Uwaga

Nazwa usługi Office 365 ProPlus została zmieniona na Aplikacje usługi Microsoft 365 dla przedsiębiorstw. Aby uzyskać więcej informacji na temat tej zmiany, przeczytaj ten wpis w blogu.

Oryginalny numer artykułu KB:   824176

Uwaga

Ten artykuł dotyczy tylko bazy danych programu Microsoft Access (mdb). Wymaga podstawowych umiejętności dotyczących makr, kodowania i współdziałania.

Symptomy

Podczas próby programistycznego dodania nowego rekordu do tabeli przy użyciu zdarzenia NotInList w polu kombi formularza może zostać wyświetlony następujący komunikat o błędzie:

Wprowadzony tekst nie jest elementem na liście.
Wybierz element z listy lub wpisz tekst zgodny z jednym z elementów listy.

Nowy rekord zostanie jednak pomyślnie dodany do tabeli. W rezultacie nowy wprowadzony element zostanie dodany do listy elementów w polu kombi.

Przyczyna

Ten problem występuje, gdy pole kombi jest powiązane z kolumną typu danych liczba, a właściwość Format kolumny jest ustawiona na wartość walutowe lub euro.

Obejście problemu

Aby obejść ten problem, wpisz wartość w polu kombi, odpowiadającą formatowi kolumny, z którą jest powiązane pole kombi. Jeśli na przykład formatem kolumny jest Waluta , wpisz $20 zamiast 20.

Jeśli jednak format kolumny jest ustawiony na euro , może nie być możliwe wprowadzenie liczby zgodnej z formatem kolumny.

Uwaga

Po zresetowaniu właściwości Format kolumny problem nie występuje.

Więcej informacji

Może również zostać wyświetlony komunikat o błędzie podczas wpisywania numeru odpowiadającego elementowi w polu kombi, które już istnieje. Ten problem może wystąpić, Jeśli wpisany numer jest niezgodny z sformatowanymi wpisami podstawowego zestawu rekordów, który już istnieje.

Procedura odtwarzania zachowania w programie Microsoft Office Access 2003

  1. Uruchom program Microsoft Access.

  2. Tworzenie nowej bazy danych DB1. mdb.

  3. Aby utworzyć wymaganą tabelę przykładową, wykonaj następujące czynności:

    1. W oknie Baza danych kliknij pozycję tabele w obszarze obiekty.
    2. W okienku po prawej stronie kliknij dwukrotnie pozycję Utwórz tabelę w widoku projektu.
    3. W pierwszym wierszu kolumny Nazwa pola , typeid, a następnie ustaw odpowiedni Typ danych na Autonumerowanie.
    4. W drugim wierszu kolumny Nazwa pola typeRates, a następnie ustaw odpowiedni Typ danych na Liczba.
    5. W okienku Właściwości pola kliknij kartę Ogólne .
    6. Ustaw właściwość Format na walutowe.
    7. W menu plik kliknij polecenie Zapisz.
    8. W oknie dialogowym Zapisywanie jako wpisz stawki, a następnie kliknij przycisk OK.
    9. W menu plik kliknij polecenie Zamknij.
  4. W oknie Baza danych kliknij pozycję formularze w obszarze obiekty.

  5. W okienku po prawej stronie kliknij dwukrotnie pozycję Utwórz formularz w widoku projektu.

  6. Dodaj do formularza pole kombi ComboTest , a następnie ustaw właściwości w następujący sposób:

    Właściwości Value
    Nazwę ComboTest
    Kolumna związana: jedno
    RowSourceType Tabela/kwerenda
    Źródło wierszy: Wybierz pozycję Rates.ID; stawki.
    Automatyczne rozwijanie: Tak
    Ogranicz do listy: Tak
    Liczba kolumn: 2,6
    Szerokości kolumn: 0 "; 1"
  7. W menu Widok kliknij polecenie kod , aby otworzyć Edytor Microsoft Visual Basic.

  8. Wklej poniższy kod w zdarzeniu NotInList w polu kombi ComboTest .

    Uwaga

    Przykładowy kod w tym artykule używa obiektów Microsoft Data Access Objects. Aby można było poprawnie uruchomić ten kod, należy odwołać się do biblioteki obiektów Microsoft DAO 3,6. Aby to zrobić, kliknij pozycję odwołania w menu Narzędzia w edytorze Visual Basic i upewnij się, że jest zaznaczone pole wyboru Microsoft DAO 3,6 Object Library .

    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim Msg As String
    
        Msg = "'" & NewData & "' is not in the list." & vbCr & vbCr
        Msg = Msg & "Do you want to add it?"
        If MsgBox(Msg, vbQuestion + vbYesNo) = vbNo Then
            Response = acDataErrContinue
           MsgBox "Try again."
        Else
            Set Db = CurrentDb
            Set Rs = Db.OpenRecordset("Rates", dbOpenDynaset)
    
            Rs.AddNew
            Rs![Rates] = NewData
            Rs.Update
            Response = acDataErrAdded
    
        End If
    
  9. W menu plik kliknij polecenie Zapisz.

  10. W oknie dialogowym Zapisywanie jako wpisz FormTest, a następnie kliknij przycisk OK.

  11. W menu plik kliknij polecenie Zamknij.

  12. W prawym okienku okna Baza danych kliknij dwukrotnie pozycję FormTest.

  13. Wpisz liczbę w polu kombi, a następnie naciśnij klawisz ENTER.

    Zdarzenie NotInList jest wyzwalane. Zostanie wyświetlony komunikat o błędzie wymieniony w sekcji "Symptomy" w tym artykule.

Informacje

Aby uzyskać więcej informacji na temat zdarzenia NotInList, kliknij pozycję Microsoft Access — Pomoc w menu Pomoc , wpisz wydarzenie NotInList w Asystencie pakietu Office lub Kreatorze odpowiedzi, a następnie kliknij przycisk Wyszukaj , aby wyświetlić temat.