Imports System
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Text
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports System.Configuration
Imports CRM.LogConfigXML.UserSysLogXmlPublic Class Login........
.........
Dim ULXML As LogConfigXML.UserSysLogXml = New LogConfigXML.UserSysLogXml("../XML/LogConfigXML.XML")
                        Dim ds As DataSet = ExecuteSQL(sql)
                        ' Try                出错 --->  If ds.Tables(0).Rows.Count > 0 Then
                        end if 
   Private Function Get_ContextByID(ByVal strSQL As String, ByVal fieldStr As String) As String
        Dim errmsg As String
        Dim ds As DataSet = ExecuteSQL(strSQL) ---->这里却没有问题
        Try
            If ds.Tables(0).Rows.Count > 0 Then
                Get_ContextByID = ds.Tables(0).Rows(0)(fieldStr).ToString()
            Else
                Get_ContextByID = ""
            End If
        Catch ex As Exception
            Response.Write(ex.Message)
        Finally
            ds = Nothing
        End Try
        ds = Nothing
    End Function
end class 为什么呀??

解决方案 »

  1.   

    Dim ds As DataSet = ExecuteSQL(sql)
    ---------------------------------〉
    这儿你的sql是什么样的??
      

  2.   

    可能是sql语句有问题,或者查询结果是空的
      

  3.   

    sql = " Select  DISTINCT " _
    & " USER_TAB.*, " _
    & " TEAM_TAB.TEAM_CODE,TEAM_TAB.TEAM_ID," _
    & " DEPARTMENT_TAB.DEPARTMENT_CODE,DEPARTMENT_TAB.DEPARTMENT_ID, " _
    & " OFFICE_TAB.OFFICE_CODE,OFFICE_TAB.OFFICE_ID, " _
    & " COUNTRY_TAB.COUNTRY_CODE,COUNTRY_TAB.COUNTRY_ID, " _
    & " POSITION_TAB.POSITION_CODE,POSITION_TAB.POSITION_ID, " _
    & " USERGROUP_TAB.UGROUP_USERID,USERGROUP_TAB.UGROUP_GROUPID," _
    & " GROUP_TAB.GROUP_ID,GROUP_TAB.GROUP_CODE FROM " _
    & "(( " _
    & " ( " _
    & " ( " _
    & " ( " _
    & " ( " _
    & " (USER_TAB Left join TEAM_TAB  on USER_TAB.USER_TEAMID=TEAM_TAB.TEAM_ID)" _
    & "   Left join DEPARTMENT_TAB  on USER_TAB.USER_DEPARTMENTID=DEPARTMENT_TAB.DEPARTMENT_ID ) " _
    & "     Left join OFFICE_TAB  on USER_TAB.USER_OFFICEID=OFFICE_TAB.OFFICE_ID ) " _
    & "       Left Join COUNTRY_TAB  on USER_TAB.USER_COUNTRYID=COUNTRY_TAB.COUNTRY_ID) " _
    & "          Left join POSITION_TAB  on USER_TAB.USER_POSITIONID=POSITION_TAB.POSITION_ID ) " _
    & "            left join USERGROUP_TAB on USER_TAB.USER_ID=USERGROUP_TAB.UGROUP_USERID ) " _
    & "              left join GROUP_TAB on USERGROUP_TAB.UGROUP_GROUPID=GROUP_TAB.GROUP_ID ) " _
    & "   WHERE " _
    & "     USER_TAB.USER_MAERSKID='" & MaerskIDparam & "' and USER_TAB.USER_PASSWORD='" & PWDparam & "' "我没有试过是不是空的,到没有想到是不是这种原因,我先在分析器里面运行一下
    但是如果是空的也不会出错吧,因为 If ds.Tables(0).Rows.Count > 0 Then 就是用来判断是否为空呀,郁闷中.....
      

  4.   

    1 XKJ001 Justin,Xiao 1789 1 7 7 1 1 8088xjqa BPI 7 SZHLOGBPI 7 SZH 1 CN 1 NORMAL STAFF 1 NULL NULL NULL NULL
    在查询分析器中运行有结果呀,
      

  5.   

    应该是executesql只执行了sql语句,没有返回dataset
    但vb.net里应该没有executesql这个方法,你的是哪儿来的?
      

  6.   

    to:  douguangyao(asp小学生) ( 
    如果是少了new 来实例化对象的话,
    Dim ds As DataSet = ExecuteSQL(sql) 《---------这里就会报错,不会在下面出现错误
    而且这里应该不需要new吧
      

  7.   

    to : athossmth(athos) Private Function ExecuteSQL(ByVal strSQL As String) As DataSet
            Dim errMsg As String
            Dim cnn As SqlClient.SqlConnection
            Dim cmd As New SqlClient.SqlCommand
            Dim adpt As SqlClient.SqlDataAdapter
            Dim rst As New DataSet
            Dim SplitSQL() As String        errMsg = ""
            Try
                SplitSQL = Split(strSQL)
                cnn = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("CRMStrconn"))            If InStr("INSERT,DELETE,UPDATE", UCase$(SplitSQL(0))) Then
                    cmd.Connection = cnn
                    cmd.Connection.Open()
                    cmd.CommandText = strSQL
                    cmd.ExecuteNonQuery()
                Else
                    adpt = New SqlClient.SqlDataAdapter(strSQL, cnn)
                    adpt.Fill(rst)
                    ExecuteSQL = rst
                End If
            Catch ex As Exception
                errMsg = ex.Message
                Response.Write("<script language='javascript'>alert('" & errMsg & "');</script>")
            Finally
                rst = Nothing
                cnn = Nothing
            End Try
        End Function如果是ExecuteSQL()方法出错就会在这里面被捕获到,且我的SQL的查询分析器中已测试,有记录