Jak odrzucić kombinację dwóch pól, jeśli już istnieje w pliku dostępu MSFT

0

Utworzyłem tabelę „Klient” i utworzyłem formularz naśladujący proces rejestracji.
Po kliknięciu przycisku „Zarejestruj się” chcę odrzucić proces rejestracji, jeśli kombinacja adresu e-mail i hasła już istnieje. W przeciwnym razie zapisz rekord.

Czy można to zaimplementować w programie Microsoft Access?

Chiron
źródło
1
Musisz przypisać logikę do formularza, co oznacza, że ​​będziesz musiał użyć makra, co oznacza VBA. Przykro mi z powodu złych wieści.
@RandolphWest Zedytowałem swój post, aby usunąć ograniczenie VB. Czy mógłby mi pomóc, jak to wdrożyć? Nie szukam kodu, aby się upewnić, ale nie znam Access i VB
Chiron
W tej chwili nie mam już dostępu do Access. Chciałbym utworzyć zapytanie, które sprawdza, czy rekord istnieje, a także takie, które go wstawia (dwa oddzielne zapytania, używając konstruktora zapytań, jeśli chcesz). Następnie makro, które uruchamia pierwsze, a jeśli nie zwraca żadnych wartości, uruchom drugie (używając instrukcji If-Then). To najprostszy sposób, jaki mogę wymyślić, od czubka głowy.

Odpowiedzi:

0

Utwórz unikalne ograniczenie dla dwóch kolumn razem, spowoduje to, że Access odrzuci duplikaty jako naruszenie tego unikalnego ograniczenia. To, co zrobisz z błędem, zależy od formy. Tutaj jest SO odpowiedź:

https://stackoverflow.com/questions/2127698/can-we-create-multicolumn-unique-indexes-on-ms-access-databases

Odpowiednia odpowiedź:

Otwórz tabelę w widoku projektu w MS Access, wybierz trzy kolumny, które chcesz przekształcić w unikalny indeks, a następnie kliknij mały klawisz na pasku narzędzi. Nie można mieć wartości null w kluczu podstawowym (zestawie). https://stackoverflow.com/users/2548/remou

Edytuj, ponieważ masz już PK i prawdopodobnie nie chcesz tworzyć nowego złożonego PK, aby go zastąpić, ale jest to druga opcja:

W każdym razie oto sposób tworzenia unikatowego indeksu wielokolumnowego w bazie danych MS Access. 1. Otwórz tabelę w trybie projektowania i Projekt, wybierz Indeksy. 2. Utwórz nowy wiersz i wprowadź wartość w komórce Nazwa indeksu, 3. Wybierz pierwszą kolumnę z menu rozwijanego. 4. Dodaj nowy wiersz i pozostaw komórkę Nazwa indeksu pusta. 5. Wybierz drugą kolumnę i tak dalej. https://stackoverflow.com/users/47775/nbolton

Inną (i złą) opcją jest zapytanie najpierw do bazy danych, a następnie nie wstawianie, ale pozostawia to drzwi potencjalnym problemom z integralnością referencyjną w późniejszym terminie.

Na marginesie jednak; czy na pewno chcesz wstawić każdą unikalną kombinację nazwy użytkownika (adresu e-mail) / hasła? Może to powodować problemy dla użytkowników, którzy zapomnieli hasła i kończą się powielaniem kont. Możesz pomyśleć o jakimś innym złożonym identyfikatorze (np. Uchwyt + hasło są unikalne ORAZ adres e-mail jest unikalny w DB. Lub po prostu adres e-mail jest unikalny. Nie wiem wystarczająco o twoim zestawie problemów - ale to jest coś do przemyślenia.

iivel
źródło
Masz na myśli określenie trzech kolumn jako klucza podstawowego? Tabela ma już kolumnę PK id_klienta
Chiron,
Ponieważ masz już PK, użyj unikalnego ograniczenia indeksu (inne odpowiedzi w łączu SO). Będziesz miał PK, ale dodatkowy indeks z unikalnym ograniczeniem, który ma pozostałe dwie kolumny.
iivel