Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用多行文本框作为查询条件填充DataGridView_C#_Sql_Oracle_Loops_Datagridview - Fatal编程技术网

C# 使用多行文本框作为查询条件填充DataGridView

C# 使用多行文本框作为查询条件填充DataGridView,c#,sql,oracle,loops,datagridview,C#,Sql,Oracle,Loops,Datagridview,这是我在StackOverflow中的第二个问题,这就是我被困的地方 我想循环多行文本框中的每个值,并将其作为查询条件传递,然后用结果(多个结果)填充我的DataGridView 问题是。我不能从文本框传递超过1个值。我可以正确执行查询,但它不会正确循环,因为它只显示数据网格中第一个值的结果,并且我需要文本框中每一行的数据(结果) 我的代码是 for (int i = 0; i < textBox1.Lines.Length; i++) {

这是我在StackOverflow中的第二个问题,这就是我被困的地方

我想循环多行文本框中的每个值,并将其作为查询条件传递,然后用结果(多个结果)填充我的DataGridView

问题是。我不能从文本框传递超过1个值。我可以正确执行查询,但它不会正确循环,因为它只显示数据网格中第一个值的结果,并且我需要文本框中每一行的数据(结果)

我的代码是

        for (int i = 0; i < textBox1.Lines.Length; i++)
        {
            Connect();
            OracleCommand cmd = new OracleCommand();
            OracleDataAdapter adapter = new OracleDataAdapter();
            DataTable dt = new DataTable();
            cmd = new OracleCommand(OraSql + OraSql2 + orasql3 + OraSql4, con);
            adapter = new OracleDataAdapter(cmd);
            cmd.ExecuteNonQuery();
            adapter.Fill(dt);
            foreach (DataRow row in dt.Rows)
            {

                    dataGridView1.Rows.Add
                    (
                        row[0].ToString(),
                        row[1].ToString(),
                        row[2].ToString(),
                        row[3].ToString(),
                        row[4].ToString(),
                        row[5].ToString()
                    );

            }


        }
for(int i=0;i
我希望我在这里的解释是正确的 谢谢大家!

这是我的问题

            string OraSql = @"SELECT   r.ixkitl ""Parent Part Number"",
         r.ixlitm ""Component Part Number"",
         i.imdsc1 ""Description"",
         SUM((r.ixqnty/10000)) ""Qty per Harness"",
         To_date(r.ixefff+1900000, 'YYYYDDD') ""Effective From Date"",
         To_date(r.ixefft+1900000, 'YYYYDDD') ""Effective Thru Date"",
         r.ixtbm ""Bill Type"",
         r.ixmmcu ""Branch Plt""
FROM     proddta.f3002 r,
         proddta.f4101 i";

            string OraSql2 = @"
WHERE    (i.imlitm IN '" + textBoxX1.Text.ToString() + "'AND      i.imitm = r.ixkit)";
            string orasql3 = @"
            AND      (r.ixmmcu = '        3320' AND      r.ixtbm = 'M  ')";

            string OraSql4 = @"
AND      r.ixefff <= (to_char(SYSDATE, 'YYYYDDD')-1900000)
AND      r.ixefft >= (to_char(SYSDATE, 'YYYYDDD')-1900000)
GROUP BY r.ixkitl,
         r.ixlitm,
         r.ixqnty,
         r.ixtbm,
         r.ixmmcu,
         r.ixefff,
         r.ixefft,
         i.imdsc1
ORDER BY r.ixkitl,
         r.ixlitm";
string OraSql=@“选择r.ixkitl”“父零件号”,
r、 ixlitm“部件号”,
i、 imdsc1“说明”,
总和((r.ixqnty/10000))“每个线束的数量”,
截止日期(r.ixefff+1900000,'YYYYDDD')“自日期起生效”,
截止日期(r.ixefft+1900000,'YYYYDDD')“生效至日期”,
r、 ixtbm“票据类型”,
r、 ixmmcu“分支Plt”
来自proddta.f3002 r,
proddta.f4101 i”;
字符串OraSql2=@“
其中(i.imlitm位于“+textBoxX1.Text.ToString()+”,i.imitm=r.ixkit)”;
字符串orasql3=@“
和(r.ixmmcu='3320'和r.ixtbm='M')”;
字符串OraSql4=@“
和r.ixefff=(to_char(SYSDATE,'yyyyyddd')-1900000)
由r.ixkitl组成的小组,
r、 伊克斯利特,
r、 ixqnty,
r、 ixtbm,
r、 ixmmcu,
r、 伊克谢夫,
r、 伊克谢夫特,
i、 imdsc1
r.ixkitl的命令,
r、 伊克斯利特”;

您试图执行的sql是什么?对不起。刚刚在POST中添加了查询,建议更改方法。在各行之间循环时,创建一个查询参数列表。然后运行一个查询,其中包括
和i.imitm in(参数在此处)
。与您的问题无关,但这似乎是错误的:
(to_char(SYSDATE,'yyyyyddd')-1900000)
。to_char返回一个字符串,因此您不应该尝试对其进行数学运算。我使用它将Julian日期转换为Gregorian日期抱歉,如果我不能更具体地说,因为这是一个预制查询,我必须使用您必须使用的预制查询有问题。这,
WHERE(i.imlitm在“+textBoxX1.Text.ToString()+”'和i.imitm=r.ixkit)”正在您的循环中运行。
。但是,每次通过循环时,
textBoxX1.Text.ToString()
都具有相同的值。