Member 12790908 Ответов: 2

Мне нужно правильно построить запрос условия внутреннего соединения, чтобы удалить записи в двух таблицах: пожалуйста, помогите


Я пытаюсь удалить записи в InvoiceItems и таблиц НАЛОГОВАЯНАКЛАДНАЯ.Но при записи в инструкцию Ole db происходит некоторое отвлечение запросов.Я стараюсь вот так.Точных таблиц в MS доступа InvoiceItems и НАЛОГОВАЯНАКЛАДНАЯ. В InvoiceItems имеет такие поля, как InvoiceItem,InvoiceNumber,Кодтовара,количество,единица измерения,цена,GrossAmount,НДС,VatAmount,
Весь
и НАЛОГОВАЯНАКЛАДНАЯ есть поля INVOICENO,MOBILENUMBER,CUSTOMERNAME,АДРЕС1,АДРЕС2,TINNO,поно,транспорт,BILLDATE,
InvoiceType, PODATE, totalGrossAmt, totalVatAmt,BILLAMT, TRANSPORTAMT, OTHERAMT, FINALAMT,
Округление и общий итог

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

команду cmd = новый объект oledbcommand("удалить InvoiceNumber,НАЛОГОВАЯНАКЛАДНАЯ от InvoiceItems внутреннее соединение НАЛОГОВАЯНАКЛАДНАЯ где InvoiceItems.InvoiceNumber=НАЛОГОВАЯНАКЛАДНАЯ.INVOICENO и InvoiceNumber= " + txtInvoice.Метод toString() , соед);

2 Ответов

Рейтинг:
0

#realJSOP

Если вы установите соответствующие внешние ключи, вы можете удалить их из одной таблицы, а база данных удалит связанные строки в другой таблице, и тогда вам не придется использовать слишком сложные запросы.


Рейтинг:
0

Wendelius

Если вам нужно удалить строки из обеих таблиц, попробуйте сделать это отдельно. Например

"DELETE FROM InvoiceItems 
WHERE InvoiceNumber=TAXINVOICE.INVOICENO 
and InvoiceNumber=" + txtInvoice.ToString() 

"DELETE FROM TaxInvoice
WHERE InvoiceNo=" + txtInvoice.ToString()

Однако для того, чтобы быть в безопасности от SQL-инъекций, вы действительно должны использовать Класса Oledbparameter (Системы.Данных.Для oledb)[^]. Другими словами
"DELETE FROM InvoiceItems 
WHERE InvoiceNumber=TAXINVOICE.INVOICENO 
and InvoiceNumber=?"

"DELETE FROM TaxInvoice
WHERE InvoiceNo=?"

И как указано в решении 1, Самый простой способ-определить внешний ключ и позволить базе данных обрабатывать дочерние строки. Взгляните на Предложение ограничения (Microsoft Access SQL)[^]