对象引用未设置为对象的实例 [英] Object reference is not set to the instance of an object
问题描述
这是我的代码,我是VB.net的新手,异常os未处理,对象引用未设置为对象的实例。在数据库中所有都是int我从VB.Net和ID传递是自动增量,我该怎么办,
This is my code , i am new to VB.net, exception os unhandled that object reference is not set to the instance of an object. in data base all are int which i m passing from VB.Net and ID is auto increment, what should i do,
Public Class Maintainance
Dim cn As New System.Data.SqlClient.SqlConnection
Sub connect()
cn = New System.Data.SqlClient.SqlConnection("Data Source=localhost;Initial Catalog=Fleet Maintainance;Integrated Security=True")
End Sub
Sub lockall()
cBx1.Enabled = False
cBx2.Enabled = False
tBx1.Enabled = False
tBx2.Enabled = False
tBx3.Enabled = False
End Sub
Sub unlockall()
cBx1.Enabled = True
cBx2.Enabled = True
tBx1.Enabled = True
tBx2.Enabled = True
tBx3.Enabled = True
End Sub
Sub setall()
cBx1.Text = ""
cBx2.Text = ""
tBx1.Text = ""
tBx2.Text = ""
tBx3.Text = ""
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Try
If cBx1.Enabled = True Then
Dim str As String
str = "insert into AddMaintainanceTask (MainID, TypeID, PartCost, LaborCost, Total) values (" & (cBx1.SelectedValue.ToString()) & ", " & (cBx2.SelectedValue.ToString()) & ", " & CInt(tBx1.Text) & "," & CInt(tBx2.Text) & "," & CInt(tBx3.Text) & ")"
Call connect()
Dim cd As New System.Data.SqlClient.SqlCommand(str, cn)
cd.Connection.Open()
cd.ExecuteNonQuery()
cd.Connection.Close()
MsgBox(" New Task is added successfully ")
Call lockall()
Me.Close()
Call IssueWorkOrder.listView2load()
Else
MsgBox(" Task is not added Try again ")
End If
'Catch ex As Exception
'MsgBox(" Invalid Try agian ")
'End Try
End Sub
Sub updatecombo1()
Call connect()
Dim cd As New System.Data.SqlClient.SqlCommand("SELECT [Name],[NameID] FROM [RepairName] order by [Name]", cn)
Dim adp As New System.Data.SqlClient.SqlDataAdapter(cd)
Dim ds As New DataSet
adp.Fill(ds)
'ComboBox2.Items.Clear()
cBx1.DisplayMember = "Name"
cBx1.ValueMember = "NameID"
cBx1.DataSource = ds.Tables(0)
End Sub
Sub updatecombo2()
Call connect()
Dim cd As New System.Data.SqlClient.SqlCommand("SELECT [RepairType],[RepairTypeID] FROM [RepairType] order by [RepairType]", cn)
Dim adp As New System.Data.SqlClient.SqlDataAdapter(cd)
Dim ds As New DataSet
adp.Fill(ds)
'ComboBox2.Items.Clear()
cBx2.DisplayMember = "RepairType"
cBx2.ValueMember = "RepairTypeID"
cBx2.DataSource = ds.Tables(0)
End Sub
Sub updatecombo3()
Call connect()
Dim cd As New System.Data.SqlClient.SqlCommand("SELECT [Service],[ServiceID] FROM [Service] order by [Service]", cn)
Dim adp As New System.Data.SqlClient.SqlDataAdapter(cd)
Dim ds As New DataSet
adp.Fill(ds)
'ComboBox2.Items.Clear()
cBx1.DisplayMember = "Service"
cBx1.ValueMember = "ServiceID"
cBx1.DataSource = ds.Tables(0)
End Sub
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
RadioButton1.Text = "Preventive"
End Sub
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
RadioButton2.Text = "Repair"
End Sub
Private Sub RadioButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.Click
Call updatecombo3()
Label3.Text = "Service"
cBx2.Enabled = False
End Sub
Private Sub RadioButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.Click
Call updatecombo1()
Call updatecombo2()
Label3.Text = "Repair"
cBx2.Enabled = True
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
AddService.Show()
AddService.Visible = True
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
Private Sub Maintainance_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub tBx3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tBx3.TextChanged
End Sub
End Class
推荐答案
我知道,我的回答是主题,但我想给一个正确的代码优化方向:
您的代码:
I know, my answer is of-topic, but i would like to give a right direction to code optimization:
Your code:
Sub lockall()
cBx1.Enabled = False
cBx2.Enabled = False
tBx1.Enabled = False
tBx2.Enabled = False
tBx3.Enabled = False
End Sub
Sub unlockall()
cBx1.Enabled = True
cBx2.Enabled = True
tBx1.Enabled = True
tBx2.Enabled = True
tBx3.Enabled = True
End Sub
可以更改如下:
Can be changed as follow:
Sub LockUnlockAll(Optional bState AS Boolean = False)
cBx1.Enabled = bState
cBx2.Enabled = bState
tBx1.Enabled = bState
tBx2.Enabled = bState
tBx3.Enabled = bState
End Sub
了解可选参数 [ ^ ]和/或可选参数(VB) ) [ ^ ]。
3对象引用...最常见的原因错误:http://codebetter.com/raymondlewallen/2005 / 06/23 / system-nullreferenceexception-object-reference-not-set-to-an-an-object-3-common-cause-in-vb-net / [ ^ ]
Read about Optional Arguments[^] and/or Optional Parameters (VB)[^].
3 most popular reasons of "Object reference..." error: http://codebetter.com/raymondlewallen/2005/06/23/system-nullreferenceexception-object-reference-not-set-to-an-instance-of-an-object-3-common-causes-in-vb-net/[^]
这篇关于对象引用未设置为对象的实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!