2016-04-06 109 views
-3

how to select specific feid using a filter from access in C#这些查询有什么区别?

我还有一个问题:

我记得这种方法丝毫的SelectFeedbtn_Click点击事件,它的工作原理:

public static void GetSelectedFeed(Form2 frm2) 
{ 
     string StrCon = System.Configuration.ConfigurationManager.ConnectionStrings["FeedLibraryConnectionString"].ConnectionString; 

     OleDbConnection Connection = new OleDbConnection(StrCon); 
     OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary", Connection); 

     DataTable DTable = new DataTable(); 
     DataA.Fill(DTable); 

     frm2.SelectedFeeddataGridView.DataSource = DTable; 
} 

但是当我想从FeedSelectListBoxDisplayMember获得一个ID是饲料名称/描述和ValueMember是它显示一个exeption的ID:{"Data type mismatch in criteria expression."},
查询是:

public static void GetSelectedFeed(Form2 frm2) 
{ 
     string StrCon = System.Configuration.ConfigurationManager.ConnectionStrings["FeedLibraryConnectionString"].ConnectionString; 

     OleDbConnection Connection = new OleDbConnection(StrCon); 
     OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = 'frm2.FeedSelectListBox.SelectedValue'", Connection); 

     DataTable DTable = new DataTable(); 
     DataA.Fill(DTable); 

     frm2.SelectedFeeddataGridView.DataSource = DTable; 
} 

我该怎么办?

+1

您是否收到错误或者您是否没有收到任何结果? – Brad

+1

ID可能是数字。删除它周围的单引号。 “Select * from FeedLibrary where ID = 2” – smoore4

+1

对不起,但“不起作用”不是一个好问题的描述。你有错误信息吗?崩溃?例外?根本没有数据?您是否证实数据库中有一行具有该值的文本ID? –

回答

2

首先,ID是一个整数,所以它不应该用引号''传递。您在查询中将frm2.FeedSelectListBox.SelectedValue作为字符串传递,但您应该在查询中传递它的值,以便对它进行评估并使查询变为可执行。

OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = "+frm2.FeedSelectListBox.SelectedValue, Connection); 

    OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = "+FeedSelectedID, Connection); 
+0

坦克它的工作,现在如果列表框有多选择属性,应该如何编写一个查询来获取列表框的所有选定值? –