我正在尝试实现一个搜索函数,它将数据库中的多个表返回到多个数据网格视图中。
这是我的表格:
我使用每个存储过程来访问每个表每个数据库表将对应于一个datagridview
用于获取Style表的存储过程
CREATE PROCEDURE [dbo].[FetchCS_V2] @Keyword nvarchar(30)
AS
SELECT [RID]
,[CustomerBrand]
,[CustomerStyle]
,[ProductName]
,[ProductType]
,[ValidityDateFrom]
,[ValidityDateTo]
,[Colorway]
,[Season]
,[Factory]
FROM [dbo].[CostSheet_Mst]
WHERE RID Like '%' + @Keyword + '%'
OR CustomerStyle Like + '%'+ @Keyword + '%'
OR ProductName Like + '%'+ @Keyword + '%'
OR ProductType Like + '%'+ @Keyword + '%'
OR ValidityDateFrom Like + '%'+ @Keyword + '%'
OR ValidityDateTo Like + '%'+ @Keyword + '%'
OR Colorway Like + '%'+ @Keyword + '%'
OR Season Like + '%'+ @Keyword + '%'
OR Factory Like + '%'+ @Keyword + '%'
GO
用于获取FOB表的存储过程
CREATE PROCEDURE [dbo].[FetchCS_FOB_V2] @Keyword nvarchar(30)
AS
SELECT [FobRID]
,[RID]
,[FOBType]
,[Amount]
,[Currency]
FROM [dbo].[CostSheet_FOB]
WHERE RID IN
(SELECT
[RID]
FROM CostSheet_Mst
where [RID] LIKE + '%' + @Keyword + '%')
OR [FOBType] LIKE + '%' + @Keyword + '%'
OR [Amount] LIKE + '%' + @Keyword + '%'
OR [Currency] LIKE + '%' + @Keyword + '%'
GO
这是从数据库中搜索的函数
private void searchFromDB()
{
try
{
string mainconn1 = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(mainconn1);
SqlCommand sqlcomm1 = new SqlCommand("exec [dbo].[FetchCS_V2] '"+searchTextBox.Text+"'", sqlconn); //stored procedure for master database table
SqlCommand sqlcomm2 = new SqlCommand("exec [dbo].[FetchCS_FOB_V2] '" + searchTextBox.Text + "'", sqlconn); //stored procedure for FOB tablew
//sqlcomm1.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da1 = new SqlDataAdapter();
SqlDataAdapter da2 = new SqlDataAdapter();
da1.SelectCommand = sqlcomm1;
da2.SelectCommand = sqlcomm2;
DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();
da1.Fill(dt1);
da2.Fill(dt2);
dataGridViewStyleSearch.DataSource = dt1;
dataGridViewFOBSearch.DataSource = dt2;
sqlconn.Close();
}
catch (Exception ex)
{
MessageBox.Show(string.Format("There's an error: {0}", ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}<br>
`
目前,如果搜索关键字是RID
,则搜索函数可以返回多个数据网格视图中的行]
但是,如果我搜索仅存在于FOB表中的字段,则它将仅返回该datagridview
中的行
另外,我想知道使用一个存储过程从所有表中选择字段是否更好?
然后,我可以将其放入一个数据表中,并将其拆分(不确定如何实现)
2条答案
按热度按时间ki1q1bka1#
如果您要搜索多个表,则在不同的存储过程中执行所有这些操作会更有意义。
chhkpiq42#
有一些文章讨论了主从数据网格:
http://www.codeproject.com/Articles/4094/A-Master-Detail-DataGrid
http://www.codeproject.com/Articles/7941/How-to-create-a-simple-Master-Slave-DataGrid
还有,看看这个。
https://www.codeproject.com/Questions/5309418/Filter-search-on-datagridview-in-VB-NET