主题:  关于同在一个页面查询两次数据库的问题

网络小精灵

职务:普通成员
等级:3
金币:1.1
发贴:761
#12005/11/29 13:55:17
问题是这样的,我在在同一个页面增加产品大类的时候要查询一下数据库里有没有相同的字符,如果有提示不能加入,现在的问题是中文大类名称的可以查询,英文大类名称的不能查询,请问下面的代码有什么问题吗?
注:中文大类的字体名为BigClassName,英文大类的字段字为en_BigClassName

<%
dim Action,BigClassName,en_BigClassName,rs,FoundErr,ErrMsg
Action=trim(Request("Action"))
BigClassName=trim(request("BigClassName"))
Action=trim(Request("Action"))
en_BigClassName=trim(request("en_BigClassName"))
if Action="Add" then
if FoundErr<>True then
        Set rs=Server.CreateObject("Adodb.RecordSet")
        rs.open "Select * From BigClass Where BigClassName='" & BigClassName & "'",conn,1,3
        if not (rs.bof and rs.EOF) then
            FoundErr=True
            ErrMsg=ErrMsg & "<br><li>产品中文大类“" & BigClassName & "”已经存在!</li>"
else
         rs.addnew
        rs("BigClassName")=BigClassName        
        rs("en_BigClassName")=en_BigClassName
         rs.update
        rs.Close         
         set rs=Nothing
         call CloseConn()
            Response.Redirect "ClassManage.asp"
        end if
    end if
'''''''add english prodcution type''''''''
if FoundErr<>True then
        Set rs=Server.CreateObject("Adodb.RecordSet")
        rs.open "Select * From BigClass Where En_BigClassName='" & En_BigClassName & "'",conn,1,3
        if not (rs.bof and rs.EOF) then
            FoundErr=True
            ErrMsg=ErrMsg & "<br><li>产品英文大类“" & En_BigClassName & "”已经存在!</li>"
else
         rs.addnew
        rs("BigClassName")=BigClassName        
        rs("en_BigClassName")=en_BigClassName
         rs.update
        rs.Close         
         set rs=Nothing
         call CloseConn()
            Response.Redirect "ClassManage.asp"
        end if
    end if
''''over add'''''''''''''''''''''

end if


if FoundErr=True then
    call WriteErrMsg()
else
%>

编辑历史:[此帖最近一次被 Gzink 编辑过(编辑时间:2005-11-29 15:59:33)]


浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#22005/11/29 15:38:53
这样设计数据库太累了。没必须打开两次数据加呀,一次就可以了,在SQL语句中用个组合条件就可以了。
好像有些逻辑问题,你的FoundErr参数从哪里来的?(第一个FoundErr参数)



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#32005/11/29 15:53:44
Response.Redirect "ClassManage.asp" 直接转向了...



网络小精灵

职务:普通成员
等级:3
金币:1.1
发贴:761
#42005/11/29 19:16:38
谢谢allinhands的提示,已经修改好。。。
具体代码如下:
<%
dim Action,BigClassName,en_BigClassName,rs,FoundErr,ErrMsg
Action=trim(Request("Action"))
BigClassName=trim(request("BigClassName"))
Action=trim(Request("Action"))
en_BigClassName=trim(request("en_BigClassName"))
if Action="Add" then
if FoundErr<>True then
        Set rs=Server.CreateObject("Adodb.RecordSet")
        rs.open "Select * From BigClass Where BigClassName='" & BigClassName & "'",conn,1,3
        if not (rs.bof and rs.EOF) then
            FoundErr=True
            ErrMsg=ErrMsg & "<br><font size=1pt color=red>产品中文大类“" & BigClassName & "”已经存在!</font>"          
        end if
    end if
'''''''add english prodcution type''''''''
if FoundErr<>True then
        Set rs=Server.CreateObject("Adodb.RecordSet")
        rs.open "Select * From BigClass Where En_BigClassName='" & En_BigClassName & "'",conn,1,3
        if not (rs.bof and rs.EOF) then
            FoundErr=True
            ErrMsg=ErrMsg & "<br><font size=1pt color=red>产品英文大类“" & En_BigClassName & "”已经存在!</font>"
else
         rs.addnew
        rs("BigClassName")=BigClassName        
        rs("en_BigClassName")=en_BigClassName
         rs.update
        rs.Close         
         set rs=Nothing
         call CloseConn()
            Response.Redirect "ClassManage.asp"
        end if
    end if
end if
if FoundErr=True then
    call WriteErrMsg()
else
%>



网络小精灵

职务:普通成员
等级:3
金币:1.1
发贴:761
#52005/11/29 19:18:35
diffmaker在上个帖子中说
引用:
这样设计数据库太累了。没必须打开两次数据加呀,一次就可以了,在SQL语句中用个组合条件就可以了。
好像有些逻辑问题,你的FoundErr参数从哪里来的?(第一个FoundErr参数)



呵呵,请教这位前辈是怎么样设置数据库的。。。
在SQL语句里怎么组合条件呀??
代码不是我写的,我只是在原基础上加功能。。