0

1つは顧客の主な詳細であり、もう1つのテーブルは顧客の副詳細であるため、2つのテーブルに挿入しようとしています。1 行目はコントロールからパラメーターを取得し、2 番目のテーブルは datagridview から取得することを意味します。これら 2 つは 1 つの方法で実行する必要があります。としてみました

public void CstmrInsUp(string cstName, string cstSName, string AdLn1, string AdLn2, string AdCity, string AdPin, string SAdLn1, string SAdLn2, string SAdCity, string SAdPin, string TelPh1, string TelPh2, string FaxNo, string MailId, string TinNo,string cstDtlName,string cstDsgntn,string cstDtMobl,string cstDtEmail)
    {
       try
        {
            int cstId=1;
            int? grntdId=0;

            cstmrDC.Connection.Open();
            trns = cstmrDC.Connection.BeginTransaction();
            cstmrDC.Transaction = trns;

            cstmrDC.customers_iu(cstId, cstName, cstSName, AdLn1, AdLn2, null, AdCity, AdPin, SAdLn1, SAdLn2, null, SAdCity, SAdPin, TelPh1, TelPh2, FaxNo, MailId, null, TinNo, 1,ref grntdId);
            cstmrDC.customerscntcts_iu(null, cstId, cstDtlName, cstDsgntn, cstDtMobl, cstDtEmail, 1);
            trns.Commit();



        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            if (trns != null)
                trns.Rollback();
        }

    }

ここで、customersdtls テーブルは datagridview 行のように起動する必要があります。パラメータを次のように渡しています

 for (int i = 0; i < dgvCustInfo.Rows.Count - 1; i++)
        {
            cstnam = dgvCustInfo.Rows[i].Cells[0].Value.ToString();
            dsgntn = dgvCustInfo.Rows[i].Cells[1].Value.ToString();
            mblNo = dgvCustInfo.Rows[i].Cells[3].Value.ToString();
            eMail = dgvCustInfo.Rows[i].Cells[4].Value.ToString();
            //cst.InsrtDgv(cstnam, dsgntn, extNo, mblNo, eMail);
            //write a log event with the user information , system information, and activity
        }

cstCls.CstmrInsUp(txtCustmr.Text, txtShrtNam.Text, txtLn1.Text, txtLn2.Text, txtCity.Text,pin.ToString(),txtSpLn1.Text,txtSpLn2.Text,txtSpCty.Text,pin.ToString(), Phn1. ToString(), Phn2.ToString(), fax.ToString(),txtEmail.Text,txtTinNo.Text,cstnam,dsgntn,mblNo,eMail);

こうすることで. 最初の1レコードは保存のみです。datagridview とコントロールからすべての行を挿入するにはどうすればよいですか。ありがとうございました

4

1 に答える 1

0

あなたの MethodCstmrInsUp変数cstIdは常に1です。これが主キーの値だと思うので、 value を持つ最初のレコードを挿入しています1。その後、同じ行を別の行に挿入することはできませんcustid。そのため、エラーがスローされ、トランザクションがロールバックされます。

于 2013-01-21T08:06:23.823 に答える