VB. NET - TableAdapter.Delete () 'Индекс и длина должны указывать на местоположение в строке. при удалении записи из базы данных - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть база данных с тремя парами таблиц:

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.

...