【问题标题】:Populating datagrid1.view with a SQL Server stored procedure使用 SQL Server 存储过程填充 datagrid1.view
【发布时间】:2013-02-27 15:40:20
【问题描述】:

我在 SQL Server 中有一个存储过程,我创建了一些内部连接,现在我将如何使用该存储过程填充我的数据网格。

这是我的代码不起作用

Dim cmd As New SqlCommand
        Dim reader As SqlDataReader

        cmd.CommandText = "OfficeEquipmentProfile"
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Connection = sqlconn

        sqlconn.Open()



        sAdapter = New SqlDataAdapter(cmd)
        sBuilder = New SqlCommandBuilder(sAdapter)
        sDs = New DataSet
        sAdapter.Fill(sDs, "tblOfficeEquipmentProfile")
        sAdapter.Fill(sDs, "tblDepartment")
        sAdapter.Fill(sDs, "tblLocation")
        sAdapter.Fill(sDs, "tblOfficeEquipmentCategory")
        sAdapter.Fill(sDs, "tblApplication")
        sAdapter.Fill(sDs, "tblApplicationLicense")
        sAdapter.Fill(sDs, "tblEquipmentApplication")
        sAdapter.Fill(sDs, "tblOfficeEquipmentBrand")
        sAdapter.Fill(sDs, "tblOfficeEquipmentModel")
        sAdapter.Fill(sDs, "tblOfficeEquipmentServiceOrder")
        sAdapter.Fill(sDs, "tblOfficeEquipmentPMplan")


        sTable = sDs.Tables("tblOfficeEquipmentProfile")
        sTable = sDs.Tables("tblDepartment")
        sTable = sDs.Tables("tblLocation")
        sTable = sDs.Tables("tblOfficeEquipmentCategory")
        sTable = sDs.Tables("tblApplication")
        sTable = sDs.Tables("tblApplicationLicense")
        sTable = sDs.Tables("tblEquipmentApplication")
        sTable = sDs.Tables("tblOfficeEquipmentBrand")
        sTable = sDs.Tables("tblOfficeEquipmentServiceOrder")
        sTable = sDs.Tables("tblOfficeEquipmentPMplan")

        DataGrid1.DataSource = sDs.Tables("tblOfficeEquipmentProfile, tblDepartment, tblLocation, tblOfficeEquipmentCategory, tblApplication,tblApplicationLicense, tblEquipmentApplication, tblOfficeEquipmentBrand, tblOfficeEquipmentServiceOrder,tblEquipmentPMplan")
        DataGrid1.ReadOnly = True
        'Button1.Enabled = False
        'DataGrid1.SelectionMode = DataGridViewSelectionMode.FullRowSelect


        reader = cmd.ExecuteReader()
        sqlconn.Close()

我只想显示数据库中的记录

【问题讨论】:

  • 没有返回错误,同时没有显示数据库中的任何记录
  • 请显示您的存储过程。我看不到你在 cmd.parameter 中调用的参数
  • 我的存储过程太长了如何显示?
  • 您的存储过程需要什么参数?当您在 .net 代码中调用此存储过程时,我看不到任何参数
  • 请将您的电子邮件发送给我,我的电子邮件是 ivan.jerome003@gmail.com

标签: sql vb.net datagrid visual-studio-2003


【解决方案1】:

当您从不同的表而不是多个表返回列时,您只需要此代码。

 Dim Command As SqlCommand = New SqlCommand()
 Command.Connection = Connection
 Command.CommandText = "OfficeEquipmentProfile"
 Command.CommandType = CommandType.StoredProcedure

 Dim sAdapter As SqlDataAdapter = New SqlDataAdapter(Command)

 Dim DataSet As DataSet = New DataSet(Command.CommandText)

 sAdapter.Fill(DataSet)
 DataGrid1.DataSource = DataSet.Tables(0)

【讨论】:

  • DataGrid1.DataBind() 不是 system.windows.forms.datagrid 的成员,我使用 vb.net 2003
  • @APC, AshReva 非常感谢!你们俩都帮了大忙!
【解决方案2】:

试试这个代码

Dim cmd As New SqlCommand
cmd.CommandText = "OfficeEquipmentProfile"
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = sqlconn
sqlconn.Open()

sAdapter = New SqlDataAdapter(cmd)
sBuilder = New SqlCommandBuilder(sAdapter)
sDs = New DataSet
sAdapter.Fill(sDs)
DataGrid1.DataSource = sDs

存储过程返回一个或多个表,但您不需要为每个表调用 Fill。一个就够了。然后将整个数据集分配给数据源,或者,如果您返回多个表并需要特定表

DataGrid1.DataSource = sDs
DataGrid1.DataMember = "tablename"

【讨论】:

    【解决方案3】:
        Try
            If con.State = ConnectionState.Open Then con.Close()
            con.Open()
            Dim dset As New DataSet
            Dim dbind As New BindingSource
            Dim strquery As String
            strquery = "SELECT prod_code, prod_no, prod_suffix, prod_lvl, customer, model, family, company_code, company_name, company_address, running_no, template_code FROM products_tbl  WHERE  template_code = 'n'and company_code = 'YTPL' and prod_no = '" & txt_product.Text & "' and prod_suffix = '" & txt_suffix.Text & "' and prod_lvl = '" & txt_level.Text & "'"
            Dim adap As New SqlDataAdapter(strquery, con)
            dset = New DataSet
            adap.Fill(dset)
            dbind.DataSource = dset.Tables(0)
            dg.DataSource = dbind
        Catch ex As Exception
            MsgBox("Trace No 3: System Error or Data Error!" + Chr(13) + ex.Message + Chr(13) + "Please Contact Your System Administrator!", vbInformation, "Message")
        End Try
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2019-06-11
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      相关资源
      最近更新 更多