У меня есть база данных с тремя парами таблиц:
TableA
TableAProspects
TableB
TableBProspects
TableC
TableCProspects
Таблицы перспектив и их соответствующие основные таблицы идентичны, за исключением того, что обязательные поля в основных таблицах не являются обязательными в таблицах перспектив, позволяет пользователю вводить неполные данные в базу данных и собирать их в несколько битов, прежде чем, наконец, передать их в основные таблицы. (После отправки в основную таблицу данные проверяются)
Я создал запросы Выбрать, Вставить, Обновить и Удалить и Адаптеры таблиц для VB. NET соответствующие методы настроены, см. Код I используется ниже:
TableATableAdapter.Delete1(TableABindingSource.Current("ID"))
и
TableAProspectsTableAdapter.Delete1(TableAProspectsBindingSource.Current("ID"))
(Delete1 - это имя метода в адаптерах таблиц)
Когда я пытаюсь удалить записи из Prospects
Таблицы, которые я получаю System.ArgumentOutOfRangeException
с сообщением «Индекс и длина должны указывать на местоположение в строке». при удалении записи из базы данных. Этого не происходит в основных таблицах, даже если код, который я использовал, идентичен , за исключением того, что я поменялся местами с соответствующими BindingSources и TableAdapters. Хотя я понимаю это сообщение об ошибке, я не понимаю , почему я получаю его.
Я использовал MsgBox для вывода TableABindingSource.Current("ID")
, чтобы убедиться, что идентификатор правильный, какой он есть Я попытался изменить его на YProspectsClientsBindingSource.Current.Row("ID")
, а затем попытался последний код, установив целочисленную переменную в это значение, а затем с помощью этой переменной
Id = TableAProspectsBindingSource.Current.Row("ID")
TableAProspectsTableAdapter.Delete1(Id)
безуспешно.
I Я даже пытался удалить TableAdapters из формы и заново вставить их.
При попытке поиска ответов я нашел другие вопросы, которые, как представляется, касаются подстрок ( здесь и здесь ), но я не понимаю, как это применимо к TableAdapters, и почему, несмотря на использование одного и того же кода, только перспективные адаптеры таблиц выдают исключение.
Единственные различия, о которых я знаю, это содержимое таблиц базы данных и имена TableAdapters и BindingSources.