110,567
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace 查询过滤.FormClass
{
public partial class frm_Filter : Form
{
public frm_Filter()
{
InitializeComponent();
}
public static DataSet myds ;//记录查询的条数,以便于返还给其他表查询使用
public static int dgvSum = 0;//记录查询的条数,以便于返还给其他表查询使用
//public string A = "";//列名称
//public string B = "";//运算符
//public string C = "";//数据值
//public string D = "";//逻辑关系符
//显示字符串和实际字段名映射
Dictionary<string, string> fieldMap = new Dictionary<string, string>()
{
{ "日期", "FDate" },
{ "单据编号","FNumberID" },
{ "款号", "FStyleName" },
{ "材质","Materil" },
{ "工序编号", "processOrder" },
{ "工序名称","ProcessName" },
{ "订数数量","FNumberSum_01" }
};
//显示字符串和实际运算符号映射
Dictionary<string, string> symbolMap = new Dictionary<string, string>()
{
{ "等于", "==" },
{ "大于",">" },
{ "小于", "<" },
{ "不等于","><" },
{ "大于等于", ">=" },
{ "小于等于","<=" },
};
//显示字符串和实际逻辑连接符映射
Dictionary<string, string> logicalMap = new Dictionary<string, string>()
{
{ "和", "and" },
{ "或","or" },
};
#region 查询
private void button1_Click(object sender, EventArgs e)
{
//dataGridView1.Rows.Clear();<-//你这里执行这个你还能取到鬼的数据!!!
System.Text.StringBuilder whereString = new System.Text.StringBuilder();
foreach (var item in dataGridView1.Rows)
{
var A = item.Cells[0].Value ?? null;
var B = item.Cells[0].Value ?? null;
var C = item.Cells[0].Value ?? null;
var D = item.Cells[0].Value ?? null;
if (A!=null&&B!=null&&C!=null&&D!=null)
{
whereString.Append($" {logicalMap[C]} {fieldMap[A]} {symbolMap[c]} {D}");
}
}
dataGridView1.Rows.Clear();//取完数据再清空你的gridview不迟
string SelectStr = "select FDate AS 日期,FNumberID AS 单据编号, FNumberOrder AS 单号, FStyleName AS 款号,Materil AS 材质,processOrder AS 工序编号,ProcessName AS 工序名称,FNumberSum_01 AS 源订单数,Number_InOk AS 累计入库, ( Convert(float,FNumberSum_01) - Convert(float,Number_InOk)) AS 欠数,SigerPrice AS 单价 from tb_ProcedWorkOrder where "
+whereString.ToString();//拼接实际sql字符串,调试的时候在这里打断点多看看这里的数据正确不正确,早早做出调整
//===================
SqlClass.mySqlClass.getcon();//打开数据库
SqlCommand cmd = new SqlCommand(SelectStr, SqlClass.mySqlClass.MyCon);//创建一个SqlCommand对象
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
myds = new DataSet();//创建一个Set对象
sda.Fill(myds, "tb_ProcedWorkOrder");
sda.Dispose(); //释放所有资源
dgvSum = myds.Tables[0].Rows.Count;
if (dgvSum > 0)
{
MessageBox.Show("我查到了【" + dgvSum + "】条数据", "查询提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
else
{
MessageBox.Show("没有查到数据", "查询提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
#endregion
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
修改了一下注释,补上了少的一个映射,能不能正常运行只能看天意了。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace 查询过滤.FormClass
{
public partial class frm_Filter : Form
{
public frm_Filter()
{
InitializeComponent();
}
public static DataSet myds ;//记录查询的条数,以便于返还给其他表查询使用
public static int dgvSum = 0;//记录查询的条数,以便于返还给其他表查询使用
//public string A = "";//列名称
//public string B = "";//运算符
//public string C = "";//数据值
//public string D = "";//逻辑关系符
//显示字符串和实际字段名映射
Dictionary<string, string> fieldMap = new Dictionary<string, string>()
{
{ "日期", "FDate" },
{ "单据编号","FNumberID" },
{ "款号", "FStyleName" },
{ "材质","Materil" },
{ "工序编号", "processOrder" },
{ "工序名称","ProcessName" },
{ "订数数量","FNumberSum_01" }
};
//显示字符串和实际字段名映射
Dictionary<string, string> symbolMap = new Dictionary<string, string>()
{
{ "等于", "==" },
{ "大于",">" },
{ "小于", "<" },
{ "不等于","><" },
{ "大于等于", ">=" },
{ "小于等于","<=" },
};
#region 查询
private void button1_Click(object sender, EventArgs e)
{
//dataGridView1.Rows.Clear();<-//你这里执行这个你还能取到鬼的数据!!!
System.Text.StringBuilder whereString = new System.Text.StringBuilder();
foreach (var item in dataGridView1.Rows)
{
var A = item.Cells[0].Value ?? null;
var B = item.Cells[0].Value ?? null;
var C = item.Cells[0].Value ?? null;
var D = item.Cells[0].Value ?? null;
if (A!=null&&B!=null&&C!=null&&D!=null)
{
whereString.Append($" {logicalMap[C]} {fieldMap[A]} {symbolMap[c]} {D}");
}
}
dataGridView1.Rows.Clear();//取完数据再清空你的gridview不迟
string SelectStr = "select FDate AS 日期,FNumberID AS 单据编号, FNumberOrder AS 单号, FStyleName AS 款号,Materil AS 材质,processOrder AS 工序编号,ProcessName AS 工序名称,FNumberSum_01 AS 源订单数,Number_InOk AS 累计入库, ( Convert(float,FNumberSum_01) - Convert(float,Number_InOk)) AS 欠数,SigerPrice AS 单价 from tb_ProcedWorkOrder where "
+whereString.ToString();//拼接实际sql字符串,调试的时候在这里打断点多看看这里的数据正确不正确,早早做出调整
//===================
SqlClass.mySqlClass.getcon();//打开数据库
SqlCommand cmd = new SqlCommand(SelectStr, SqlClass.mySqlClass.MyCon);//创建一个SqlCommand对象
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
myds = new DataSet();//创建一个Set对象
sda.Fill(myds, "tb_ProcedWorkOrder");
sda.Dispose(); //释放所有资源
dgvSum = myds.Tables[0].Rows.Count;
if (dgvSum > 0)
{
MessageBox.Show("我查到了【" + dgvSum + "】条数据", "查询提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
else
{
MessageBox.Show("没有查到数据", "查询提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
#endregion
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
拉到vs里面大概改了一下代码,但是并没有测试因为我用的console项目,所以编译都过不去,你自己多调试吧。
if(A != null && B != null && C != null && D == null)
{
SelectStr = allStr01 + value + YanSuanHu + "'" + C + "'";
}
else
{
SelectStr = SelectStr + LuoJiHu + " " + value + YanSuanHu + "'" + C + "'";
}