Avatar billede boba_dk Nybegynder
25. august 2004 - 14:11 Der er 3 kommentarer og
1 løsning

Kontrol af dubletter i DB

Hej eksperter!

Jeg skal lavet en funktion der kontrolerer om et givet nummer er oprettet i en given kolonne i en DB.

Det drejer sig om en enkelt kolonne med navnet lbnr i en base der hedder test.

Hvis nummeret ikke findes, skal den oprettes, ellers skal den redirecte til min opdateringside med den indtastede record.

Den skal vel også redirecte til opdateringssiden, efter den er oprettet...

Jeg har stykket nedenstående sammen fra min egen viden, samt hvad jeg kunne finde her på Eksperten.

Jeg er sikker inde på noget helt forkert, så jeg åben for andre forslag

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("db\test.mdb")
Conn.Open DSN

SQL = \"SELECT * FROM test WHERE lbnr LIKE " & "Request.Form("lbnr")""

Set RS = Conn.Execute

if( RS.EOF ) then
  SQL = \"INSERT INTO ...\"
  Conn.Execute( SQL )
  response.write \"Ny post opprettet\"
else
  response.write \"Den findes\"
end if
%>

Håber at jeg har gjort mig forståelig....
Avatar billede eagleeye Praktikant
25. august 2004 - 14:16 #1
Du ska likke havde \ foran " og der skal være ' omrkring data hvis kolonne lbnr er en tekst kolonne og bruge = ikke LIKE så prøv sådan her:


<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("db\test.mdb")
Conn.Open DSN

SQL = "SELECT * FROM test WHERE lbnr = '" & Request.Form("lbnr") & "'"

Set RS = Conn.Execute(SQL)
if( RS.EOF ) then
  SQL = "INSERT INTO test (lbnr) values ('" & Request.Form("lbnr") & "')"
  Conn.Execute( SQL )
  response.write "Ny post opprettet"
else
  response.write "Den findes"
end if
%>

men du kan tilføje flere poster til din INSERT SQL
Avatar billede boba_dk Nybegynder
25. august 2004 - 14:44 #2
Det virker, den skriver enten "Den findes" eller "Ny post oprettet"

Jeg ønsker dog at den laver en link, eller redirecter til til opdateringssiden med det record ID den finder/opretter.

Jeg har forsøgt med nedenstående, men den henter ikke ID ind...

<%

Dim rs            'Holds the recordset for the records in the database
Dim lngRecordNo            'Holds the record number to be updated

' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("db\test.mdb")
Conn.Open DSN


'Read in the record number to be updated
lngRecordNo = CLng(Request.QueryString("ID"))


SQL = "SELECT * FROM test WHERE lbnr = '" & Request.Form("lbnr") & "'"

Set RS = Conn.Execute(SQL)
if( RS.EOF ) then
  SQL = "INSERT INTO test (lbnr) values ('" & Request.Form("lbnr") & "')"
  Conn.Execute( SQL )
  response.write "Ny post oprettet <a href=""update_form.asp?ID=" & rs("ID") & """>"
Response.Write "</a>"
else
  response.write "Den findes <a href=""update_form.asp?ID=" & rs("ID") & """>"
Response.Write "</a>"
end if
%>
Avatar billede eagleeye Praktikant
25. august 2004 - 14:48 #3
Når du har indsat bliver du nød til at hente det ud :) Prøv at rette:

if( RS.EOF ) then
  SQL = "INSERT INTO test (lbnr) values ('" & Request.Form("lbnr") & "')"
  Conn.Execute( SQL )
  response.write "Ny post oprettet <a href=""update_form.asp?ID=" & rs("ID") & """>"
Response.Write "</a>"
else

Til:

if( RS.EOF ) then
  SQL = "INSERT INTO test (lbnr) values ('" & Request.Form("lbnr") & "')"
  Conn.Execute( SQL )
  Set rs=Conn.Execute ("SELECT id FROM test WHERE lbnr = '" & Request.Form("lbnr") & "'")
  response.write "Ny post oprettet <a href=""update_form.asp?ID=" & rs("ID") & """>"
Response.Write "</a>"
else
Avatar billede boba_dk Nybegynder
25. august 2004 - 15:00 #4
Det virker 100%!

Tak for det hurtige svar, total asp-master :-)
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
Kurser inden for grundlæggende programmering

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