Hej, Varför bar inte göra det så här? Hej, tack för hjälpen. Jag får det dock inte att funka fullt ut med din lösning. Jag får ett felmeddelande om Syntax error, UNKNOWN_TOKEN ignored på denna raden Det hjälper om du nämner databas du använder när du skriver inlägg.Undvik dubletter...
Kör inmatning från ett formulär där första fältet är primärnyckel. Jag vill såklart inte att man ska kunna registrera dubletter utan att det kontrolleras. Har testat, men inte fått det att fungera. Tror att det skulle det kunna se ut något så här?
'Utför SQL uttrycket med hjälp av variablerna från formuläret
sql="Insert into SERVER(SERVER,ORT,FUNKTION,DATABAS,MODELL,PROCESS,MHZ,MINNE,UTRUST,OS,DOMAIN,KOMMENTAR) VALUES ('" & servers & "','" & ort & "','" & funk & "','" & dbas & "','" & model & "'," & procs & "," & mhzp & "," & minne & ",'" & utrus & "','" & oper & "','" & domai & "','" & komme & "')" WHERE ('" & servers & "')NOT EXISTS(SELECT SERVER FROM SERVER);"
Det sista raden fungera inte för mig, men det jag vill är att om man försöker lägga in ett servernamn (primär) som redan finns så ska man promtas att posten redan finns och man måste ange ett annnat id. Det borde väl ligga när man öppnat och ska börja lägga in. Som det blir nu om man anger en dublett så får man Page cannot display och felmeddelandet att man försökt sätta in ett duplikat.
Mvh, Fredrik HSv: Undvik dubletter...
<code>
Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Function SQLNumber(Value)
If IsNumeric(Value) Then
SQLNumber = Replace(Value, ",", ".")
Else
SQLNumber = "Null"
End If
End Function
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & Server.MapPath("DinDatabas.mdb")
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "SELECT Null FROM [SERVER] WHERE [SERVER].[SERVER] = " & SQLText(servers), Con
If rs.EOF Then
strSQL = "INSERT INTO [SERVER] ([SERVER], [ORT], [FUNKTION], [DATABAS], [MODELL], [PROCESS], [MHZ], [MINNE], [UTRUSTNING], [OS], [DOMAIN], [KOMMENTAR]) VALUES" & vbCrLf & _
"(" & SQLText(servers) & ", " & SQLText(ort) & ", " & SQLText(funk) & ", " & SQLText(dbas) & ", " & SQLText(model) & ", " & SQLNumber(procs) & ", " & SQLNumber(mhzp) & ", " & SQLNumber(minne) & ", " & SQLText(utrus) & ", " & SQLText(oper) & ", " & SQLText(domai) & ", " & SQLText(komme) & "');"
Con.Execute strSQL
Else
Response.Write "Servern""" & servers & """ finns redan!"
End If
rs.Close
Set rs = Nothing
Con.Close
Set Con = Nothing
</code>Sv: Undvik dubletter...
rs.Open "SELECT Null FROM [SERVER] WHERE [SERVER].[SERVER] = " & SQLText(servers), objCon
Så här ser hela min koppling ut:
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "Driver={MIMER};Database=mimerdb;Uid=anv;Pwd=losen;"
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "SELECT Null FROM [SERVER] WHERE [SERVER].[SERVER] = " & SQLText(servers), objCon
Såg att du hade exemlet med en access databas, men det ska väl inte spela någon roll?Sv: Undvik dubletter...
Gissar på att det anntingen är Null eller [ och ]-tecknet. Testa med:
<code>
Function SQLText(Value)
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Function SQLNumber(Value)
If IsNumeric(Value) Then
SQLNumber = Replace(Value, ",", ".")
Else
SQLNumber = "Null"
End If
End Function
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & Server.MapPath("DinDatabas.mdb")
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "SELECT * FROM SERVER WHERE SERVER.SERVER = " & SQLText(servers), Con
If rs.EOF Then
strSQL = "INSERT INTO SERVER (SERVER, ORT, FUNKTION, DATABAS, MODELL, PROCESS, MHZ, MINNE, UTRUSTNING, OS, DOMAIN, KOMMENTAR) VALUES" & vbCrLf & _
"(" & SQLText(servers) & ", " & SQLText(ort) & ", " & SQLText(funk) & ", " & SQLText(dbas) & ", " & SQLText(model) & ", " & SQLNumber(procs) & ", " & SQLNumber(mhzp) & ", " & SQLNumber(minne) & ", " & SQLText(utrus) & ", " & SQLText(oper) & ", " & SQLText(domai) & ", " & SQLText(komme) & "');"
Con.Execute strSQL
Else
Response.Write "Servern""" & servers & """ finns redan!"
End If
rs.Close
Set rs = Nothing
Con.Close
Set Con = Nothing
</code>