Debsbond008 Ответов: 1

Как я могу удалить данные из таблицы, которая уже существует в другой таблице


Я использую visual studio 2017 и ms access 2016 для приложения Windows forms. У меня есть таблица членов и сторонников. Оба стола имеют coloumn [AADHAAR]. В обеих таблицах [AADHAAR] является первичным. Я хочу удалить все записи из таблицы сторонников, если найдено совпадение со столбцом [AADHAAR] таблицы членов.

Я использовал кнопку, которая выполняет эту задачу..

Примечание: существует более 10 совпадений между столбцом [AADHAAR] таблицы членов и столбцом [AADHAAR] таблицы сторонников. Тем не менее ExecuteNonQuery() возвращает 0. Так что не оставляйте комментарии, как будто нет никаких совпадений. бла.. бла.. бла..

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

private Sub Extra_Btn_Click(sender As Object, e As EventArgs) Handles Extra_Btn.Click
       If Merge_Data() = True Then
           MsgBox("Duplicate Data removed")
       Else
           MsgBox("Error! ")
       End If
   End Sub


Определение функции Merge_Data :

Public Function Merge_Data() As Boolean
        Try
            Link()
            cmd.CommandText = "DELETE * FROM SUPPORTERS WHERE SUPPORTERS.AADHAAR IN (SELECT MEMBERS.AADHAAR FROM MEMBERS)"
            Records = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

        If Records > 0 Then
            Return True
        Else
            Return False
        End If

    End Function


Это Не Работает.Просто Msgbox("Ошибка! ") похоже, это означает, что ExecuteNonQuery() возвращает 0 . Следовательно, функция Merge_Data() возвращает False

0x01AA

Merge_Data также должен возвращать True в случае, если ни одна запись не удаляется, то есть значение записей равно 0....

Debsbond008

Нет, если значение записи равно 0, то Merge_data должен возвращать false. Вы действительно не понимаете моего вопроса. Мой вопрос заключается в том, почему ExecuteNonQuery() возвращает 0, то есть почему данные не удаляются?

0x01AA

Потому что между этими двумя таблицами нет совпадения?

Debsbond008

Нет есть матч более 10 матчей
Если нет совпадения, зачем мне тратить здесь время? Есть спички, и все равно они не работают . Поэтому я описал свою проблему

0x01AA

Решите свою проблему сами, мне не нужно ваше высокомерие ;p

1 Ответов

Рейтинг:
1

summiya1

Удалить * из запроса

DELETE FROM SUPPORTERS WHERE SUPPORTERS.AADHAAR IN (SELECT MEMBERS.AADHAAR FROM  MEMBERS )


Debsbond008

Сначала попробовал это, он тоже не придурок, а потом добавил *.