Elettracompany.com

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

Ошибочный аргумент access

Ошибки

Как восстановить базу данных Access с множеством ошибок? Recovery Toolbox for Access поможет исправить некорректные базы данных за пару кликов. С утилитой восстановления MDB вы можете исправить следующие ошибки:

  • Неизвестный формат базы данных «FileName.mdb ‘(Ошибка 3343)
  • База данных «FileName.mdb» нуждается в ремонте или не является файлом базы данных. (Ошибка 2239)
  • Возможно Вы или другой пользователь некорректно закрыли Microsoft Office Access в то время, когда база данных Microsoft Office Access была открыта. Вы желаете, чтобы Microsoft Office Access попытаться восстановить базу данных?
  • Ядро системы управления базой данных Microsoft Jet не может найти объект «ObjectName». Убедитесь, что объект существует и что вы записываете его имя и путь правильно. (Ошибка 3011)
  • Запись(и) не может быть прочитана; нет разрешение на чтение «ObjectName» (Ошибка 3112)
  • Не удается открыть базу данных «FileName.mdb. Возможно файл не является базой данных, совместимой с вашим приложением или файл может быть поврежден. (Ошибка 3049)
  • Вы не имеете необходимых разрешений на пользование объектом «FileName.mdb». Обратитесь к системному администратору или владельцу, создавшему объект для установки соответствующих разрешений для вас. (Ошибка 3033)
  • Недопустимый тип данных для поля (Ошибка 3259)
  • Непредвиденная ошибка 35012
  • Модификация таблицы не была успешной, так как она будет создавать дублирующие значения в индексе, первичном ключе или в отношении. (Ошибка 3022)
  • Microsoft Jet Database Engine не может открыть файл.
  • Visual Basic для Applications Project: эта база данных повреждена.
  • Ошибка «Недопустимая неисправность страницы . » (не обязательно является следствием повреждения базы данных)
  • Вы не имеете необходимых разрешений для открытия этого объекта. Пожалуйста, обратитесь к системному администратору.
  • [database.mdb] не является индексом в этой таблице. Посмотрите в индексы объекта TableDef для определения действительных имен индексов.
  • Microsoft Access обнаружил проблему и должен быть закрыт.
  • Операция не удалась — слишком много индексов — уменьшить количество и попробуйте еще раз.
  • Ошибка открытия/отказ при отображении ошибки.
  • Ядро системы управления базой данных Microsoft Jet не может найти объект MSysDB. Убедитесь, что объект существует и что вы используете правильное имя и путь. — 3011
  • СУБД Microsoft Jet не может найти объект MSysCompactError. Убедитесь, что объект существует и что вы используете правильное имя и путь.
  • СУБД Microsoft Jet не может найти объект ‘databases’. Убедитесь, что объект существует и что вы используете правильное имя и путь.
  • СУБД Microsoft Jet не может найти объект ‘filename’. Убедитесь, что объект существует и что вы используете правильное имя и путь.
  • СУБД Microsoft Jet Database Engine не может найти объект Msys*/databases. Убедитесь, что объект существует и что вы используете правильное имя и путь.
  • Запись (и) не может быть прочитана, нет разрешения на чтение для «database.mdb» — 3112
  • Не удалось найти поле «XXX» — 1017
  • Неверная закладка — 3159
  • Непризнанный формат базы данных. Возможно, база данных была создана более поздней версией Microsoft Access, чем та, которую вы используете. Обновите версию Microsoft Access на текущую, а затем откройте эту базу данных. — 3343
  • Вы не можете выполнить это действие в настоящее время. — 2486
  • Запись была удалена.
  • База данных была переведена в состояние пользователем «ххх» на компьютере «mmm», который предотвращает его от открытия или блокирования. — 3704
  • База данных была переведена в непредвиденное состояние.
  • База данных находится в непредвиденном состоянии; Microsoft Access не может открыть её.
  • База данных была преобразована из предыдущей версии Microsoft Access с помощью DAO сжатием базы вместо команды конвертирования в меню. Таким образом база данных осталась в не сконвертированном состоянии.
  • Дисковая ошибка – Зарезервированная ошибка (-1601) 3000
  • Таблица ‘TempMSysAccessObjects’ уже существует.
  • Запись(и) не могут быть прочитаны; нет прав на чтение ‘MSysAccessObjects’
  • Запись(и) не могут быть прочитаны; нет прав на чтение ‘MSysACEs’. — 3112
  • Ядро системы управления базой данных Microsoft Jet не может найти входящую таблицу или запрос ‘MSysAccessObjects’. Убедитесь в ее наличии и что имя написано правильно. — 3078.
  • Невозможно использовать «name»; файл уже используется. (Error 3045)
  • Заданный файл сейчас используется другим пользователем или сессией. Подождите пока другой пользователь или сессия работают с файлом и повторите операцию снова. — 3045
  • Недопустимая операция без текущего индекса. — 3019
  • ‘database.mdb’ не является индексом в этой таблице. Просмотрите коллекцию индексов объекта TableDef для определения допустимых имен индексов. — 3015
  • Проект Visual Basic for Applications в базе данных поврежден.
  • Ошибка доступа к файлу. Сетевое соединение возможно потеряно.
  • Это действие отбросит текущий код в режим разрушения. — 304548
  • Неожиданные проблемы с Microsoft Access и необходимо его закрыть. Мы извиняемся за неудобства.
  • AOIndex не является индексом в этой таблице.
  • Ядро системы управления базой данных Microsoft Jet остановил процесс, потому что Вы или другой пользователь пытаются изменить те же данные одновременно.
  • Для этого объекта необходима новая версия модуля Microsoft Jet.
  • Отказ Access (Ошибка некорректной страницы/GPF) при открытии mdb.
  • Microsoft Access обнаружил повреждения в этом файле.

Copyright © 2003 — Recovery Toolbox. Все права зарегистрированы. Microsoft®, Windows® и Outlook® являются зарегистрированными торговыми марками Microsoft® Corporation.

Помогите разобраться в Access

Guest

Guest

Guest

Barmutik

Guest

Hetman

BOPOHA

Если данных очень много, то для этого лучше использовать сервер БД. База Access не подходит для хранения больших объемов данных. Например, я использую mySQL 5. При этом меняется подход к разработке и возрастает скорость выполнения запросов. Для работы с БД не стоит делать связанных таблиц ODBC, лучше воспользоваться запросами к серверу (В режиме конструкруктора запроса в меню «Запрос»->»Запрос SQL» выбрать «К серверу»). Програмно лучше работать через ADO, она быстрее работает с серверами чем DAO, несмотря что через ODBC. Временные таблицы (результатов расчетов), можно хранитьв БД Access.

Читать еще:  Access онлайн работа

Если используется Access 2002 и выше, то можно перейди на проект Access и MS SQL Server. C этия я не работал.

Barmutik

Не стоит сбивать человека.. ADO и DAO это одно и тоже DAO — data access objects это предыдущее название ADO — active data objects . А ODBC (. (. ) database connection) — это вообще другая песня . никакого отношения к ADO или DAO не имеющая.

BOPOHA

Тот факт что DAO и ADO 2-е совершенно разные библиотеки доступа к данным. DAO создана специально для Access (+ c возможностью работать с другими БД через интерфейс ODBC), а ADO — новая библиотека работающая совершенно по другому принципу (OLE DB) и ориентирована на сервера (в частности MS SQL Server).
ODBC — Open DataBase Connection — общий интерфейс работы с любыми базами данных (устарел), был бы драйвер для этой БД.
При работе из Access c сервером mySQL меня интересовала произовдительность. Оказалось, что хранимый запрос к серверу выполняется почти мнгновенно (по сравнению с запросом к большей таблице Access и связанной таблицей к серверу). И подключается этот запрос через интерфес ODBC. Когда встает вопрос программно работать с табличками на сервере библиотек ADO оказывается производетельней и работает она через следующие интерфейсы: ADO -> OLE DB Provider -> ODBC -> MySQL ODBC 3.51 Driver -> mySQL сервер.
Для DAO цепочка следующая DAO -> ODBC -> MySQL ODBC 3.51 Driver -> mySQL сервер.

В Access можно использовать одновременно две библиотеки DAO и ADO, достаточно добавить на них ссылки. Только объявлять объекты нужно с использованием имен библиотек:

Guest

BOPOHA

Для: Елена Припихайло
Вы правы. Я совсем забыл еще об несколько способов оптимизации.

Итак, первый:
У меня была ситуация, когда необходимо было хранить информацию о

130 000 организациях в год. С целью последующего анализа. Реализация была следующая: предприятия хранились в отдельных таблицах по годам.
В этом случае потребовалось реализовывать переход на следующий год и функции формирования имен таблиц. Если бы не нужно было проводить анализ за несколько лет одновременно таблицы хранились бы в раздельных файлах mdb.

Второй:
Уменьшить размер записи в таблицы. Например, за счет переноса полей (особенно, MEMO) в другую таблицу. Оптимизировать размер полей. Например: для поля месяцев хватит размера «Байт». Особенно внимательно необходимо отнестись к текстовым полям.

Третий:
Разбить таблицу на две таблицы. Например, если часть записей заполняются для ограниченного числа записей, то вынести их в отдельную таблицу.

Четвертый:
Удалить не нужные индексы (они могут занимать 50% от размера таблицы, особенно по текстовым полям), а добавить только необходимые, например:
Составные, если часто используется выборка по нескольким полям одновременно.
Добавить индексы по полям, которые используются для объединения таблиц.
Оптимизация индексов увеличит скорость выполнения запросов.

Пятый:
Оптимизация самих запросов. Выбирать только те поля, которые нужны. Уменьшить количество таблиц: например, убрать справочники, их можно подключить на самом отчете. Стараться сделать запрос более селективным — уменьшить объем выбираемых записей при помощи условий отбора. Заменить вложенный запрос в выражении условия на значения, которые он возвращает (если конечно это возмоно). Постараться избежать преобразований типов данных при выполнении запроса: например, текст в число, дата в текст и наоборот. Постараться, использовать только стандартные функции SQL (Sum(), First() и т.д.).

Шестой:
Использование временных таблиц (которые могут распологаться во временной БД). При расчете часть данных можно добавлять во временные таблицы, для дальшейшего расчета. Или для расчета в коде с минимальным использованием запросов. На основании временной таблицы может работать отчет.

Необязательные аргументы функций VBA

Задание типа необязательного аргумента

Для того, чтобы правильно использовать функции и обнаруживать операторы, которые передают функции неверные значения объявляется тип необязательного аргумента (иначе они имеют тип Variant). Тип необязательного аргумента объявляется тем же способом, что и тип обязательного аргумента — при помощи ключевого слова As:

Function NameFunct(tStr As String, Optional neobArgument As Integer) As String

Значения по умолчанию для необязательных аргументов

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

Значение по умолчанию присваивается необязательному аргументу с помощью знака равенства и предоставления значения так же, как при объявлении именованной константы:

Function GetBookName(Optional lDflt As String = «Book1») As String

Передача аргументов

Существуют два способа для передачи информации в функцию-процедуру: по ссылке (по умолчанию) и по значению.

При передаче данных функции по ссылке на самом деле передается только адрес памяти, который ссылается на исходные данные, определенные в списке аргументов функции во время ее вызова.

Читать еще:  Как составить базу данных в access

Это означает, что если функция изменяет значение в любом из аргументов, то исходные данные также изменяются.

При передаче аргумента по значению VBA делает копию исходных данных и передает эту копию функции. Если функция изменяет значение в аргументе, передаваемом по значению, изменяется только копия данных, а исходные данные не изменяются.

Т.к. передача по ссылке позволяет функции изменять значение исходных данных ее аргументов, аргументы, передаваемые по ссылке, могут получить нежелательные побочные значения.

В листинге, представленном выше, показано, что до применения функции Argument строковая переменная s1 содержала текстовую строку в нижнем регистре, а после применения функции она уже содержит строку в верхнем регистре.

Строго говоря, побочные результаты являются необязательными и в большинстве случаев — нежелательными. Для предупреждения таких побочных результатов необходимо, чтобы функция работала с копией значения аргумента, а не с исходными данными.

Чтобы явно указать, передает VBA аргумент по значению или по ссылке, надо использовать ключевые слова ByVal, ByRef перед аргументом, для которого необходимо задать метод передачи.

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

В начало страницы

В начало страницы

Ошибка MS Access: SELECT, оператор включает в себя зарезервированное слово или аргумент Ошибочные или отсутствуют, или неверная пунктуация

December 2018

9.5k раз

[Обновление: запрос работает, если я жёстко в параметрах — поэтому он должен делать с тем, как я добавляю параметры запроса]

Для жизни, я не могу понять, что проблема здесь.

Вот запрос передается в DataReader:

Параметры добавляются в следующем порядке:

Если я ввожу этот запрос в доступ непосредственно работает просто отлично. Однако, при выполнении запроса из ASP.NET, я получаю следующее сообщение об ошибке:

ЗЕЬЕСТ зарезервированного слова или аргумент Ошибочные или отсутствуют, или неверная пунктуация.

Что я делаю неправильно?

6 ответы

Является ли это, что параметр pResultSet набран в OleDbTypeInteger?

нравится ли он заказ на в подзапросах? Это не поддерживается в SqlServer.

Изменить: Моя ошибка, я пропустил Топ?

Смотрите, если изменения запроса таким образом помогают.

EDIT: На стороне записки, что значение передается с помощью этих 2 параметров? Являются ли оба номера?

N в TOP N запросов в Jet SQL не могут быть настроены параметры, период. Вы должны написать SQL строку на лету, чтобы получить переменную N. Это означает, что либо вы не можете использовать сохраненную QueryDef, или что вы должны изменить SQL в QueryDef и сохранить его, прежде чем использовать его.

Рассмотрим переписывание вам TOP N конструкции с использованием связанных подзапросов.

Вот простой пример. Рассмотрим таблицу с именем последовательности с колонкой (сл) уникальных INTEGER х (стандартный SQL вспомогательной таблицы , которая является полезным в бесчисленных ситуациях — каждая база данных должна иметь один!)

И следующие запросы возвращают две наивысшие значения для SEQ:

Плюсы: Ядро базы данных Access выполняет это относительно хорошо (как и следовало ожидать несвободный синтаксис). Минусы: Фирменная синтаксис поэтому плохая переносимость. N (как в TOP N) не может быть параметризованными. Для меня, используя DESC в ORDER BY возвращать высокие значения является нелогичным.

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

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

РЕДАКТИРОВАТЬ:

Как у Вас не было никакой удачи до сих пор я еще пытаться угадать. Не могли бы вы попробовать изменить «*» вместо этого явно назвать столбцы, которые вы хотите.

ЗАКЛЮЧИТЕЛЬНЫЕ EDIT:

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

Ошибочный аргумент access

Доброго времени суток, и снова я ловлю СТОП получая ошибку
Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.
Как я получаю ошибку:
В общем есть клиент. который чтобы подключиться к серверу должен послать логин и пароль а в ответ получить некое число, которое указывает ему что делать дальше

var
Account : TStringList;
begin
Account := TStringList.Create;
Account.CommaText := Socket.ReceiveText; //получаем строку от клиента
if (Account.Values[«Login»]<>«») and (Account.Values[«Password»]<>«») // вытягиваем оттуда нужные данные
then
begin
log.Lines.Add (Account.Values[«Login»] + » + » + Account.Values[«Password»]); //показываем админу сервера
try
with ADOQuery do
begin
ADOQuery.SQL.Clear;
<вытягиваем из БД значение поля access таблицы access>
ADOQuery.SQL.Add(«SELECT level FROM access WHERE (login=:qlogin) and (passw=:qpassw)»);
ADOQuery.Parameters.ParamByName(«qlogin»).value := Account.Values[«Login»];
ADOQuery.Parameters.ParamByName(«qpassw»).value := Account.Values[«Password»];
ADOQuery.Active:=true;
<где-то до этой строки программа начинает материться>
ShowMessage(IntToStr(RecordCount)); //а затем радостно нам сообщает что в базе есть 1 такой пользователь
end;
except
on e:Exception do
end;
end;
end;

Читать еще:  Картинки для фона презентаций powerpoint


sniknik © ( 2013-01-14 15:46 ) [1]


Ega23 © ( 2013-01-14 15:47 ) [2]

Во-первых, у тебя утечка памяти: ты не разрушаешь Account.
Во-вторых, зачем with ADOQuery?
В-третьих, его надо закрывать, вообще-то.
В-четвёртых: признайся, сам писал код, или спёр у кого-то?


sniknik © ( 2013-01-14 15:49 ) [3]

вот где проблема
on e:Exception do
end;


sniknik © ( 2013-01-14 15:51 ) [4]

хрень какая то
with ADOQuery do
begin
ADOQuery.SQL.Clear;


McLotos © ( 2013-01-14 16:32 ) [5]

sniknik злой ты =)
Ega23
1. Account не разрушаю потому-что он дальше ещё много где используется. это же не весь код, а только проблемная часть
2. Варианты, предложения, идеи?
3. Я просто пробовал оба варианта и через with do и просто с указанием элемента. в моем посте представлен вариант 2in1
Ну хорошо. как вариант я уберу
with ADOQuery do
всё-равно в представленном примере ADOQuery дописано в каждую строку
Вам от этого станет легче понять моя проблему? Думаю нет
4. Вопрос не относится к теме, поэтому отвечать не обязан =)

sniknik почему хрень? читайте выше, я объяснил этот момент


sniknik © ( 2013-01-14 16:42 ) [6]

> sniknik почему хрень?
эксепты прятать нельзя.
with он не просто так, он для чего то. сначала ставить with а после писать так как будто его нет . «хрень какая то»

> читайте выше, я объяснил этот момент
где? не вижу.

+
если
> //а затем радостно нам сообщает что в базе есть 1 такой пользователь
доходит до этой строки, и таки сообщает (а не перекидывает в ексепт), то ошибка дебагтайма, можно «забить» на нее.


sniknik © ( 2013-01-14 16:45 ) [7]

++
level access могут быть зарезервированными словами. и тогда может быть типа варнинга, а после работает.
поставь в кавычки []


sniknik © ( 2013-01-14 16:45 ) [8]


McLotos © ( 2013-01-14 16:59 ) [9]

> поставь в кавычки []
не понял
где?
в какой части кода?


Ega23 © ( 2013-01-14 17:14 ) [10]


> в какой части кода?

Это твой код, или нет?


McLotos © ( 2013-01-14 17:32 ) [11]

Ega23 Ваши сообщения абсолютно не информативны, варианта 2:
— либо Вы продолжаете забивать форум пустыми по смыслу и содержанию сообщениями,
— либо я просто начинаю Вас игнорировать как пустую переменную. Хотя да, следуя Вашему же совету — Пустую переменную нужно разрушать! =)


McLotos © ( 2013-01-14 17:33 ) [12]

+ не «продолжаете», а «прекращаете»
у меня что-то ошибки в логике начинаются


sniknik © ( 2013-01-14 17:42 ) [13]

> абсолютно не информативны
но от них/ответа(реакции ни них) зависит как тебе отвечать.


Ega23 © ( 2013-01-14 17:48 ) [14]


> — либо я просто начинаю Вас игнорировать как пустую переменную.
> Хотя да, следуя Вашему же совету — Пустую переменную нужно
> разрушать! =)

Есть третий вариант: я просто проигнорирую твою проблему. Точнее, тебе уже всё ответили. Ну а то, что ты не понимаешь ответов — это уже твои проблемы, не так ли?


McLotos © ( 2013-01-14 17:50 ) [15]

Можно отвечать как угодно, я в программировании уже не первый год, просто на delphi перешёл всего 3-4 дня назад, раньше программировал только на php, надоело, захотелось вспомнить то что в колледже проходил когда-то. Тем более delphi мне сейчас кажется технологией для лентяев, потому-что одно дело когда ты пишешь каждую строчку кода в блокноте и знаешь там каждую букву, и совсем другое, когда большая часть кода появляется при движении мышки по экрану.


McLotos © ( 2013-01-14 17:52 ) [16]


> это уже твои проблемы, не так ли?

Спасибо, Ega23. Вы очень любезны.


sniknik © ( 2013-01-14 17:58 ) [17]

> просто на delphi перешёл всего 3-4 дня назад
а delphi тут и не причем вообще то.


McLotos © ( 2013-01-14 18:03 ) [18]

> а delphi тут и не при чем вообще то.

да? а в чем тогда проблема? почему выскакивает эта ошибка?

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


DVM © ( 2013-01-14 18:13 ) [19]


> McLotos © (14.01.13 15:33)


> Аргументы имеют неверный тип, выходят за пределы допустимого
> диапазона или вступают в конфликт друг с другом.

Поля login и passw в таблице access какой тип имеют? Какую размерность?

Названия login, acces, level я бы все же поменял, от греха, на что нибудь более уникальное.


McLotos © ( 2013-01-14 18:35 ) [20]

id — int(2)
login — varchar(16)
passw — varchar(32)
level — int(2)


Игорь Шевченко © ( 2013-01-14 19:17 ) [21]

Ссылка на основную публикацию
Adblock
detector