BjMedlem sedan sep. 2000314 inlägg Nedanstående "On Error Resume Next" funkar på en WXp-maskin med IIS men inte på w98 och PWS samt på den sever där jag har scriptet. ¨Någon som veet vad det beror på?
On Error Resume Next
Set Connect = Server.CreateObject("ADODB.Connection")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Connect.Open "DSN=databasen;UID=;PWD="
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM adressbok"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("Kundnummer") = Request.Form("kundnummer")
RecSet("Kundfornamn") = Request.Form("kundfornamn")
RecSet.Update
RecSet.Close
Connect.Close
If Err.Number<>0 then
Response.redirect ("fel.asp")
end if
@ndersMedlem sedan juni 200032 969 inlägg Vad menar du med att det inte funkar?
BjMedlem sedan sep. 2000314 inlägg Om man fyller i ett kundnummer som redan finns skall man i stället för att komma till den "fula sidan" att dubletter inte tillåts komma till sidan "fel.asp"
Detta funkar på xb-maskinen men inte på servern eller på en w98-maskin. På dessa maskiner kommer det bara att registreringen har lyckats.
@ndersMedlem sedan juni 200032 969 inlägg Samma databas / primärnyckel i tabellen?
BjMedlem sedan sep. 2000314 inlägg Ja det är en och samma databas.
ID (Räknare) Primärnyckel
Kundnummer (inga dubletter)
kundfornamn
osv
osv
[Redigerat av Bj den 01 feb 2002]
@ndersMedlem sedan juni 200032 969 inlägg Ok, då tar vi och gör det på rätt sätt då, genom att först kontrollera att kundnumret är ledigt.
Jag har antagit att kundnummer är ett talfält i din tabell.
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DSN=databasen;UID=;PWD="
strSQL = "SELECT 1 FROM adressbok WHERE kundnummer = " & Trim(Request.Form("kundnummer"))
set RecSet = Connect.Execute (strSQL)
if RecSet.eof then
' kundnumret ledigt!
strSQL = "INSERT INTO adressbok(Kundnummer, Kundfornamn) VALUES (" & Trim(Request.Form("kundnummer")) & ", '" & Request.form("kundfornamn") & "')"
Connect.execute strSQL,,128
else
' kundnumret är upptaget!
fel = 1
end if
RecSet.close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
If fel<>"" then Response.redirect "fel.asp"
Mvh,
BjMedlem sedan sep. 2000314 inlägg Tack @nders. Jag fick tyvärr ngt mismatch men det skall jag kolla igenom vad det beror på.
Jag använder en liten annan metod när jag lägger in i databasen. Skickar med koden nedan.. Går det att göra på det sätt du visade Anders i mitt exempel nedan.
<!-- #include file="../adovbs.inc" -->
<%
On Error Resume Next
Set Connect = Server.CreateObject("ADODB.Connection")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Connect.Open "DSN=databasen;UID=;PWD="
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM adressbok"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("Kundnummer") = Request.Form("kundnummer")
RecSet("Kundfornamn") = Request.Form("kundfornamn")
RecSet("Kundefternamn") = Request.Form("kundefternamn")
RecSet("Kundadress") = Request.Form("kundadress")
RecSet("Kundpnr") = Request.Form("kundpnr")
RecSet("Kundort") = Request.Form("kundort")
RecSet.Update
RecSet.Close
Connect.Close
If Err.Number<>0 then
Response.redirect ("fel.asp")
end if
%>
<b>Följande uppgifter har nu lagts till i kundregistret:</b><p>
<table border="0" width="50%" cellspacing="1">
<tr>
<td width="19%"><font size="2">Kundnr:</font></td>
<td width="81%"><font size="2"><b><% =Request.Form("kundnummer") %></b></font></td>
</tr>
<tr>
<td width="19%"><font size="2">Förnamn:</font></td>
<td width="81%"><font size="2"><b><% =Request.Form("kundfornamn") %></b></font></td>
</tr>
<tr>
<td width="19%"><font size="2">Efternamn:</font></td>
<td width="81%"><font size="2"><b><% =Request.Form("kundefternamn") %></b></font></td>
</tr>
<tr>
<td width="19%"><font size="2">Adress:</font></td>
<td width="81%"><font size="2"><b><% =Request.Form("kundadress") %></b></font></td>
</tr>
<tr>
<td width="19%"><font size="2">Pnr:</font></td>
<td width="81%"><font size="2"><b><% =Request.Form("kundpnr") %></b></font></td>
</tr>
<tr>
<td width="19%"><font size="2">Ort:</font></td>
<td width="81%"><font size="2"><b><% =Request.Form("kundort") %></b></font></td>
</tr>
</table>
[Redigerat av Bj den 01 feb 2002]
@ndersMedlem sedan juni 200032 969 inlägg Vad har du för datatyper på fälten då?
Ja, allt går att göra med riktiga SQL-frågor, men beroende på vad fälten har för datatyper skriver man annorlunda.
Mvh,
BjMedlem sedan sep. 2000314 inlägg Det funkar fint när jag har "Tal" satt på Kundnummer.
Problemet är nu att sedan jag ändrade Kundnummer i databasen till "Tal" i stället för "Text" så funkar inte allt det andra som jag är klar med. Då blir det mismatch där i stället....hmm
@ndersMedlem sedan juni 200032 969 inlägg Där datatypen är text skall du ha apostrofer runt värdena i dina SQL-frågor. Därav min fråga om datatyper ovan.
Mvh,
------------------
Let your body decide
BjMedlem sedan sep. 2000314 inlägg Oki.
Men... lyckades inte...
Var sätter man apostroferna?
(Stackars @nders)
@ndersMedlem sedan juni 200032 969 inlägg Enligt mitt första exempel:
strSQL = "INSERT INTO adressbok(Kundnummer, Kundfornamn) VALUES (" & Trim(Request.Form("kundnummer")) & ", [b]'[/b]" & Request.form("kundfornamn") & "[b]'[/b])"
Så, om du ska ha kundnummer som ett textfält också:
strSQL = "INSERT INTO adressbok(Kundnummer, Kundfornamn) VALUES ([b]'[/b]" & Trim(Request.Form("kundnummer")) & "[b]'[/b], [b]'[/b]" & Request.form("kundfornamn") & "[b]'[/b])"
Ska du ha mer fält är det bara att lägga till dem i frågan. :)
Mvh,
------------------
Let your body decide