Access очистить таблицу - Новости с мира ПК
Vvmebel.com

Новости с мира ПК
23 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Access очистить таблицу

Access очистить таблицу

Добрый день! Есть такая проблемма:
Есть база данных access, в ней таблица: ЗАКАЗЫ.
Сделал форму, на ней кнопку с кодом (нашел в инете):

Option Compare Database

Public Sub ClearTable(strTableName As String)
Dim strSQL As String
On Error GoTo m1

SysCmd acSysCmdSetStatus, «Очищаю таблицу — » & strTableName
strSQL = «DELETE FROM » & strTableName
CurrentDb.Execute strSQL
SysCmd acSysCmdClearStatus
Exit Sub
m1:
MsgBox «Произошла ошибка №» & Err.Number & » при очистке таблицы » & strTableName, vbCritical
Err.Clear
End Sub

Private Sub Кнопка0_Click()
ClearTable (заказы)

Не работает, вызывается ошибка: Произошла ошибка №3131

Как очистить от данных данную таблицу Может есть более простой вариант?


Сергей М. © ( 2008-12-25 08:42 ) [1]

Что говорит Err.Description ?


novai ( 2008-12-25 08:45 ) [2]

ошибка синтаксиса в предложении FROM


novai ( 2008-12-25 08:51 ) [3]

кажется заработало с :ClearTable («заказы«)


Anatoly Podgoretsky © ( 2008-12-25 12:11 ) [4]

> novai (25.12.2008 8:29:00) [0]

> Сделал форму, на ней кнопку с кодом

Это вряд ли, такой код не откомпилируется.


sniknik © ( 2008-12-25 14:37 ) [5]

> Это вряд ли, такой код не откомпилируется.
так он наверное в аксессе(программе) делал, там тоже формы и кнопки есть, и код вот примерно так и выглядит (не знаток бейсика чтобы точно сказать откомпилируется/транслируется он там или нет. но похоже.).


Нат ( 2009-01-03 02:26 ) [6]

В запросе надо писать
Delete ALL from .
либо
Delete * from .


wicked © ( 2009-01-03 03:12 ) [7]


> В запросе надо писать
> Delete ALL from .
> либо
> Delete * from .

издеваешься?


Anatoly Podgoretsky © ( 2009-01-03 14:23 ) [8]

> Нат (03.01.2009 2:26:06) [6]

Откуда ты такой синтаксис выкопал, наверно сам придумал.
Почитал бы хотя бы справку.


Нат ( 2009-01-04 03:11 ) [9]

Насчет ALL действительно, ошибочка вышла.

Тем не менее, требуется указание поля либо *
Рабочие запросы из конструктора Акцесса
DELETE Doc.ID FROM Doc;
DELETE * FROM Doc;


Нат ( 2009-01-04 03:28 ) [10]

Уважаемый Анатолий, как профи, влет сечет ошибки.
Однако, иногда можно и решение пропустить.
Не обижайте студентов.
😉

Вырезка из Справки:
DELETE [таблица.*]
FROM таблица
WHERE условиеОтбора


sniknik © ( 2009-01-04 11:40 ) [11]

> Однако, иногда можно и решение пропустить.
т.к. это НЕ решение то чего бы его и не пропустить?

> Вырезка из Справки:
скобочки видишь? что они значат знаешь? наверняка нет, иначене не предлагал бы глупостей в качестве решения (особо глупо выглядит после того как «пациент» уже сам его нашёл).
это значит, что эта часть в скобочках не обязательна, а тут она нужна при особых условиях, видишь там внутри написано «таблица»? так вот она нужна чтобы при объединениях с другими таблицами в условии указать из какой именно удаление (ну вот так синтаксис для jet придумали). без этого все что в скобочках лишнее.


Нат ( 2009-01-04 16:31 ) [12]

после запуска запроса, признаю, без * тоже работает
DELETE FROM Doc;
глаз замылился, и была полнейшая уверенность, что скобки касаются имени таблицы.
благодарю, одним заблуждением меньше


Anatoly Podgoretsky © ( 2009-01-04 21:59 ) [13]

> Нат (04.01.2009 3:28:10) [10]


Нат ( 2009-01-10 00:07 ) [14]

Уважаемый Анатолий, Вы [9] видите?
И не обижайте студентов.

Читать еще:  Операторы vba access

Как очистить таблицу в Access с помощью VBA?

То, что я пытаюсь сделать, это, находясь в Excel, использовать VBA для передачи данных в существующую таблицу доступа. Мне удалось это сделать, но у меня есть одна небольшая заминка. Перед тем, как я отправлю данные для доступа, я хочу очистить текущие данные в таблице доступа, поэтому, когда появляются новые данные из Excel, это единственные данные в таблице доступа. Я действительно не знаю, как писать код для доступа, так как класс был на VBA для Excel. Я попробовал несколько разных подходов, и каждый раз это не работает. Например, код, который, казалось бы, должен работать, это

но я получаю ошибку, говорящую мне определить объект.

Если бы вы могли помочь мне с этим, я бы действительно оценил его

Я поместил свой код ниже Для справки.

4 Ответов

Эта статья может представлять интерес: выполнение операторов SQL в коде VBA

Попробуйте выполнить следующие действия из Excel:

Ваш подход DoCmd имеет две проблемы. Вы использовали кавычку для начала строки, но не включили заключительную кавычку. Но даже при правильном цитировании ваш DoCmd не будет работать, потому что Excel не знает, что CoversheetTableFourthAttempt -это имя таблицы в базе данных Access.

Вы показали, что можете успешно создать подключение ADO к базе данных Access. Поэтому мое предложение заключается в использовании метода Execute подключения объекта для выполнения SQL заявление:

Наконец, посетите имена проблем и зарезервированные слова в Access , чтобы понять, почему дата, описание и проект не являются отличным выбором для имен полей доступа.

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

Добавьте эту часть после вашего поставщика cn.Open «.. линия

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

Похожие вопросы:

У меня есть база данных Access 2007, c:myDb.accdb , с таблицей MASTER_TABLE , которая связана с таблицей TBL.MASTER_TABLE в базе данных DB2 с именем PRODUCTION . Когда я открываю MASTER_TABLE , мне.

Я пытаюсь переименовать таблицу Access через VBA от Excel. есть помощь?

Я довольно опытен с VBA, но я почти ничего не знаю о доступе! Я запускаю сложную симуляцию с использованием Arrrays в VBA, и я хочу сохранить результаты где-то. Поскольку результаты моделирования.

В конце некоторых вставок, через скрипт VBA, я делал в таблице ACCESS. У меня есть как требование заказать таблицу по полю. Таким образом, третий человек откроет его через Панель навигации ACCESS, и.

Мне нужно иметь возможность сохранять результаты отфильтрованной таблицы в Microsoft Access (2010) в виде запроса. Отчеты в Access являются динамическими только в том случае, если они основаны на.

Мне нужно использовать VBA из Excel, чтобы загрузить книгу Excel в access и перенести ее в базу данных. Dim acc As New Access.Application acc.OpenCurrentDatabase C:Test.xls Я зашел так далеко, и.

Как очистить лист с помощью PHPExcel? Что-то вроде Sheet.ClearContents в VBA. Все, что я мог найти, это удалить строки и столбцы, и это не полезно для меня, так как мне нужно очистить весь лист.

Как я могу связать таблицу из одной базы данных MS Access (*.МБР или *.accdb) к другой базе данных Access в VBA? В основном я просто должен был использовать VBA для репликации того, что делает.

Читать еще:  Функция like в access

Access очистить таблицу

Есть таблица из трёх полей (формат: длинное целое). Столбцы: магазин, чек, категория_товара.
Нужно удалить полностью повтояющиеся записи, то есть те, для которых значения по всем трём столбцам совпадают. Всмысле, удалить повторы, оставив только одну запись из множества идентичных.

Буду благодерен за идеи.

Т.е. выбираем из дублей c минимальным ID (можно с максимальным), и удаляем все другие.

ЗЫ: вообще-то SQL плохо оперирует с полными дублями по всем полям записям — сама идея языка такова, что для него это одни и те же записи.

Спасибо, запрос работает. Только очень долго. У меня 13 таблиц по 40-50 тысяч записей . Если SQL не очень подходит, не намекнёте, в чём можно реализовать подобную процедуру? Пробовал VBA в Excel, простой макрос записывающий в 3-х мерный массив, а затем сравнивающий его элементы — НЕВЕРОЯТНО долго. SQL всё же быстрее.

Спасибо большое за совет!

По поводу удаления дублей — можно попытаться упорядочить (при помощи того же SQL) записи по полям, по которым требуется уникальность, и пробежаться по результату в VBA, сравнивая значения у этих полей у текущей записи со значениями предыдущей записи (их в конце каждого прохода цикла нужно сохранить в переменные, а перед циклом проиницилизировать значениями, которых точно нет в таблице — может значения -1 подойдут). Если значение совпадает с предыдущей — удаляем запись. НО: 1) не уверен, что это будет быстрее работать, чем запрос, приведенный выше; 2) не знаю как написать такое на VBA-Access (я с Access’ом вообще слабо знаком).

Можно еще попробовать, если на таблицу никто не ссылается, через другую таблицу. Сделать

Доброе время суток!

Вот столкнулся с похожей задачей. Отличия в моём случае таковы, что уникальность определяется не всеми полями, а некоторыми.
Попытаюсь объяснить подробнее.

Имеется таблица, содержащая 6 полей — field1..field6
Необходимо удалить повторы, которые определяются полями 2,3 и 5. Остальные поля несущественны для отбора, но должны присутствовать в получаемой таблице.
Т.е. если поля 2,3,5 совпадают, то мы считаем эту запись «повтором», и неважно, какие значения в остальных полях.

Делаю так:
INSERT INTO Table2
SELECT DISTINCT field2, field3, field5
FROM Table1

Затем очищаю Table1:
DELETE * FROM Table1

Копирую отобранные записи обратно:
INSERT INTO Table1 SELECT * FROM Table2

В результате получаю Table1 с уникальными записями, но поля 1,4 и 6 пустые.

Собственно вопрос: как добиться заполнения этих полей, чтобы они не влияли на результаты отбора, а просто копировались?

P.S. Извиняюсь за «некропостинг», но имхо это лучше, чем плодить кучу похожих тем

Доброе время суток!

Вот столкнулся с похожей задачей. Отличия в моём случае таковы, что уникальность определяется не всеми полями, а некоторыми.
Попытаюсь объяснить подробнее.

Имеется таблица, содержащая 6 полей — field1..field6
Необходимо удалить повторы, которые определяются полями 2,3 и 5. Остальные поля несущественны для отбора, но должны присутствовать в получаемой таблице.
Т.е. если поля 2,3,5 совпадают, то мы считаем эту запись «повтором», и неважно, какие значения в остальных полях.

Делаю так:
INSERT INTO Table2
SELECT DISTINCT field2, field3, field5
FROM Table1

Затем очищаю Table1:
DELETE * FROM Table1

Копирую отобранные записи обратно:
INSERT INTO Table1 SELECT * FROM Table2

В результате получаю Table1 с уникальными записями, но поля 1,4 и 6 пустые.

Собственно вопрос: как добиться заполнения этих полей, чтобы они не влияли на результаты отбора, а просто копировались?

Читать еще:  Direct access что это

P.S. Извиняюсь за «некропостинг», но имхо это лучше, чем плодить кучу похожих тем

Access очистить таблицу

Иногда возникает необходимость в удалении из таблицы всех содержащихся там записей (очистке таблицы). В качестве примера очистки таблицы создадим запрос для удаления всех записей из таблицы Заказы (Orders), точнее не из самой таблицы, а, чтобы не нарушать целостность учебной базы данных, из ее копии. Сначала необходимо сделать копию таблицы. Для этого нужно щелкнуть правой клавишей мыши на ее названии в окне базы данных и выбрать из контекстного меню пункт Копировать (Сору). После этого, щелкнув правой клавишей мыши в свободной зоне окна базы данных, из контекстного меню выберите пункт Вставить (Paste) и в окне Вставка таблицы (Paste Table As) введите имя для копии таблицы, например, Заказы (копия)(Orders (copy)). В этом окне можно выбрать один из трех вариантов вставки таблицы (см. рис. 4.55):

  • только структура (Structure Only). В этом случае в базу данных добавляется пустая таблица, структура которой совпадает со структурой скопированной таблицы (включая подстановочные поля и т.д.).
  • структура и данные (Structure and Data). Вставляемая в базу данных таблица будет иметь ту же структуру и тот же набор данных, что и скопированная. По умолчанию установлен этот параметр.
  • добавление данных в таблицу (Append Data to Existing Table). В этом случае данные из скопированной таблицы добавляются в конец уже существующей в базе данных таблицы, структуры обеих таблиц должны при этом совпадать.

Выберите параметр Структура и данные (Structure and Data) и нажмите кнопку ОК. В результате, в списке таблиц окна базы данных появится копия таблицы Заказы (Orders).

Теперь можно приступать к созданию запроса на удаление всех записей из таблицы Заказы (копия) (Orders (copy)). Для этого перейдите на вкладку Запросы (Queries) окна базы данных, откройте новый запрос в режиме конструктора и добавьте в него таблицу Заказы (копия) (Orders (copy)). Затем щелкните правой клавишей мыши в зоне таблиц конструктора и из контекстного меню выберите пункт Тип запроса|Удаление (Query Type|Delete Query). Готовый запрос можно запустить на выполнение, нажав кнопку с восклицательным знаком Запуск (Run) на панели инструментов, или, сначала закрыть его, сохранив под каким-либо именем, а затем нажать кнопку Открыть (Open) окна базы данных. Остановить работающий запрос до его завершения можно при помощи комбинации клавиш клавиатуры . После запуска любого запроса на изменение система выдает об этом предупреждающее сообщение. Если нажать кнопку Да (Yes), система выдаст очередное предупреждение о количестве удаляемых записей. Это последняя возможность отменить удаление. После нажатия кнопки Да (Yes) записи будут удалены из таблицы и вернуть их назад уже не удастся.

Оператор SQL для вышеописанного запроса имеет достаточно простой вид:

DELETE * FROM [Заказы (копия)];

(DELETE * FROM [Orders (copy)];).
В переводе на русский язык текст оператора означает примерно следующее: Удалить все из таблицы Заказы (копия)(Orders (copy)). Ключевое слово Delete задает тип запроса — удаление, звездочка (*) указывает на то, что удалению подлежат записи из всех таблиц, указанных в запросе (в данном случае таблица одна), а в предложении From указано имя таблицы, записи из которой подлежат удалению.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector