Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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# 如何在SQL visual studio c中同时在表头和明细表中添加数据#_C#_Sql Server_Database_Datagridview_Datatable - Fatal编程技术网

C# 如何在SQL visual studio c中同时在表头和明细表中添加数据#

C# 如何在SQL visual studio c中同时在表头和明细表中添加数据#,c#,sql-server,database,datagridview,datatable,C#,Sql Server,Database,Datagridview,Datatable,我想用不同的数据将数据保存在2个表中 主表:KD001(主键),名称 表PurchaseReuqisition中的示例包括:PR001(PK)、KD001(FK)、日期 表详细采购申请包含:PR001 as(主键,FK)、KD001 as(主键,FK)、数量 单击“添加表详细信息”时,PurchaseRequest可以包含重复的id,例如: PR001,KD002 PR001,KD004 这是我的代码: public void cekdup2() { for (int r

我想用不同的数据将数据保存在2个表中

主表:KD001(主键),名称

表PurchaseReuqisition中的示例包括:PR001(PK)、KD001(FK)、日期

表详细采购申请包含:PR001 as(主键,FK)、KD001 as(主键,FK)、数量

单击“添加表详细信息”时,PurchaseRequest可以包含重复的id,例如: PR001,KD002

PR001,KD004

这是我的代码:

public void cekdup2()
    {
        for (int row = 0; row < dataGridView2.Rows.Count; row++)
        {
            for (int col = 0; col < dataGridView2.Columns.Count; col++)
            {
                if (dataGridView2.Rows[row].Cells[col].Value != null &&
                  dataGridView2.Rows[row].Cells[col].Value.Equals(txtIdBarang.Text.Trim()))
                {
                    MessageBox.Show("cant add same item!");
                    return;
                }
            }
        }
    }
但当我点击添加时,出现了一些错误, 如果我填写PR004,它可能是错误的,因为在表PurchaseRequest中找不到, 但如果我像下面这个例子那样保存这两个:

 con.executeUpdate("INSERT INTO DetailPurchaseRequisition VALUES('" + IdPR.Text + "','" + txtIdBarang.Text + "', '" + numQty.Value + "')");
        con.executeUpdate("INSERT INTO PruchaseRequisition VALUES('" + IdPR.Text + "','" + txtIdBarang.Text + "', '" + numQty.Value + "')");
它将为表PurchaseRequest循环保存,对吗? 我只想为表PurchaseRequest保存1个时间,但可以在表详细信息中保存1个以上的数据

你能帮我吗?
*对不起,我的英语不好

您需要设计一个系统来识别新的或现有的主表条目。步骤如下:主表中是否存在主键?如果没有,请插入它。然后插入详细记录

可以将整个主表的副本保存在C#内存中,并在客户机中执行逻辑,但如果表很大,则可能存在风险。我建议使用存储过程来完成数据库中的所有工作。您的要求非常简单-您事先知道主记录主键,因此不需要在插入后获取它;一次只添加一条详细记录

例如,请参见以下链接:


一些评论可以帮助您找出问题所在。不要按位置执行insert语句。这将使调试此类问题变得更容易,并防止数据插入错误的列。
在DetailPurchaseRequisition(PR001,KD001,qty)中插入值(“+IdPR.Text+”、“+TXTIBARANG.Text+”、“+numQty.Value+”)

据我所知,您似乎已经完成了PurchaseRequest的保存,并且希望保存子记录。由于数据库中不存在父记录,您似乎收到了一个错误


您需要确保在保存PurchaseRequsion后,您正在刷新内存中的对象。一旦该id存在于内存中,您就可以引用它并在随后的insert语句中填充它。

请!尝试将“i”大写。如果您对糟糕的英语表示抱歉,为什么不将“i”大写亲爱的@CrazyPython:无论如何,一定要建议编辑,而不是仅仅写一篇评论,抱怨大小写是否正确。如果你相信你能把这个问题做得更好,为什么不呢?@ZoharPeled为什么你不编辑它而发表评论?看,把你自己的逻辑运用到你自己身上。@crazyPython:我没有编辑这个问题,因为我认为我不能改进太多;语法错误并不是这个问题不清楚的原因。我确实开始编辑它,但后来意识到它毫无用处,因为我甚至不确定我是否理解它。
 con.executeUpdate("INSERT INTO DetailPurchaseRequisition VALUES('" + IdPR.Text + "','" + txtIdBarang.Text + "', '" + numQty.Value + "')");
        con.executeUpdate("INSERT INTO PruchaseRequisition VALUES('" + IdPR.Text + "','" + txtIdBarang.Text + "', '" + numQty.Value + "')");