Avatar billede jnh Nybegynder
01. oktober 2004 - 10:51 Der er 4 kommentarer og
2 løsninger

Opret ny record. check For dubletter

Hej!

Jeg sidder med en for med 2 felter
1. firmanavn
2. Adresse

Når man har indtastet adressen og Firmanavnet på en ny post skal den kontrollere, om der findes en anden post i databasen, der matcher, altså har samme data.

Problemet ligger egentlig ikke i dette, men mere i at jeg ikke ønsker at lave kontrollen, medmindre det er en ny post, jeg har oprettet.

pt. har jeg følgende kode (pseudo)
firmanavn.exit -> if not value = "" Then run SQL
if count(sql) > 1 Then vis besked.

mit problem er så når jeg går ind på en eksisterende post og exitter firmanavnet, så viser den også beskeden. Det er ikke meningen.

Hvordan løser jeg dette. Hvis navnet findes 1 sted i databasen returneres 1... altså den nye tælles ikke med, så jeg kan ikke bruge " if count(sql) > 1 " desværre.

Håber i forstår og kan hjælpe

//JesperH
Avatar billede overchord Nybegynder
01. oktober 2004 - 11:00 #1
En mulighed ville vaere at lave en formular som IKKE er bundet til tabellen, men stadig indeholder de samme felter. Denne formular bruges selv kun til indtastning af nye fimaere, saa jeg ved ikke hvordan det passer ind i din eksisterende struktur.

Ved din exit funktion aver du saa en
if dcount("Firmnavn","MinTabel", "Firmanavn = " & me.Firmafelt) > 0 then
      msgbox("Firma eksisterer allerede", vbokonly)
else
    strsql = "INSERT INTO Mintabel(Firmanvn, adresse) VALUES(" & me.firmafelt & ", " & me.adressefelt & ");"
  docmd.Runsql(strsql)
end if
Avatar billede jnh Nybegynder
01. oktober 2004 - 11:06 #2
Hmm... ja, men det vil være overkill...
Jeg har nemlig en del flere felter, men det er kun de to ovennævnte, der er interessante. Findes der ikke en property eller noget, der giver at man er ved at oprette en ny record?

//JesperH
Avatar billede overchord Nybegynder
01. oktober 2004 - 11:52 #3
Har du flere forskellige adresser paa det samme firmananv? Ellers er den simpleste loesning at gaa til tabellen og saette egenskaben for firmanavn - indeksering til Yes(No duplicates)
Avatar billede mugs Novice
01. oktober 2004 - 12:03 #4
Som overchord skitserer i sit svar, er DCount en mulighed. Og det er denne jeg også vil foreslå.
Men jeg mener ikke det er nødvendigt med en ny formular. I en eksisterende formular VedAktuel indsættes en betingelse der kontrollerer, om der er tale om en ny post:

If Me.New Record Then
if dcount("Firmnavn","MinTabel", "Firmanavn = " & me.Firmafelt) > 0 then
msgbox("Firma eksisterer allerede", vbokonly)
Me.Undo
Exit sub
end if
end if
Avatar billede overchord Nybegynder
01. oktober 2004 - 12:19 #5
Ja mugs - det var jo egentligt en lidt mere elegant loesning :-)
Avatar billede jnh Nybegynder
01. oktober 2004 - 12:31 #6
Vil i dele point?

- i har jo begge gjort en glimrende indsats...
- i er simpelthen nogle guttermænd
(for jeg kan gå tidligere hjem fra arbejde :))

//JesperH
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester