Я получаю вышеуказанную ошибку сейчас, когда запускаю одну из моих страниц ASPX, написанных на VB.NET. Поэтому я попытался найти решение по адресу:
http://msdn.microsoft.com/en-us/library/zwwhc0d0(v=vs.80).aspx
Приведенная выше ссылка казалась многообещающей, потому что она точно описывала мою проблему. Однако из этого решения я получил следующую ошибку:
Сообщение об ошибке компилятора: BC30456:
«GlobalF2» не является членом
Строка «GlobalFunctions» 88:
DSProductData =
GlobalFunctions.GlobalF2.ComplaintTrendingDrillDown3p (FirstMonthDate,
LastMonthDate, TheLevel, ProductGroup,
TheCategory, ListNumber)
А вот мой модифицированный исходный код, вызывающий эту ошибку, но основанный на решении Майка Смита:
Namespace GlobalFunctions
Public Class GlobalF
Public Function ComplaintTrendingDrillDown3p(ByVal FirstMonth As DateTime, ByVal LastMonth As DateTime, ByVal rowLevel As Integer, ByVal productGroup As String, ByVal category As String, ByVal ListNumber As String) As DataSet
Dim DSPageData As New System.Data.DataSet
Dim param(5) As SqlClient.SqlParameter
param(0) = New SqlParameter("@FirstMonthDate", SqlDbType.DateTime)
param(0).Value = FirstMonth
param(1) = New SqlParameter("@LastMonthDate", SqlDbType.DateTime)
param(1).Value = LastMonth
param(2) = New SqlParameter("@TheLevel", SqlDbType.Int)
param(2).Value = rowLevel
param(3) = New SqlParameter("@ProductGroup", SqlDbType.Varchar)
param(3).Value = productGroup
param(4) = New SqlParameter("@TheCategory", SqlDbType.Varchar)
param(4).Value = category
param(5) = New SqlParameter("@ListNumber", SqlDbType.Varchar)
param(5).Value = ListNumber
''# A Using block will ensure the .Dispose() method is called for these variables, even if an exception is thrown
''# This is IMPORTANT - not disposing your connections properly can result in an unrespsonsive database
Using conn As New SQLConnection(ConfigurationSettings.AppSettings("AMDMetricsDevConnectionString")), _
cmd As New SQLCommand("ComplaintTrendingDrillDown3p", conn), _
da As New SQLDataAdapter(cmd)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddRange(param)
da.Fill(DSPageData)
End Using
Return DSPageData
End Function
End Class
Public Class CallingClass
Dim GlobalF2 As New GlobalF
Public Function ComplaintTrendingDrillDown3p(ByVal FirstMonth As DateTime, ByVal LastMonth As DateTime, ByVal rowLevel As Integer, ByVal productGroup As String, ByVal category As String, ByVal ListNumber As String) As DataSet
Dim DSPageData As New System.Data.DataSet
Dim param(5) As SqlClient.SqlParameter
param(0) = New SqlParameter("@FirstMonthDate", SqlDbType.DateTime)
param(0).Value = FirstMonth
param(1) = New SqlParameter("@LastMonthDate", SqlDbType.DateTime)
param(1).Value = LastMonth
param(2) = New SqlParameter("@TheLevel", SqlDbType.Int)
param(2).Value = rowLevel
param(3) = New SqlParameter("@ProductGroup", SqlDbType.Varchar)
param(3).Value = productGroup
param(4) = New SqlParameter("@TheCategory", SqlDbType.Varchar)
param(4).Value = category
param(5) = New SqlParameter("@ListNumber", SqlDbType.Varchar)
param(5).Value = ListNumber
''# A Using block will ensure the .Dispose() method is called for these variables, even if an exception is thrown
''# This is IMPORTANT - not disposing your connections properly can result in an unrespsonsive database
Using conn As New SQLConnection(ConfigurationSettings.AppSettings("AMDMetricsDevConnectionString")), _
cmd As New SQLCommand("ComplaintTrendingDrillDown3p", conn), _
da As New SQLDataAdapter(cmd)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddRange(param)
da.Fill(DSPageData)
End Using
Return DSPageData
End Function
End Class
End Namespace
Я думаю, что Майк Смит прав насчет того, чтобы не использовать Shared, потому что я думаю, что это вызвало эту проблему. Тем не менее, я новичок в VB.NET, и я не уверен, как еще объявить экземпляр как переменную объекта, а затем ссылаться на этот экземпляр по имени переменной. Вы можете помочь?
Хорошо, ваше решение выглядело очень хорошо для меня. Я хочу убедиться, что я реализовал это правильно, хотя. Можете ли вы сравнить мой с Урсом?
Теперь я получаю ту же ошибку, которая была у меня изначально ... Может быть, это перезаписывает данные в таблице?
Dim gf As New GlobalFunctions.CallingClass
DSProductData = gf.GlobalF2.ComplaintTrendingDrillDown3p(FirstMonthDate, LastMonthDate, TheLevel, ProductGroup, TheCategory, ListNumber)
...
Public Class CallingClass
Public GlobalF2 As New GlobalF
'Public Function CallingClass(ByVal FirstMonth As DateTime, ByVal LastMonth As DateTime, ByVal rowLevel As Integer, ByVal productGroup As String, ByVal category As String, ByVal ListNumber As String)
' Dim cc_new As New CallingClass()
'End Function
Public Function ComplaintTrendingDrillDown3p(ByVal FirstMonth As DateTime, ByVal LastMonth As DateTime, ByVal rowLevel As Integer, ByVal productGroup As String, ByVal category As String, ByVal ListNumber As String) As DataSet
Dim DSPageData As New System.Data.DataSet
Dim param(5) As SqlClient.SqlParameter
param(0) = New SqlParameter("@FirstMonthDate", SqlDbType.DateTime)
param(0).Value = FirstMonth
param(1) = New SqlParameter("@LastMonthDate", SqlDbType.DateTime)
param(1).Value = LastMonth
param(2) = New SqlParameter("@TheLevel", SqlDbType.Int)
param(2).Value = rowLevel
param(3) = New SqlParameter("@ProductGroup", SqlDbType.Varchar)
param(3).Value = productGroup
param(4) = New SqlParameter("@TheCategory", SqlDbType.Varchar)
param(4).Value = category
param(5) = New SqlParameter("@ListNumber", SqlDbType.Varchar)
param(5).Value = ListNumber
''# A Using block will ensure the .Dispose() method is called for these variables, even if an exception is thrown
''# This is IMPORTANT - not disposing your connections properly can result in an unrespsonsive database
Using conn As New SQLConnection(ConfigurationSettings.AppSettings("AMDMetricsDevConnectionString")), _
cmd As New SQLCommand("ComplaintTrendingDrillDown3p", conn), _
da As New SQLDataAdapter(cmd)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddRange(param)
da.Fill(DSPageData)
End Using
Return DSPageData
End Function
End Class
и ошибка:
System.ArgumentException: столбец
QXP_SHORT_DESC не принадлежит
Стол Стол.
Оскорбительная строка:
Если pException ("QXP_SHORT_DESC") =
TheCategory Тогда