日期:2014-05-19  浏览次数:20429 次

为什么获取url参数id,作为update的条件,会“标准表达式中数据类型不匹配”
strSQL   =   "SELECT   *   FROM   client_tbl   WHERE   clie_id= '   "   &   Request.QueryString( "clie_id ")   &   "   ' "
                        Response.Write( "strSQL ")
                        objCmd   =   New   Data.OleDb.OleDbCommand(strSQL,   objCon)
                        '   获取DataReader对象
                        clientDR   =   objCmd.ExecuteReader()   '源错误提示在这里。
                        '   获取数据表的记录
                        clientDR.Read()

                        clie_chname.Text   =   clientDR.Item( "clie_chname ")
                        clie_enname.Text   =   clientDR.Item( "clie_enname ")
                        clie_chadd.Text   =   clientDR.Item( "clie_chadd ")
                        ......
                        clientDR.Close()   '关闭datareader
                        objCon.Close()

从主页面client.aspx里的datagrid里点击任意一条记录,进入这个clientdetail.aspx?clie_id=***,   我想在这个页面里实现记录的显示,然后再更新的。现在就尝试这先显示这些记录,就遇到了问题。

------解决方案--------------------
clie_id 应该是int的吧
strSQL = "SELECT * FROM client_tbl WHERE clie_id= " & Request.QueryString( "clie_id ")
------解决方案--------------------
clie_id字段是什么类型,int类型的可以把单引号去掉
------解决方案--------------------
sql语句拼接估计有问题

建议不要用拼接的方式,而是用参数形式
------解决方案--------------------
同意!顶楼上的。
------解决方案--------------------
strSQL = "SELECT * FROM client_tbl WHERE clie_id= ' " +Convert.ToInt32(Request.QueryString( "clie_id ")) + " ' "
------解决方案--------------------
有的字段为空,不能强制转换
If clientDR.Item( "clie_chname ") <> DBNull.Value Then
clie_chname.Text = clientDR.Item( "clie_chname ")
Else
clie_chname.Text = String.Empty
End If
------解决方案--------------------
有的字段肯定是空了,要判断一下的。
加个函数判断一下
Function showNull(value As String ) As String
If value = " " Then
Return "[N/A] "
Else
Return value
End If
End Function

------解决方案--------------------
Request.QueryString得到的值是string的。
想办法用ConvertoInt32转换一下啥