2

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()

データベースからレコードを表示したいだけです

4

3 に答える 3

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)
于 2013-03-12T09:05:29.107 に答える
0

このコードで試してください

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

ストアド プロシージャは 1 つ以上のテーブルを返しますが、テーブルごとに Fill を呼び出す必要はありません。1つで十分です。次に、データセット全体をデータソースに割り当てます。複数のテーブルを返し、特定のテーブルが必要な場合は、

DataGrid1.DataSource = sDs
DataGrid1.DataMember = "tablename"
于 2013-03-12T09:02:57.170 に答える
0
    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
于 2014-01-14T02:52:48.423 に答える