צפיות
תשובות
set cmdByRoyalty = Server.CreateObj
יש לי בעיה. יש לי דף כניסה למנהלים. יצרתי CMD של SP הוא יוצר את הפרמטר UNAME (השם שהוכנס) ובSP הוא בודק אם אכן השם בDB.
מופיעה לי הודעת השגיאה הבאה:
Microsoft VBScript runtime (0x800A01F4)
Variable is undefined: 'adCmdStoredProc'
/kodweb/Login_Go.asp, line 15
וקוד התוכנית
<%@ LANGUAGE="VBSCRIPT" CODEPAGE="1255"%>
<%Option Explicit %>
<% Response.ExpiresAbsolute = Now() – 1 %>
<% Response.Expires = 0 %>
<% Response.AddHeader "pragma","no-cache"%>
<% Response.AddHeader "cache-control","private" %>
<% Server.ScriptTimeOut=360
%>
<!–#include file="inc_files/connect_inc.asp"–>
<% Dim cmdByRoyalty, rsByRoyalty
set cmdByRoyalty = Server.CreateObject("ADODB.Command")
set rsByRoyalty = Server.CreateObject("ADODB.Recordset")
Dim strMessage
cmdByRoyalty.CommandText = "spCheckAdmin"
cmdByRoyalty.CommandType = adCmdStoredProc
Dim prmByRoyalty
prmByRoyalty = cmdByRoyalty.CreateParameter("@Uname",adChar,adParamInput)
cmdByRoyalty.Parameters.Append(prmByRoyalty)
prmByRoyalty.Value = iRoyalty
cmdByRoyalty.ActiveConnection = objconn
rsByRoyalty = cmdByRoyalty.Execute()
If rsByRoyalty.EOF Then
StrErr= "שם המשתמש או הסיסמא אינם קיימים"
Response.Redirect "Login.asp?Err1=" & StrErr
Else
Response.Redirect "index.asp"
End If
%>
והSP שלי היא
CREATE PROCEDURE spCheckAdmin
@UName varchar (15)
As
SELECT * FROM Users_TBL WHERE [email protected]
GO
תודה לעוזרים!
3 תשובות
פתרתי את הבעיה אבל נוצרה בעיה חדשה.
הודעת השגיאה
Error Type:
ADODB.Command (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/kodweb/Login_Go.asp, line 21
זה הקוד ששונה
<%@ LANGUAGE="VBSCRIPT" CODEPAGE="1255"%>
<%Option Explicit %>
<% Response.ExpiresAbsolute = Now() – 1 %>
<% Response.Expires = 0 %>
<% Response.AddHeader "pragma","no-cache"%>
<% Response.AddHeader "cache-control","private" %>
<% Server.ScriptTimeOut=360
Const adCmdStoredProc = 4
Const adVarChar = 200
%>
<!–#include file="inc_files/connect_inc.asp"–>
<%
Dim cmdByRoyalty, rsByRoyalty , strUser
strUser=request("UserName")
set cmdByRoyalty = Server.CreateObject("ADODB.Command")
set rsByRoyalty = Server.CreateObject("ADODB.Recordset")
cmdByRoyalty.CommandText = "spCheckAdmin"
cmdByRoyalty.CommandType = adCmdStoredProc
cmdByRoyalty.Parameters.Append cmdByRoyalty.CreateParameter("Uname",adVarChar,50 )
cmdByRoyalty.Parameters("Uname").Value=strUser
cmdByRoyalty.ActiveConnection = objconn
rsByRoyalty.Open cmdByRoyalty
If rsByRoyalty.EOF Then
StrErr= "שם המשתמש או הסיסמא אינם קיימים"
Response.Redirect "Login.asp?Err1=" & StrErr
Else
Response.Redirect "index.asp"
End If
%>
הסתדר, תודה
למי שמעונין הקוד התקין
Dim cmdByRoyalty, rsByRoyalty , strUser
strUser=request("UserName")
set cmdByRoyalty = Server.CreateObject("ADODB.Command")
set rsByRoyalty = Server.CreateObject("ADODB.Recordset")
cmdByRoyalty.CommandText = "spCheckAdmin"
cmdByRoyalty.CommandType = adCmdStoredProc
cmdByRoyalty.Parameters.Append = cmdByRoyalty.CreateParameter("Uname",200,1,50,strUser)
cmdByRoyalty.ActiveConnection = objconn
rsByRoyalty.Open cmdByRoyalty
If rsByRoyalty.EOF Then
StrErr= "שם המשתמש או הסיסמא אינם קיימים"
Response.Redirect "Login.asp?Err1=" & StrErr
Else
Response.Redirect "index.asp"
End If
איך ניתן לדעת האם הנתון קיים בSP
אני רוצה שאם מכניסים נתונים שאינם קימים בDB אז הוא יקבל את ההודעה "הנתון לא קיים" ואם כן אז "הנתונים נמחקו".
בקוד שלי מתבצעת רק מחיקה ללא הודעה. מכניסים נתון שלא קיים הוא מציג את אותה הודעה.
cmdInsert.Parameters.Append = cmdInsert.CreateParameter("ActionFlag",3,1,50,2)
cmdInsert.Parameters.Append = cmdInsert.CreateParameter("UName",200,1,50,strUser)
cmdInsert.Parameters.Append = cmdInsert.CreateParameter("UPass",200,1,50,strPass)
cmdInsert.Parameters.Append = cmdInsert.CreateParameter("RC",3, 2, 1)
cmdInsert.ActiveConnection = objconn
cmdInsert.Execute
If cmdInsert("RC") = 0 then
response.Write "שם המשתמש או הסיסמא קיימים"
else
If cmdInsert("RC") = 1 then
response.Write "לא קיים "
end if
End If
הקוד של SP
CREATE PROCEDURE spCheckAdmin
@ActionFlag INT,
@UName NVARCHAR (15) ,
@UPass NVARCHAR (15) ,
@RC INT OUTPUT
As
If @ActionFlag = 2
BEGIN
DELETE FROM Users_TBL WHERE
[email protected] and
[email protected]
IF @@RowCount > 0
BEGIN
SELECT @rc = 1
RETURN @rc
END
ELSE
BEGIN
SELECT @rc = 0
RETURN @rc
END
END
GO