为了根据组合框的选定值填充数据网格视图,我尝试创建存储过程。但是,因为我不是100%确定我正在做什么,取决于我的存储过程结束时的WHERE语句,它要么返回表中的所有内容,要么根本不返回任何内容。
这就是我班上的内容:
Public Function GetAankoopDetails(ByRef DisplayMember As String, ByRef ValueMember As String) As DataTable
DisplayMember = "AankoopDetailsID"
ValueMember = "AankoopDetailsID"
If DS.Tables.Count > 0 Then
DS.Tables.Remove(DT)
End If
DT = DAC.ExecuteDataTable(My.Resources.S_AankoopDetails, _Result, _
DAC.Parameter(Const_AankoopID, AankoopID), _
DAC.Parameter("@ReturnValue", 0))
DS.Tables.Add(DT)
Return DT
End Function
Public Function GetAankoopDetails() As DataTable
If DS.Tables.Count > 0 Then
DS.Tables.Remove(DT)
End If
DT = DAC.ExecuteDataTable(My.Resources.S_AankoopDetails, _Result, _
DAC.Parameter(Const_AankoopID, AankoopID), _
DAC.Parameter("@ReturnValue", 0))
DS.Tables.Add(DT)
Return DT
End Function
这是我编写的表单后面的代码中的函数,用于填充datagridview:
Private Sub GridAankoopDetails_Fill()
Try
Me.Cursor = Cursors.WaitCursor
dgvAankoopDetails.DataSource = Nothing
_clsAankoopDetails.AankoopDetailsID = cboKeuze.SelectedValue
dgvAankoopDetails.DataSource = _clsAankoopDetails.GetAankoopDetails
Catch ex As Exception
MessageBox.Show("An error occurred while trying to fill the data grid: " & ex.Message, "Oops!", MessageBoxButtons.OK)
Finally
Me.Cursor = Cursors.Default
End Try
End Sub
最后,这是我的存储过程:(注意我不知道我在这里做什么)
USE [Budget]
GO
/****** Object: StoredProcedure [dbo].[S_AankoopDetails] Script Date: 04/12/2010 03:10:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[S_AankoopDetails]
(
@AankoopID int
)
AS
SELECT dbo.tblAankoopDetails.AankoopDetailsID, dbo.tblAankoopDetails.AankoopID, dbo.tblAankoopDetails.ArtikelID, dbo.tblAankoopDetails.Aantal,
dbo.tblAankoopDetails.Prijs, dbo.tblAankoopDetails.Korting, dbo.tblAankoopDetails.SoortKorting, dbo.tblAankoopDetails.UitgavenDeelGroepID
FROM dbo.tblAankoopDetails INNER JOIN
dbo.tblAankoop ON dbo.tblAankoopDetails.AankoopID = dbo.tblAankoop.AankoopID INNER JOIN
dbo.tblArtikel ON dbo.tblAankoopDetails.ArtikelID = dbo.tblArtikel.ArtikelID INNER JOIN
dbo.tblUitgavenDeelGroep ON dbo.tblAankoopDetails.UitgavenDeelGroepID = dbo.tblUitgavenDeelGroep.UitgavenDeelGroepID
WHERE dbo.tblAankoopDetails.Deleted = 0 and dbo.tblAankoopDetails.AankoopID = @AankoopID
ORDER BY AankoopID
有谁知道我需要做些什么来解决这个问题?我想这是存储过程的WHERE部分,但我需要一种方法将组合框的selectedvalue传递给@AankoopID参数。
非常感谢任何帮助。
亲切的问候 杰
答案 0 :(得分:0)
包含的存储过程代码WHERE子句看起来没问题。您应该在ORDER子句中指定一个表:
ORDER by dbo.tblAankoopDetails.AankoopId
但这并不能解释为什么你得到全部或没有行。您可能希望查看表的实际内容,确保它已正确配置,NULL值不会使您绊倒等等。
答案 1 :(得分:0)
我通过更改GridAankoopDetails_Fill子中的一行来解决此问题
_clsAankoopDetails.AankoopDetailsID = cboKeuze.SelectedValue
到
_clsAankoopDetails.AankoopID = cboKeuze.SelectedValue
这是因为AankoopD参数传递而不是AankoopDetailsID。感谢您确认存储过程正常,缩小搜索问题的范围。
菲利普,谢谢你让我看看参数中传递的内容,最终导致解决问题。
数据网格现在根据组合框的选定值进行更新。
祝福,
杰