Jeg har en kunde tabel, hvor kunder nr. er primærnøgle og autogenereret. Jeg har en anden tabel (ordre) hvor jeg vil hente 3 felter (Fornavn,Efternavn, email) og oprette nye kunder i Kunde tabellen, hvis IKKE kombinationen af disse 3 felter allerede finde i Kunde tabellen.( dvs. en ny kunde der ikke er i tabellen).
Jeg er kommet frem til følgende: Oprettet en Tilføjelsesforespørgsel hvor de 3 felter udvælges og indsættes i kunde tabellen.
SQL visning: INSERT INTO Kunder ( Fornavn, Efternavn, Email ) SELECT spc.F12, spc.F13, spc.F1 FROM Kunder, spc;
Dim a As String, b As String, c As String a = Me.fornavn b = Me.Efternavn c = Me.email If DCount("*", "KUNDETABEL", "[Fornavn] ='a'") > 0 And DCount("*", "KUNDETABEL", "[Efternavn] ='b'") > 0 And DCount("*", "KUNDETABEL", "[email] ='c'") > 0 Then MsgBox "Der er allerede poster med denne værdi." Else DoCmd.RunSQL "Din SQL sætning" End If
En anden mulighed kunen vel være at lave et unikt indeks på de tre felter i kundetabellen. Så slipper du for at kode en kontrol af, om kunden findes i forvejen.
jkrons > Det tænkte jeg også på. Der er jo et kundenr som er PK. I teorien kan vi jo godt have 2 kunder med det samme navn, vi kan vel også have 2 kunder med samme e-mail, og så er det jo et spørgsmål om tid og sandsynlighed inden vi rammer 2 kunder med samme navn og e-mail. Så databasen er er ikke "holdbar" i længden uyanset om vi vælger den ene eller dan anden løsning.
mugs-> Jeg tror ikke at det er sandsynligt at to forskellige mennesker har nøjagtigt samme e-mail adresse. Det ville være ensbetydende med at de havde deres e-mail hos samme udbyder, og at denne udbyder, havde givet samme adresse til to forskellige kunder, hvilket ville give ret store problemer, for de, som skulle skrive til den ene :-)
En anden ting er, at ingenb af løsningerne giver 100% sikkerhed for, at en kunde ikke oprettes flere gange i systemet. Fx vil W#illiam W. Wallace blve opfatter som forskellig fra William Wallace, og har kunden ved første henvendelse opgivet sit navn som William W, og glemmer initialet anden gang, vil systemet opfatte den anden henvendelse som en ny kunde.
Desuden er e-mail adresser ofte meget lidt varige. Så når William W. Wallce, www@mail.dk henvender sig, vil han bliver opfattet som en ny kunde, hvis han allerede står som William W. Wallace, www@post.dk
Så nogen 100% sikkerhed, kan man ikke kode sig ud af.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.