0

私はすでにデータベース内のデータを編集できます。しかし、私は問題を抱えています.datagridviewの列を編集して更新すると、に基づいてdatagridviewQuantityの列を更新するはずですが、Priceではなく列のみを更新します.TotalQuantity * SubTotalQuantity

私はどこで間違ったのですか?

スクリーンショットは次のとおりです。

ここに画像の説明を入力

行「1」でわかるように、Quantityは100で、SubTotalは10000なので、Total1000000になります。しかし、行「2」では、データグリッドビューで編集する前に、Quantity数量は2000000です。を 500 に変更すると、まだ 2000000 ですが、本来は 10000000 です。100TotalQuantityTotalTotal

私はどこで間違ったのですか?

コードは次のとおりです(必要に応じてコードを投稿します):

private void Updated(object sender, EventArgs e)
        {
            DataTable _dt = (DataTable)dataGridView1.DataSource;

            if (_dt.DefaultView.Count > 0)
            {
                int rowNum = dataGridView1.CurrentRow.Index;
                string productCode = Convert.ToString(_dt.DefaultView[rowNum]["ProductCode"]);
                int quantity = Convert.ToInt32(_dt.DefaultView[rowNum]["Quantity"]);
                int price = Convert.ToInt32(_dt.DefaultView[rowNum]["SubTotal"]);
                int _price = Convert.ToInt32(_dt.DefaultView[rowNum]["Total"]);

                using (OleDbConnection conn = new OleDbConnection(connectionString))
                {
                    string _commandSelect = "SELECT [Quantity], [SubTotal], [Total] FROM [TransRecord] WHERE [ProductCode] = @ProductCode";
                    string commandUpdate = "UPDATE [Record] SET [Quantity] = @Quantity, [SubTotal] = @SubTotal, [Total] = @Total WHERE [ProductCode] = @ProductCode";
                    string _commandUpdate = "UPDATE [TransRecord] SET [Quantity] = @Quantity, [SubTotal] = @SubTotal, [Total] = @Total WHERE [ProductCode] = @ProductCode";

                    conn.Open();

                    using (OleDbCommand cmdUpdate = new OleDbCommand(_commandUpdate, conn))
                    using (OleDbCommand _cmdSelect = new OleDbCommand(_commandSelect, conn))
                    using (OleDbCommand _cmdUpdate = new OleDbCommand(commandUpdate, conn))
                    {
                        _cmdSelect.Parameters.Add("@ProductCode", System.Data.OleDb.OleDbType.VarChar);
                        _cmdSelect.Parameters["@ProductCode"].Value = productCode;

                        cmdUpdate.Parameters.Add("@Quantity", System.Data.OleDb.OleDbType.Integer);

                        _cmdUpdate.Parameters.Add("@Quantity", System.Data.OleDb.OleDbType.Integer);

                        cmdUpdate.Parameters.Add("@SubTotal", System.Data.OleDb.OleDbType.Integer);

                        _cmdUpdate.Parameters.Add("@SubTotal", System.Data.OleDb.OleDbType.Integer);

                        cmdUpdate.Parameters.Add("@Total", System.Data.OleDb.OleDbType.Integer);

                        _cmdUpdate.Parameters.Add("@Total", System.Data.OleDb.OleDbType.Integer);

                        using (OleDbDataReader dReader = _cmdSelect.ExecuteReader())
                        {
                            while (dReader.Read())
                            {
                                cmdUpdate.Parameters.Add("@ProductCode", System.Data.OleDb.OleDbType.VarChar);
                                _cmdUpdate.Parameters.Add("@ProductCode", System.Data.OleDb.OleDbType.VarChar);

                                cmdUpdate.Parameters["@ProductCode"].Value = productCode;
                                cmdUpdate.Parameters["@Quantity"].Value = quantity;
                                cmdUpdate.Parameters["@SubTotal"].Value = price;
                                cmdUpdate.Parameters["@Total"].Value = _price;

                                _cmdUpdate.Parameters["@ProductCode"].Value = productCode;
                                _cmdUpdate.Parameters["@Quantity"].Value = quantity;
                                _cmdUpdate.Parameters["@SubTotal"].Value = price;
                                _cmdUpdate.Parameters["@Total"].Value = _price;

                                int numberOfRows = _cmdUpdate.ExecuteNonQuery();
                                int _numberOfRows = cmdUpdate.ExecuteNonQuery();
                            }

                            dReader.Close();
                        }
                    }

                    conn.Close();
                }
        }

private void UpdatePrice(object sender, EventArgs e)
        {
            if (numericTextBox1.TextLength >= 6)
            {
                decimal quantity = Convert.ToInt32(this.numericUpDown1.Value);
                decimal price = Convert.ToDecimal(this.numericTextBox2.Text);
                int total = Convert.ToInt32(quantity * price);

                if (numericUpDown1.Value > 0)
                {
                    this.numericTextBox3.Text = total.ToString();
                }
            }
        }

Total、datagridview にないときに機能します。ここにあります (スクリーンショットとして表示):

ここに画像の説明を入力

しかし、それがdatagridviewに行き、私が変更したとき、それはに基づいてQuantity更新されませんTotalSubTotal * Quantity

あなたの助けと答えに感謝します!

どうもありがとうございました!

4

1 に答える 1