itak skrev:
> Scriptet skal tjekke om dataene overhovedet findes i databasen og
> derefter - hvis de IKKE findes - skrive det til basen.
Du tjekker ved at lave en normal select-sætning og så teste om du får et
tomt postsæt tilbage. Følgende eksempel leder efter værdien "foo" og
sætter den ind hvis den ikke er der i forvejen. På en rigtig side vil
værdien formentlig komme fra en form eller lignende.
' Tjek for feltværdi
findSQL = "SELECT TOP 1 idFelt FROM tabel WHERE testfelt = 'foo'
set rs = Conn.Execute(findSQL)
' Tjek for tomt postsæt:
If rs.EOF Then
' Posten skal oprettes
Else
' Posten skal ikke oprettes
End If
En alternativ måde er at bruge fejlhåndtering til at løse problemet. Den
er lidt sværere at håndtere end ovenstående løsning, men den er mere
effektiv hvis de fleste kørsler resulterer i en indsættelse (svarende
til at select-sætningen i eksemplet ovenfor oftest vil returnere et tomt
postsæt). Tricket er at lave et unikt indeks på det felt man tester på -
sådan så det ikke er muligt at have to poster med samme værdi i feltet.
Prøver man at indsætte en eksisterende værdi vil man så få en fejl
tilbage fra databasedriveren. Den kan man håndtere med ved hjælp af
Err-objektet og On Error Resume Next.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html