如何在 C# 上使用数据库数据获取组合框上的范围值

Posted

技术标签:

【中文标题】如何在 C# 上使用数据库数据获取组合框上的范围值【英文标题】:How to Get Range Values on a comboBox with a Database Data on C# 【发布时间】:2021-02-23 03:23:51 【问题描述】:

不确定我上面的问题是否写得正确,如果没有,我深表歉意。

我有一个学生数据库,这些学生在不同的班级项目、作业等方面有不同的成绩。我的职责是当我从我的组合框中选择一个项目时,它应该填充所选范围内的学生。例如,组合框上的文本如下:

从0到10 从 11 点到 20 点 从 21 到 30 从 31 到 40

如果我选择From 11 to 20,我应该得到从11 to 20 获得成绩的学生。 现在,这是一个学校作业,所以我必须使用这些课本;我无法将它们更改为 0、10、20 等。

我在 Access 上连接到我的数据库。我有另一个更简单的组合框,意思是组合框项目显示为:作业 1、作业 2 等,并且该连接有效。我的问题是试图告诉 C# 我选择的内容已翻译为文本中的范围。这是该按钮的代码:

private void btnLoad_Click(object sender, EventArgs e)

   String homeWork = cboHomeWork.Text; //This works fine and it filters correctly
   String range = cboRangeGrades.Text; //This will return an error because the text is complexed



     String sqlFilter = String.Format("Select * from activities where HomeWork = '0' and range = '1' ", homeWork, range);

getStudents(sqlFilter); //Calling the SQL instructions from above

对于使用这些范围从数据库中获取范围数据的正确方法有什么建议?

我也尝试过使用if 语句:

private void btnLoad_Click(object sender, EventArgs e)

    String homeWork = cboHomeWork.Text; //This works fine and it filters correctly
    String range = cboRangeGrades.Text; //This will return an error because the text is complexed

    if (cboRangeGrades.Text == "From 0 to 10")
    
      //But this will return an error saying that the criteria is not correct. 
      range = String sqlFilter = String.Format("Select * from activities where range = 10");
      //To my understanding, that Query is not written correctly even though on Access it works.
    


    
   String sqlFilter = String.Format("Select * from activities where HomeWork = '0' and range = '1' ", homeWork, range);
    
   getStudents(sqlFilter); //Calling the SQL instructions from above

谢谢!

【问题讨论】:

第二个应该可以工作,但是您在最后一个中再次为 sqlfilter 放置了相同的文本。您有多种获取数据的选项。但要做到这一点,我们需要更多细节。你能用更多细节更新你的问题吗?诸如这些变量值包含的内容、您在数据库中拥有它以及您希望如何在 UI 中显示等详细信息会有所帮助。 如何在数据库中存储范围值? @JackLe - 提供数据库。我所要做的就是连接到它,创建一个带有组合框和数据网格视图的 UI 软件,我将在其中填充信息。此数据网格视图具有列:Date, Student, Homework, Grades,与 Access 数据库中的列相同。 @AdrianAcostaPR 你不明白我的问题。如果 [range] 列是整数,可以使用BETWEEN value1 AND value2 @AdrianAcostaPR 你可以像我上面提到的那样做,或者将你的查询更改为[range] >= value1 and value2 <=[range]。您可以轻松地从所选文本中提取数字(例如从 31 到 40),有多种不同的方法。 【参考方案1】:

你可以使用Replace():

string homeWork = "Assignment 1";
string range = "From 11 To 20";
string criteria = range.Replace("From", "between").Replace("To", "and");
String sqlFilter = String.Format("select * from activities where HomeWork = '0' and grade 1", homeWork, criteria);

Console.WriteLine(sqlFilter);
// select * from activities where HomeWork = 'Assignment 1' and Grade between 11 and 20

【讨论】:

以上是关于如何在 C# 上使用数据库数据获取组合框上的范围值的主要内容,如果未能解决你的问题,请参考以下文章

从组合框上的多个选择中获取值

访问 2007 组合框上的选定值未显示在多个记录上

使用带有排序组合框和页面组合框上的许多项目的列表视图

如何同步组合框和文本字段值。即如何从存储在文本字段中加载不同的值,而我正在更改组合框上的值

组合框上的参数值

EXTJS:如何在组合框上自动完成查询后从数据存储中清除“查询”参数