存储过程无法正常工作 [英] Stored procedure not working
问题描述
这是我想打电话的程序
私人子展示()
TxtName.Text = Ds.Tables( LEDG)。行(Rc)(名称)。ToString
CmbGrp.Text = Ds.Tables(LEDG)。行(Rc)(Grp)。ToString
TxtAdd1.Text = Ds.Tables(LEDG)。行(Rc)(Add1)。ToString
TxtAdd2.Text = Ds.Tables(LEDG)。行(Rc)(Add2)。ToString
CmbCity.Text = Ds.Tables(LEDG)。行(Rc)(城市)。ToString
TxtDist.Text = Ds.Tables(LEDG)。行(Rc)( Dist)。ToString
TxtPIN.Text = Ds.Tables(LEDG)。Rows(Rc)(Pincode)。ToString
DBState.Text = Ds.Tables(LEDG)。 Rows(Rc)(State)。ToString
TxtEmail.Text = Ds.Tables(LEDG)。Rows(Rc)(Email)。ToString
TxtPhone.Text = Ds.Tables (LEDG)。行(Rc)(固定电话)。ToString
TxtMob.Text = Ds.Tables(LEDG)。行(Rc)(移动)。ToString
TxtVAT .Text = Ds.Tables(LEDG)。行(Rc)(VATNO)。ToString
TxtCST.Text = Ds.Tables(LEDG)。行(Rc) (CSTNO)。ToString
TxtGST.Text = Ds.Tables(LEDG)。行(Rc)(GSTNO)。ToString
TxtPAN.Text = Ds.Tables(LEDG) ).Rows(Rc)(PAN)。ToString
End Sub
这是我的地方称之为
Private Sub BtnFirst_Click_1(发送者作为对象,e作为EventArgs)处理BtnFirst.Click
Dim Da As New MySqlDataAdapter
Dim Ds As New DataSet
SqlQuery =Select * from Ledgers
Sqlcommand = New MySqlCommand(SqlQuery,Conn)
count = Sqlcommand.ExecuteScalar
Da.SelectCommand = Sqlcommand
Da.Fill(Ds,LEDG)
Rc = 0
显示()
结束子
得到错误对象引用未设置为对象的实例。
我尝试过:
当我尝试
Private Sub BtnFirst_Click_1(发件人作为对象, e As EventArgs)处理B. tnFirst.Click
Dim Da As New MySqlDataAdapter
Dim Ds As New DataSet
SqlQuery =Select * from Ledgers
Sqlcommand = New MySqlCommand(SqlQuery,Conn)
count = Sqlcommand.ExecuteScalar
Da.SelectCommand = Sqlcommand
Da.Fill(Ds,LEDG)
Rc = 0
TxtName.Text = Ds.Tables(LEDG) ).Rows(Rc)(Name)。ToString
CmbGrp.Text = Ds.Tables(LEDG)。Rows(Rc)(Grp)。ToString
TxtAdd1.Text = Ds .Tables(LEDG)。行(Rc)(Add1)。ToString
TxtAdd2.Text = Ds.Tables(LEDG)。行(Rc)(Add2)。ToString
CmbCity.Text = Ds.Tables(LEDG)。行(Rc)(城市)。ToString
TxtDist.Text = Ds.Tables(LEDG)。行(Rc)(Dist) ).ToString
TxtPIN.Text = Ds.Tables(LEDG)。行(Rc)(Pincode)。ToString
DBState.Text = Ds.Tables(LEDG)。行( Rc)(State)。ToString
TxtEmail.Text = Ds.Tables(LEDG)。Rows(Rc)(Email)。ToString
TxtPhone.Text = Ds.Tables(LEDG)。行(Rc)(Landline)。ToString
TxtMob.Text = Ds.Tables(LEDG)。行(Rc)(移动) .ToString
TxtVAT.Text = Ds.Tables(LEDG)。行(Rc)(VATNO)。ToString
TxtCST.Text = Ds.Tables(LEDG)。行(Rc )(CSTNO)。ToString
TxtGST.Text = Ds.Tables(LEDG)。行(Rc)(GSTNO)。ToString
TxtPAN.Text = Ds.Tables(LEDG ).Rows(Rc)(PAN)。ToString
End Sub
一切正常运行>
请帮助
首先阅读这些文章:
Microsoft .NET中的变量和方法范围 [ ^ ]
Visual Basi中的范围c | Microsoft Docs [ ^ ]
简而言之:在您的情况下对象引用未设置为实例一个对象
错误消息说DS
变量在显示
过程中是不可能的,因为已在tnFirst_Click_1
过程中创建并启动。
您可以通过将数据集作为参数传递到<$来解决此问题c $ c>显示程序(推荐)或在tnFirst_Click_1
程序之外定义DS
变量(不推荐)。
私有 Sub BtnFirst_Click_1(发件人作为 对象,e As EventArgs)句柄 BtnFirst.Click
Dim Da As 新 MySqlDataAdapter
Dim Ds As 新 DataSet
' 部分启动Ds变量的代码
' ...
' finally:
显示(Ds)
结束 Sub
私有 Sub 显示( ByRef ds As DataSet)
' 您的代码
结束 Sub
详情请见:
如何:控制变量的范围(Visual Basic)| Microsoft Docs [ ^ ]
了解变量的范围 [ ^ ]
Visual Basic中的过程Microsoft Docs [ ^ ]
按值和引用传递参数(Visual Basic)| Microsoft Docs [ ^ ]
嗨声明Dim Ds作为新数据集在课程开始时
当您在函数级别声明数据集时,您无法在函数外部使用该数据集,或者您可以使用此变量的基本编程规则范围
私有子显示(byVal Ds as DataSet)
TxtName.Text = Ds.Tables(LEDG)。行(Rc) (名称)。ToString
CmbGrp.Text = Ds.Tables(LEDG)。行(Rc)(Grp)。ToString
TxtAdd1.Text = Ds.Tables(LEDG) ).Rows(Rc)(Add1)。ToString
TxtAdd2.Text = Ds.Tables(LEDG)。Rows(Rc)(Add2)。ToString
CmbCity.Text = Ds .Tables(LEDG)。行(Rc)(City)。ToString
TxtDist.Text = Ds.Tables(LEDG)。行(Rc)(Dist)。ToString
TxtPIN.T ext = Ds.Tables(LEDG)。行(Rc)(Pincode)。ToString
DBState.Text = Ds.Tables(LEDG)。行(Rc)(状态)。ToString
TxtEmail.Text = Ds.Tables(LEDG)。行(Rc)(电子邮件)。ToString
TxtPhone.Text = Ds.Tables(LEDG)。行(Rc)( 固定电话)。ToString
TxtMob.Text = Ds.Tables(LEDG)。行(Rc)(移动)。ToString
TxtVAT.Text = Ds.Tables(LEDG) .Rows(Rc)(VATNO)。ToString
TxtCST.Text = Ds.Tables(LEDG)。行(Rc)(CSTNO)。ToString
TxtGST.Text = Ds。表(LEDG)。行(Rc)(GSTNO)。ToString
TxtPAN.Text = Ds.Tables(LEDG)。行(Rc)(PAN)。ToString
结束子
私有子BtnFirst_Click_1(发件人为对象,e为EventArgs)处理BtnFirst.Click
Dim Da As New MySqlDataAdapter
Dim Ds As New DataSet
SqlQuery =Select * from Ledgers
Sqlcommand = New MySqlCommand(SqlQuery,Conn)
count = Sqlcommand.ExecuteScalar
Da.SelectCommand = Sqlcommand
Da.Fill(Ds,LEDG)
Rc = 0
显示(Ds)
结束子
This is procedure I want to call
Private Sub Display() TxtName.Text = Ds.Tables("LEDG").Rows(Rc)("Name").ToString CmbGrp.Text = Ds.Tables("LEDG").Rows(Rc)("Grp").ToString TxtAdd1.Text = Ds.Tables("LEDG").Rows(Rc)("Add1").ToString TxtAdd2.Text = Ds.Tables("LEDG").Rows(Rc)("Add2").ToString CmbCity.Text = Ds.Tables("LEDG").Rows(Rc)("City").ToString TxtDist.Text = Ds.Tables("LEDG").Rows(Rc)("Dist").ToString TxtPIN.Text = Ds.Tables("LEDG").Rows(Rc)("Pincode").ToString DBState.Text = Ds.Tables("LEDG").Rows(Rc)("State").ToString TxtEmail.Text = Ds.Tables("LEDG").Rows(Rc)("Email").ToString TxtPhone.Text = Ds.Tables("LEDG").Rows(Rc)("Landline").ToString TxtMob.Text = Ds.Tables("LEDG").Rows(Rc)("Mobile").ToString TxtVAT.Text = Ds.Tables("LEDG").Rows(Rc)("VATNO").ToString TxtCST.Text = Ds.Tables("LEDG").Rows(Rc)("CSTNO").ToString TxtGST.Text = Ds.Tables("LEDG").Rows(Rc)("GSTNO").ToString TxtPAN.Text = Ds.Tables("LEDG").Rows(Rc)("PAN").ToString End Sub
this is where I call it
Private Sub BtnFirst_Click_1(sender As Object, e As EventArgs) Handles BtnFirst.Click Dim Da As New MySqlDataAdapter Dim Ds As New DataSet SqlQuery = "Select * from Ledgers" Sqlcommand = New MySqlCommand(SqlQuery, Conn) count = Sqlcommand.ExecuteScalar Da.SelectCommand = Sqlcommand Da.Fill(Ds, "LEDG") Rc = 0 Display() End Sub
getting error " object reference not set to an instance of an object".
What I have tried:
When i try
Private Sub BtnFirst_Click_1(sender As Object, e As EventArgs) Handles BtnFirst.Click Dim Da As New MySqlDataAdapter Dim Ds As New DataSet SqlQuery = "Select * from Ledgers" Sqlcommand = New MySqlCommand(SqlQuery, Conn) count = Sqlcommand.ExecuteScalar Da.SelectCommand = Sqlcommand Da.Fill(Ds, "LEDG") Rc = 0 TxtName.Text = Ds.Tables("LEDG").Rows(Rc)("Name").ToString CmbGrp.Text = Ds.Tables("LEDG").Rows(Rc)("Grp").ToString TxtAdd1.Text = Ds.Tables("LEDG").Rows(Rc)("Add1").ToString TxtAdd2.Text = Ds.Tables("LEDG").Rows(Rc)("Add2").ToString CmbCity.Text = Ds.Tables("LEDG").Rows(Rc)("City").ToString TxtDist.Text = Ds.Tables("LEDG").Rows(Rc)("Dist").ToString TxtPIN.Text = Ds.Tables("LEDG").Rows(Rc)("Pincode").ToString DBState.Text = Ds.Tables("LEDG").Rows(Rc)("State").ToString TxtEmail.Text = Ds.Tables("LEDG").Rows(Rc)("Email").ToString TxtPhone.Text = Ds.Tables("LEDG").Rows(Rc)("Landline").ToString TxtMob.Text = Ds.Tables("LEDG").Rows(Rc)("Mobile").ToString TxtVAT.Text = Ds.Tables("LEDG").Rows(Rc)("VATNO").ToString TxtCST.Text = Ds.Tables("LEDG").Rows(Rc)("CSTNO").ToString TxtGST.Text = Ds.Tables("LEDG").Rows(Rc)("GSTNO").ToString TxtPAN.Text = Ds.Tables("LEDG").Rows(Rc)("PAN").ToString End Sub
everything is working OK
Please Help
You should start by reading these articles:
Variable and Method Scope in Microsoft .NET[^]
Scope in Visual Basic | Microsoft Docs[^]
In a short: in your caseobject reference not set to an instance of an object
error message says thatDS
variable insideDisplay
procedure is inaccesible, because has been created and initiated insidetnFirst_Click_1
procedure.
You may resolve this by passing dataset as a parameter intoDisplay
procedure (recommended) or by definingDS
variable outsidetnFirst_Click_1
procedure (not recommended).
Private Sub BtnFirst_Click_1(sender As Object, e As EventArgs) Handles BtnFirst.Click Dim Da As New MySqlDataAdapter Dim Ds As New DataSet 'the part of code where Ds variable is initiated '... 'finally: Display(Ds) End Sub Private Sub Display(ByRef ds As DataSet) 'your code here End Sub
For further details, please see:
How to: Control the Scope of a Variable (Visual Basic) | Microsoft Docs[^]
Understanding the Scope of Variables[^]
Procedures in Visual Basic | Microsoft Docs[^]
Passing Arguments by Value and by Reference (Visual Basic) | Microsoft Docs[^]
Hi DeclareDim Ds As New DataSetat start of class
When you declare Dataset at function level then you cant use that dataset out side of the function or you can use like this basic programing rule scope of a variable
Private Sub Display(byVal Ds as DataSet) TxtName.Text = Ds.Tables("LEDG").Rows(Rc)("Name").ToString CmbGrp.Text = Ds.Tables("LEDG").Rows(Rc)("Grp").ToString TxtAdd1.Text = Ds.Tables("LEDG").Rows(Rc)("Add1").ToString TxtAdd2.Text = Ds.Tables("LEDG").Rows(Rc)("Add2").ToString CmbCity.Text = Ds.Tables("LEDG").Rows(Rc)("City").ToString TxtDist.Text = Ds.Tables("LEDG").Rows(Rc)("Dist").ToString TxtPIN.Text = Ds.Tables("LEDG").Rows(Rc)("Pincode").ToString DBState.Text = Ds.Tables("LEDG").Rows(Rc)("State").ToString TxtEmail.Text = Ds.Tables("LEDG").Rows(Rc)("Email").ToString TxtPhone.Text = Ds.Tables("LEDG").Rows(Rc)("Landline").ToString TxtMob.Text = Ds.Tables("LEDG").Rows(Rc)("Mobile").ToString TxtVAT.Text = Ds.Tables("LEDG").Rows(Rc)("VATNO").ToString TxtCST.Text = Ds.Tables("LEDG").Rows(Rc)("CSTNO").ToString TxtGST.Text = Ds.Tables("LEDG").Rows(Rc)("GSTNO").ToString TxtPAN.Text = Ds.Tables("LEDG").Rows(Rc)("PAN").ToString End Sub
Private Sub BtnFirst_Click_1(sender As Object, e As EventArgs) Handles BtnFirst.Click Dim Da As New MySqlDataAdapter Dim Ds As New DataSet SqlQuery = "Select * from Ledgers" Sqlcommand = New MySqlCommand(SqlQuery, Conn) count = Sqlcommand.ExecuteScalar Da.SelectCommand = Sqlcommand Da.Fill(Ds, "LEDG") Rc = 0 Display(Ds) End Sub
这篇关于存储过程无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!