Ошибки при открытии набора записей MSAccess - PullRequest
0 голосов
/ 27 мая 2011

Я использую следующий код в Access, чтобы попытаться открыть набор записей:

Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("fieldHistory")

Я постоянно получаю сообщение об ошибке «Слишком мало параметров».

fieldHistory - это запрос сSQL-код выглядит следующим образом:

SELECT Date, User, Type
FROM Inventory
WHERE  ((Inventory.Type) In ("Insert","EditTo"));

Я смотрел на это некоторые - я обнаружил, что если я использую код db.OpenRecordset («Выбрать * из инвентаря»), я не получаю ошибку.

Кроме того, я нашел этот форум, который, похоже, был на что-то, но я не мог понять, как создать соответствующие объекты querydef для создания моего запроса.

http://access.mvps.org/access/queries/qry0013.htm

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 27 мая 2011

Дата, Пользователь и Тип - все это специальные слова или зарезервированные слова в MS Access. НЕ используйте их в качестве имен полей.

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

1 голос
/ 27 мая 2011

Создать новую базу данных.

Откройте новую базу данных и убедитесь, что DAO включен в ссылки.

Вставьте новый стандартный модуль, убедившись, что в разделе объявлений объявлен Option Explicit.

Затем вставьте этот код и запустите его.

Public Sub CreateTableZack()
    Dim strSql As String

    strSql = "CREATE TABLE tblZack (" & vbNewLine & _
        vbTab & "id COUNTER CONSTRAINT pkey PRIMARY KEY," & vbNewLine & _
        vbTab & "foo_text TEXT(255)," & vbNewLine & _
        vbTab & "date_assigned DATETIME);"
    Debug.Print strSql

    CurrentProject.Connection.Execute strSql
End Sub

Предполагая, что таблица создана успешно, создайте qryZack с этим в качестве SQL:

SELECT *
FROM tblZack;

Затем попробуйте свой код, чтобы открыть набор записей DAO на основе qryZack.

Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("qryZack")

Это работает?

Если нет, ваша установка Access может быть удалена ... Возможно, вам придется починить или переустановить ее. Вы также можете попробовать это на другом компьютере, на котором есть доступ, если можете.

Если он работает с новой базой данных, но не со старой, старая может быть повреждена. Сначала сделайте резервную копию, затем попробуйте Compact & Repair.

Другая проблема - это имена ваших полей. Дата, Пользователь и Тип - все слова, зарезервированные для доступа. См. Имена проблем и зарезервированные слова в Access . Я не могу сказать, что эти имена вызывают проблемы здесь, но использование зарезервированных имен для объектов базы данных (таблиц, полей, запросов и т. Д.) Может иметь драматические последствия ... как будто это сбивает с толку дерьмо из Access. Поэтому я старательно избегаю их.

Редактировать : Вам также следует проверить ссылки в вашей старой базе данных. Отсутствующие / неработающие ссылки также запутывают дерьмо в Access.

...