2011-09-22 110 views
-1

我有点在这里有点疯狂。我将我的Web应用程序移动到一个服务器,并在下面得到这个错误,但在我的本地主机上,它工作得很好。我有点失去了我应该尝试的东西。任何帮助将非常感激。我发现,当我为每个语句执行操作时,错误必须与数据集不会撤回任何数据有关。但奇怪的是,我为另一个页面上的每个语句做了一个并且它工作正常。这是我的每一个陈述,即时通讯假设不起作用。究其原因IM假定其B/C当我测试它在当地的正常工作:本地服务器与Vs.生产服务器

Dim retObj As New ClassLibrary1.sql_class 

For Each row As DataRow In retObj.sel_all_email_list(company).tables(0).rows 
    email += row("EMAIL_ADDRESS") & "/" 
Next 

* ** * ** * ** * ** * ** * ** * ** * ** * ** * * sql_class

query = "SELECT * " _ 
      & " FROM EMAIL_LIST " _ 
      & " WHERE UCASE(COMPANY) = '" & company & "'" 

Dim adapter As New OleDbDataAdapter(query, myConnection) 
Dim ds As New DataSet 

     Try 
      myConnection.Open() 
      adapter2.Fill(ds, "test_table") 

     *returns the dataset, didnt want to type all of the code 

     Catch ex As Exception 

     Finally 
      myConnection.Close() 
     End Try 

'***************************************************** 
Error: 
Exception Details: System.IndexOutOfRangeException: Cannot find table 0. 
+3

没有代码上下文,异常消息是没有用的。 –

+0

即使开始猜测也没有足够的上下文 – khr055

+0

您是否更改连接字符串? – Jack

回答

1

检查生产中运行的SQL DB。

用于填充数据集的SQL语句不返回任何数据。这导致数据集没有任何表。

因此,当您拨打Dataset.Tables(0)时,会出现一个System.IndexOutOfRangeException(因为Tables集合中没有表格)。

通过调用Dataset.Tables.Count以确保它在尝试访问集合之前有项目,可以减轻这一负担。

If retObj.sel_all_email_list(company).tables.count > 0 Then 
'Do something 
End If