Количество значений запроса и полей назначения не совпадают - PullRequest
0 голосов
/ 25 декабря 2018

Это функция для автоматически сохраненного значения в TotalAmt_tx.Text ..

   void TotalAmount()
            {
                .
                .
                .
                .
                TotalAmt_tx.Text = Total.ToString("00.00");
                .
                .
                .
                catch { }
            }

Код кнопки сохранения: здесь изображение моих форм

private void Save_bt_Click(object sender, EventArgs e)
        {
            //Purchase Table
            {
                string insertPur = "Insert into Purchase (Invoice,VendorName,PurchaseDate,TotalAmt) values ("+Invoice_tx.Text+"," +
                    "'"+VendorName_cb.Text+"','"+PurchaseDate_dt.Value.Date.ToString()+"',"+TotalAmt_tx.Text+" )";

                OleDbDataAdapter da = new OleDbDataAdapter(insertPur, conn);
                DataSet ds = new DataSet();
                da.Fill(ds);                
            }

            //Purchase Item Table
            for (int i = 0; i < metroGrid1.Rows.Count; i++)
            {
                string insertPur = "Insert into PurchaseItem (Invoice, PId, Product, Qty, Rate, Amount) values (" + Invoice_tx.Text + "," +
                    ""+metroGrid1.Rows[i].Cells["PId"].Value.ToString()+ ",'" + metroGrid1.Rows[i].Cells["Product"].Value.ToString() + "'," +
                    "" + metroGrid1.Rows[i].Cells["Qty"].Value.ToString() + "," + metroGrid1.Rows[i].Cells["Rate"].Value.ToString() + "," +
                    "" + metroGrid1.Rows[i].Cells["Amount"].Value.ToString() + ")";

                OleDbDataAdapter da = new OleDbDataAdapter(insertPur, conn);
                DataSet ds = new DataSet();
                da.Fill(ds);
            }
            MessageBox.Show("Data Saved!!");

Проблемы обнаруживаются, потому что это

TotalAmt_tx.Text = Total.ToString ("00.00")

Что я должен сделать, чтобы решить эту проблему ??Я пытаюсь следовать некоторому руководству о форматировании строки, но ничего не работает.Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Вы всегда должны придерживаться параметризованных запросов, чтобы избежать SQL-инъекций.Это также помогает избежать ошибок, таких как пропуск "'"

using (OleDbConnection connection =new OleDbConnection(connectionString))
{
 var query = "Insert into Purchase (Invoice,VendorName,PurchaseDate,TotalAmt) values (@invoice,@vendor,@purchasedate,@amt)";
        OleDbDataAdapter adapter = new OleDbDataAdapter(queryString, connection);


 adapter.SelectCommand.Parameters.Add("@invoic", OleDbType.Integer).Value = Convert.ToInt32(Invoice_tx.Text);
 adapter.SelectCommand.Parameters.Add("@vendor", OleDbType.VarChar,100).Value = VendorName_cb.Text;
 adapter.SelectCommand.Parameters.Add("@invoic", OleDbType.Date).Value = PurchaseDate_dt.Value.Date; // I do not know what PurchaseDate_dt.Value.Date  type is, so I leave it to you to convert to approapriate type
 adapter.SelectCommand.Parameters.Add("@CategoryName", OleDbType.Integer).Value = Convert.ToInt32(TotalAmt_tx.Text);

 connection.Open();
 DataSet ds = new DataSet();
 adapter.Fill(ds);
}
0 голосов
/ 25 декабря 2018

Я предлагаю вам попытаться использовать OleDbParameter Class , потому что, если одно из значений, которые вы объединяете в строку запроса, имеет символ ,, оно испортит ваш запрос (например, число вследующий формат 1,000).

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...