webForumDet fria alternativet

On error.....

11 svar · 216 visningar · startad av Bj

BjMedlem sedan sep. 2000314 inlägg
#1

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
#2

Vad menar du med att det inte funkar?

BjMedlem sedan sep. 2000314 inlägg
#3

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
#4

Samma databas / primärnyckel i tabellen?

BjMedlem sedan sep. 2000314 inlägg
#5

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
#6

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
#7

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
#8

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
#9

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
#10

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
#11

Oki.
Men... lyckades inte...
Var sätter man apostroferna?
(Stackars @nders)

@ndersMedlem sedan juni 200032 969 inlägg
#12

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

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)