我有这个新的vb.net项目(MedicalCost)有这个错误“'MedicalCost.Constants'的类型初始化程序引发了异常。”在运行sub时我已经在我之前的项目中完成了这一切,当我在我的模块上声明公共变量但现在在我当前的项目中它无效时,一切正常。
这是我模块上的代码(常量):
Imports System.Data.Sql
Imports System.Data.SqlClient
Imports System.Data.Odbc
Imports System.Windows.Forms
Public Module Constants
Public ppiconn As New SqlConnection("Dsn=pandiman2002connectdsn;server=ppi;uid=sa;database=Pandimandata2002")
'Dsn=pandiman2002connectdsn;description=PPI Database;uid=sa;app=Microsoft® Visual Studio® 2010;wsid=CRWUSER17-PC;database=Pandimandata2002
Public da As New SqlDataAdapter
Public comm As New SqlCommand
Public dr As SqlDataReader
Public ds As New DataSet
Public x As String
End Module
当我在我的frm_add
上运行sub时这是我的代码
Sub search_crew()
Try
x = "(isnull(ltrim(rtrim(firstname)),'') + ' ' + isnull(ltrim(rtrim(mi)),'') + ' ' + " _
& "isnull(ltrim(rtrim(lastname)),'') like '%" & Replace(searchbox.Text, " ", "%") & "%' " _
& " or isnull(ltrim(rtrim(lastname)),'') + ' ' + isnull(ltrim(rtrim(mi)),'') + ' ' + " _
& "isnull(ltrim(rtrim(firstname)),'') like '%" & Replace(searchbox.Text, " ", "%") & "%' " _
& "or legal_records.caseno like '%" & UCase(searchbox.Text) & "%')"
ppiconn.Close()
ppiconn.Open()
Pandimandata2002DataSet.EnforceConstraints = False
da = New SqlDataAdapter(select_tblcrw & "where " & x, ppiconn)
da.Fill(Pandimandata2002DataSet.tblCrew)
da.Dispose()
ppiconn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
我注意到从模块声明的任何变量都是这个错误“'MedicalCost.Constants'的类型初始化器引发异常的原因。”发生。
任何人都可以帮助我。我花了1个小时搜索这个错误,并没有帮助我。 TNX!答案 0 :(得分:7)
问题几乎肯定是以下代码行
Public ppiconn As New SqlConnection("Dsn=pandiman2002connectdsn;server=ppi;uid=sa;database=Pandimandata2002")
此处的密钥是错误消息中的type initializer
。当静态数据的初始化引发异常时会发生这种情况。对于VB.Net,这将映射到Modules
的{{1}}或Shared
字段的字段。在这种情况下,错误指向Class
,这是唯一的初始化程序,因此可能会受到指责。
为了找出发生这种情况的原因,您需要找到触发Constants
错误的异常。只需调试应用程序等待错误,展开type initializer
属性,该属性应该包含真正的错误
答案 1 :(得分:0)
在公共定义的模块中有初始化程序的这个问题 - 使用它将初始化程序移动到表单 - 仍然作为公共。问题消失了。
答案 2 :(得分:0)
当我更新对第三方DLL的引用时,出现此错误。在已安装的程序中创建主窗体时出现错误“ {myForm}的类型初始值设定项引发了异常”,并且程序在显示初始屏幕的情况下暂停了。调试器没有帮助,因为程序在调试器中正确运行。原来,我的安装程序未包含DLL的某些更新的第三方依赖关系。一旦确定了更新的依赖项并由安装程序将其添加到程序文件夹中,程序就可以正确运行。