Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[lame] Sprawdzenie czy rekord istnieje (access)

118 views
Skip to first unread message

smok

unread,
Jan 24, 2008, 7:01:36 PM1/24/08
to
Witam.
Mam wielką prośbę o podpowiedź. Próbuję zrobić bazę z 3 tabelami. 2 z
nich zawierają kolumny które muszą być unikalne - nazwy kolumn:
numer_rej (w tabeli Pojazdy) i pesel (w tabeli Osoby). Chciałbym, żeby
wprowadzając w formularzu numer rejestracyjny lub pesel które istnieją,
(przy zdarzeniu After Update) access pobrał dane z tabeli i wpisał je do
formularza, i jeśli zostaną zmienione to je _zaktualizował_ (te rekordy
nie mogą się powtórzyć). Próbowałem znaleźć coś na google i zacząłem
pisać tak:
Private Sub numer_rej_AfterUpdate()
If IsNull(DLookup("[numer_rej]", "[Pojazdy]")) Then
MsgBox ("ok")
Else: MsgBox ("dupa")
End If
End Sub
ale nie pobiera mi danych z tabeli - zawsze krzyczy OK, nawet jeśli
rekord istnieje.
Widziałem też kiedyś że da się zrobić tak, że access "w locie" w trakcie
pisania dopełnia zgodnymi danymi z tabeli... ale nie wiem jak to zrobić...
Dzięki za sugestie
Smok.

Grzegorz Danowski

unread,
Jan 26, 2008, 8:02:39 AM1/26/08
to
Użytkownik "smok" <mibs_...@op.pl> napisał w wiadomości
news:fnb8f4$d9q$1...@news.onet.pl...

> Mam wielką prośbę o podpowiedź. Próbuję zrobić bazę z 3 tabelami. 2 z nich
> zawierają kolumny które muszą być unikalne - nazwy kolumn: numer_rej (w
> tabeli Pojazdy) i pesel (w tabeli Osoby). Chciałbym, żeby wprowadzając w
> formularzu numer rejestracyjny lub pesel które istnieją, (przy zdarzeniu
> After Update) access pobrał dane z tabeli i wpisał je do formularza, i
> jeśli zostaną zmienione to je _zaktualizował_ (te rekordy nie mogą się
> powtórzyć). Próbowałem znaleźć coś na google i zacząłem pisać tak:
> Private Sub numer_rej_AfterUpdate()
> If IsNull(DLookup("[numer_rej]", "[Pojazdy]")) Then
> MsgBox ("ok")
...

> ale nie pobiera mi danych z tabeli - zawsze krzyczy OK, nawet jeśli rekord
> istnieje.

Czy przypadkiem w pierwszym wierszu tabeli Pojazdy w kolumnie numer_rej jest
Null?
Powinieneś jeszcze dodać warunek, który określi jakiego rekordu poszukujesz
(a nie dowolnego jak masz w tej chwili):

If IsNull(DLookup("[numer_rej]", "[Pojazdy]", "numer_rej = " &
Me.numer_rej)) Then
MsgBox ("ok")

Choć przypuszczam, że numer rejestracyjny jest stringiem, więc jeszcze
trzeba dodać ciapki:
If IsNull(DLookup("[numer_rej]", "[Pojazdy]", "numer_rej = '" & Me.numer_rej
& "'")) Then

> Widziałem też kiedyś że da się zrobić tak, że access "w locie" w trakcie
> pisania dopełnia zgodnymi danymi z tabeli... ale nie wiem jak to zrobić...

Raczej nie używa do tego DLookUp, bo to jest zbyt wolne. A pole kombi do
wyboru numeru rejestracyjnego próbowałeś użyć? Można w nim użyć zdarzenie
OnNotInList do obsługi dodawania nieistniejących w bazie numerów
rejestracyjnych.
--
Pozdrawiam
Grzegorz

smok

unread,
Jan 26, 2008, 8:55:05 AM1/26/08
to
Grzegorz Danowski napisał(a):

> If IsNull(DLookup("[numer_rej]", "[Pojazdy]", "numer_rej = " &
> Me.numer_rej)) Then
> MsgBox ("ok")

Dzięki.

> Raczej nie używa do tego DLookUp, bo to jest zbyt wolne. A pole kombi do
> wyboru numeru rejestracyjnego próbowałeś użyć? Można w nim użyć
> zdarzenie OnNotInList do obsługi dodawania nieistniejących w bazie
> numerów rejestracyjnych.

Nie... numerów będzie w bazie parę (liczę że koło 1000) a zdarzenia
powtórzeń nie będą tak częste.
Smok.

0 new messages