как удалить все строки БД через OpenRecordset (DAO) - PullRequest
0 голосов
/ 14 сентября 2009

Как удалить все строки из таблицы перед началом их вставки?

Ответы [ 4 ]

2 голосов
/ 15 сентября 2009

Две вещи. Во-первых, DAO против ADO практически не имеет значения. Они оба доступны для доступа через Windows 7 и AFAIK, планы по их удалению отсутствуют. Либо должно быть в порядке, чтобы использовать в Access. Во-вторых, вы можете просто сделать это:

Public Sub Example()
    With Access.CurrentDb
        .Execute "DELETE Table2.* FROM Table2;"
        .Execute "INSERT INTO Table2 ( fld1, fld2 ) SELECT Table1.ID, Table1.MyField FROM Table1;"
    End With
End Sub

Вы могли бы просто так:

Public Sub Example()
    With Access.DoCmd
        .RunSQL "DELETE Table2.* FROM Table2;"
        .RunSQL "INSERT INTO Table2 ( fld1, fld2 ) SELECT Table1.ID, Table1.MyField FROM Table1;"
    End With
End Sub

Но метод Execute выдает более информативные сообщения об ошибках (и, если вам все равно, DAO)

1 голос
/ 14 сентября 2009

Если вы программируете vba, я предполагаю, что вы работаете с Adodb или просто ADO. Поэтому, чтобы удалить записи таблицы, вы можете использовать объект команды для этого.

Dim cnn as Connection
Dim cmd as Command

Set cnn=new Connection()
cnn.ConnectionString="ConnectionString"
cnn.Open()

Set cmd=new Command()
cmd.ActiveConnection=cnn
cmd.CommandText="DELETE FROM MyTable"
cmd.Execute()

cnn.Close()

Обновлен: Для использования объектов ADO необходимо добавить ссылку на библиотеку ADODB

0 голосов
/ 09 декабря 2016

Пожалуйста, попробуйте это:

Do While Not rs.EOF
rs.Delete
rs.MoveNext
Loop
0 голосов
/ 15 сентября 2009

Насколько мне известно, в наборах записей DAO нет эффективного способа очистки таблицы. Если это небольшая таблица, вы можете удалить запись за записью, но я бы посчитал это глупым. Я просто использую DoCmd.RunSQL для запуска запроса DELETE. Конечно, я бы временно установил для SetWarnings значение False.

Так как это отдельно от DAO, я бы проверил эту операцию до правильного открытия набора записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...