webForumDet fria alternativet

Registrerings koll !!!!!!

ASP

8 svar · 767 visningar · startad av Tobbster

Medlem sedan mars 2001309 inlägg
Frågan#1

Borde det inte gå att göra så här för att slippa felmeddelandet att primärnyckelposten redan finns i data basen (Användarnamn) När en ny medlem försöker registrera sig med redan bifintligt användar namn ?

<%
Set linCon=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.Recordset")
linCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("\tomalu\db\tomalu.mdb")
SQL="SELECT Anvandarnamn FROM medlem "
rs.Open SQL,MinCon,1,2
Do until rs.EOF
if rs("Anvandarnamn")=Request.Form("anvnamn")
Then response.redirect"fel.asp"
Else
Loop

    Set MinCon=Server.CreateObject("ADODB.Connection")
    Set rs=Server.CreateObject("ADODB.Recordset")
    MinCon.Open "driver={Microsoft Access Driver (\*.mdb)};dbq="& Server.MapPath("\\tomalu\\db\\tomalu.mdb")
    SQL="SELECT \* FROM medlem WHERE 1=2"
    rs.Open SQL,MinCon,1,2
    rs.AddNew
    rs("Anvandarnamn")=Request.Form("anvnamn")
    rs("Fnamn")=Request.Form("fnamn")
    rs("Enamn")=Request.Form("enamn")
    rs("Email")=Request.Form("email")
    rs("Persnr")=Request.Form("persnr")
    rs("Startsida")=Request.Form("Startsida")
    rs.Update
    rs.close

%>
<%MinCon.close%>

Medlem sedan mars 2001309 inlägg
#2

Jag har ändrat koden lite och tycker det borde funka så här men inte ....Vad är det för fel på mig

<%
Set linCon=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.Recordset")
linCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("\tomalu\db\tomalu.mdb")
SQL="SELECT Anvandarnamn FROM medlem "
rs.Open SQL,MinCon,1,2
Do While Not rs.EOF
if rs("Anvandarnamn")=Request.Form("anvnamn") Then
response.redirect"fel.asp"
Else
rs.MoveNext
Loop
%>
<%
Set MinCon=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.Recordset")
MinCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("\tomalu\db\tomalu.mdb")
SQL="SELECT * FROM medlem WHERE 1=2"
rs.Open SQL,MinCon,1,2
rs.AddNew
rs("Anvandarnamn")=Request.Form("anvnamn")
rs("Fnamn")=Request.Form("fnamn")
rs("Enamn")=Request.Form("enamn")
rs("Email")=Request.Form("email")
rs("Persnr")=Request.Form("persnr")
rs("Startsida")=Request.Form("Startsida")
rs.Update
rs.close
%>
<%MinCon.close%>

------------------
Plikten framför Allt......

[Redigerat av Tobbster den 04 maj 2001]

Medlem sedan feb. 20001 590 inlägg
#3

Du behöver inte loopa igenom för att kolla.
Sen behöver du inte använda recordset heller.
gör något liknande detta:

SQL="SELECT Anvandarnamn FROM medlem WHERE Anvandarnamn="&Request.Form("anvnamn")

Set MinCon=Server.CreateObject("ADODB.Connection")
sqlstring= "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("\tomalu\db\tomalu.mdb")
MinCon.Open sqlstring
SET RS = MinCon.Execute(sqlstring)
if rs.EOF then
'fanns inte
else
'fanns
end if
RS.Close
MinCon.Close

/T

------------------
This is what the KLF is about

Medlem sedan mars 2001309 inlägg
#4

Nu har jag ändrat och gjort så här men det funkar INTE ändå......

<%
Set linCon=Server.CreateObject("ADODB.Connection")
sqlstring= "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("\tomalu\db\tomalu.mdb")
linCon.Open sqlstring
SET RS = linCon.Execute(sqlstring)
if rs.EOF then
Set MinCon=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.Recordset")
MinCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("\tomalu\db\tomalu.mdb")
SQL="SELECT * FROM medlem WHERE 1=2"
rs.Open SQL,MinCon,1,2
rs.AddNew
rs("Anvandarnamn")=Request.Form("anvnamn")
rs("Fnamn")=Request.Form("fnamn")
rs("Enamn")=Request.Form("enamn")
rs("Email")=Request.Form("email")
rs("Persnr")=Request.Form("persnr")
rs("Startsida")=Request.Form("Startsida")
rs.Update
rs.close
MinCon.close
else
response.redirect"main.asp"
end if
RS.Close
linCon.Close
%>

------------------
Plikten framför Allt......

Medlem sedan mars 2001309 inlägg
#5

Jag får det här felmeddelandet..

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Ogiltigt SQL-uttryck. 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' eller 'UPDATE' förväntades.
/tomalu/reg.asp, line 12

------------------
Plikten framför Allt......

Medlem sedan dec. 200012 464 inlägg
#6

Det blev visst lite sammanblandning mellan sqlsatser och connectionsträngen i förra exemplet.

<%
Set linCon=Server.CreateObject("ADODB.Connection")
connstring= "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("\tomalu\db\tomalu.mdb")
linCon.Open connstring

sql = "select 1 from medlem " & _
" WHERE Anvandarnamn = '" &_
Request.Form("anvnamn") & "'"

set rs = linCon.Execute(sql)
if rs.EOF then
found = true
sql = "insert into medlem(anvnamn, " &_ 
"fnamn,enamn,email,persnr," &_
"startsida) " &_
" values ('" & _
Request.Form("anvnamn") & "','" & _
Request.Form("fnamn")   & "','" & _
Request.Form("enamn")   & "','" & _
Request.Form("email")   & "','" & _
Request.Form("persnr")  & "','" & _
Request.Form("Startsida") & "')"
lincon.execute sql,,128
else
   found = true
end if
RS.Close
set rs = nothing
linCon.Close
set lincon = nothing
if  found then
    response.redirect "main.asp"
end if
%>

Nu förutsätter jag att alla kolumner i tabellen medlem är av typen char/varchar.

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 2001309 inlägg
#7

Nu får jag istället det här feltyps meddelandet !

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/tomalu/reg.asp, line 11

Jag använder koden jag fick av LarsG(Tack föresten) men ändrade Sqlfrågan till : SQL="SELECT * FROM medlem WHERE Anvandarnamn="&Request.Form("anvnamn")

Annars är koden exakt ....Snälla hjäl
Börjar tröttna på det här problemet snart :OO

------------------
Plikten framför Allt......

Medlem sedan dec. 200012 464 inlägg
#8

Vilken sqlsats är det som utförs på rad 11. Du kan ju lägga ut en testutskrift av strängen innan du gör execute för att se om det är ok.

Varför ändrade du i select-satsen? Om inte anvandarnamn är numeriskt så behövs apostroferna. Det fel som du får är något man ofta får om man man inte har med apostrofer eller om Request.Form("anvnamn") är tomt.

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 2001309 inlägg
#9

Det har ordnat sig...bara jag låter bli att ändra kod som personer som kan det här har skrivit...Tack för allt.......

Frågan är vad vi amatörer skulle göra utan er ?

------------------
Plikten framför Allt......

271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)