Toon posts:

[DB/Access] Validatieregel *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een systeem uitgewerkt waarbij msn contacten in een databank opgeslagen kunnen worden. In die tabel heb ik 4 velden

ContactID (autonummering)
BV: 2

ContactNaam (msn/e-mail/GSM)
BV: email@hotmail.com

MediumID (forgein key, verwijzing naar een msn/email/gsm lijst)
BV: 2

PersoonID (forgein key, verwijzing naar een persoon)
BV: 30

De meest logische validatieregel is dat elke Contactnaam op MediumID bij een persoon maar 1 keer mag voorkomen. Die is ingesteld en werkt.

Maar daarboven zou hij moeten controleren dat elke msn adres op elke msnlijst maar 1 keer voorkomt. En dat mag enkel op msnlijsten. Dat is nodig om msnlijsten te kunnen importeren.

Ik zou dus graag willen weten hoe je in access kan instellen dat bij het opslaan, access controleert of de Contactnaam op MediumID nog niet bestaat als het een msn adres is(het type adres is aangegeven in tabel tblMedium).

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

je kan een unieke composiete index leggen op (contactnaam, mediumid), maar dan geldt de constraint ook voor email en gsm. Anders moet je in je formulier bij BeforeInsert een stukje code plaatsen dat erop controleert:
Visual Basic:
1
2
3
4
5
6
7
8
9
Private Sub Form_BeforeInsert(Cancel As Integer)
    If Me.MediumID = MessengerID Then
        If Not IsNull(DLookup("contactID", "Tabel", "mediumID = '" & MessengerID & _
            "' AND Contactnaam = '" & Me.Contactnaam & "'")) Then
            MsgBox "Bestaat al.", vbInformation + vbOKOnly
            Cancel = True
        End If
    End If
End Sub

[ Voor 11% gewijzigd door kenneth op 16-11-2003 12:21 ]

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Verwijderd

Topicstarter
Kan ik die controle ook op tabelniveau doen?
Want ik zou mij msnlijsten willen importeren via Visual Basic, en niet via formulieren. Ik kan de controle natuurlijk ook in visual basic uitvoeren, maar ik probeer ze op het laagste niveau te schrijven.

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Dan is volgens mij de enige mogelijkheid de constraint die ik je opgaf. Maar dat betekent dus dat voor ieder medium de contactnaam uniek is. Je kan dus ook geen 2 mensen met hetzelfde GSM-nummer of e-mailadres hebben.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Verwijderd

Topicstarter
Is het wel mogelijk met SQL Server?

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Ja, met behulp van triggers.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.

Pagina: 1