Member 12790908 Ответов: 2

Я хочу исключение OLEDB из этого утверждения


У меня есть база данных Access, в которой создаются некоторые таблицы, такие как TAXINVOICE с такими столбцами, как INVOICENO,MOBILENUMBER,CUSTOMERNAME,ADDRESS1, ADDRESS2,TINNO, PONO, TRANSPORT,BILLDATE,
InvoiceType, PODATE, totalGrossAmt, totalVatAmt,BILLAMT, TRANSPORTAMT, OTHERAMT, FINALAMT,
ОКРУГЛЕНИЕ, ОБЩИЙ ИТОГ, СТАТУС
другой стол InvoiceItems с InvoiceItemId колонны,InvoiceNumber,Кодтовара,количество,единица измерения,цена,GrossAmount,НДС,VatAmount,
Весь
и таблица продуктов с колонками
ProductId и ProductName

Моя проблема состоит в том, чтобы обновить и удалить все записи, которые мы отредактировали в форме datagridview из приложения windows (C#.NET код).Я использовал oledb queris, которые были опробованы, и я добавлю ниже

Что я уже пробовал:

This is update statement for update button click code
try
           {
               cmd = new OleDbCommand("UPDATE from InvoiceItems,Products set Description ='" + txtProductName + "',Quantity = '" + txtQty.Text + "',UOM = '" + txtUOM.Text + "',UnitPrice ='" + txtUnitPrice.Text + "',GrossAmount ='" + txtGrossAmount.Text + "',VAT = '" + txtVAT.Text + "',VatAmount ='" + txtVatAmount.Text + "',Total ='" + txtTotal.Text + "' from InvoiceItems,Products where InvoiceItems.ProductId = Products.ProductId order by InvoiceNumber='" + txtInvoice.Text.Trim() + "'", conn);
               conn.Open();
               //dataGridView1.AutoGenerateColumns = true;
               cmd.ExecuteNonQuery();
               MessageBox.Show("Success");
               conn.Close();
               DisplayData();
               ClearData();
           }
           catch (OleDbException ex)
           {
               MessageBox.Show("Empty xseries");
               throw(ex);

           }

This is delete statement for update button click code
try
           {
               cmd = new OleDbCommand("DELETE FROM InvoiceNumber,INVOICENO from InvoiceItems WHERE InvoiceItems.InvoiceNumber=TAXINVOICE.INVOICENO and InvoiceNumber=" + txtInvoice.ToString() + "", conn);
               conn.Open();
               //dataGridView1.AutoGenerateColumns = false;
               cmd.ExecuteNonQuery();
               MessageBox.Show("Deleted Entry");
               conn.Close();
               DisplayData();
               ClearData();
           }
           catch (OleDbException ex)
           {
               MessageBox.Show("ALL rows are inevitable");
               throw(ex);
           }

2 Ответов

Рейтинг:
18

Wendelius

Если я правильно понял ваш вопрос, у вас есть несколько проблем с утверждениями.

Сначала обновление, попробуйте использовать следующий синтаксис
Обновление имя_таблицы

SET column = value,
    column = value,
    column = value...
WHERE conditions

Таким образом, в приведенном примере это может быть что-то вроде
UPDATE InvoiceItems
SET Description = ?,
    Quantity = ?,
    UOM = ? ...
WHERE InvoiceItemKey = ?

Также обратите внимание, что вы не должны связывать значения с оператором, а вместо этого использовать Класса Oledbparameter (Системы.Данных.Для oledb)[^]

В операторе delete вы не можете удалить столбцы, вы всегда удаляете строки, поэтому синтаксис
DELETE FROM tablename WHERE conditions

Например что-то вроде
DELETE FROM InvoiceItems 
WHERE InvoiceNumber = ?

А также с этим утверждением используйте параметры.


Рейтинг:
0

Alfonso Gag.

Запрос неверен. Это должно быть что-то вроде:

UPDATE InvoiceItems SET <<fields>> FROM InvoiceItems, Products where <<where conditions>>


Я думаю, вам нужно обновить таблицу InvoiceItems, помните, что вы можете обновить только одну таблицу за один раз.

Примечание: Я думаю, что также запрос команды DELETE неверен. Проверьте синтаксис!

Пока