Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2012, 08:12   #1
Silentdi
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 14
По умолчанию Ядро базы данных Microsoft jet не может найти входную таблицу или запрос

Доброго времени суток! Есть такая проблема.
База данных MS Access
Добавляю в нее таблицу запросом AdoQuery, таблица добавляется, за тем через AdoTable открываю таблицу, все работает, но когда я добавляю 3 или 4 таблицу, бывает и вторую, вылетает сообщение Ядро базы данных Microsoft jet не может найти входную таблицу или запрос. Что это может быть? Заранее спасибо
Silentdi вне форума Ответить с цитированием
Старый 16.08.2012, 09:29   #2
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

Цитата:
Добавляю в нее таблицу запросом AdoQuery, таблица добавляется
нужно сделать Reconnect ибо стуктура базы, "внезапно" поменялась и появились новые таблицы.

AdoConnection.Connected:=false;
AdoConnection.Connected:=true;

Последний раз редактировалось Lesha; 16.08.2012 в 09:32.
Lesha вне форума Ответить с цитированием
Старый 31.10.2012, 19:05   #3
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Похожая проблема, только открываю в ADOQuery и рекомендация выше не помогает..
Dux вне форума Ответить с цитированием
Старый 31.10.2012, 21:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
таблица добавляется
Точно добавляется? Коммит (он же Post) проходит успешно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2012, 23:09   #5
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

ADO_Test.rar

Ув. Stilet, просьба посмотрите вложенный пример.
1. Вводите имя
2. Нажимаете Add
3. Вылетает ошибка (причем не всегда, а через раз)

Уже замахался за сегодня, причину пока найти не могу. При нажатии Add в базе копируется пустая таблица Empty под новым именем. Однако при отображении новой таблицы возникает ошибка "Ядро базы данных Microsoft jet не может найти входную таблицу или запрос"...
Dux вне форума Ответить с цитированием
Старый 01.11.2012, 20:21   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Ну, я бы вообще начал с другого - зачем Вы используете на одну базу столько ADOConnection'ов: 2 формы - 2 компонента. Вообще, для того, чтобы не плодить все эти компоненты прямо в формах, используются юниты типа Datamodule. Вероятно, Вы рефрешите коннект только на одном ADOConnection и совершенно забываете про другой - отсюда и возникает ошибка...

Далее - что ЭТО такое:

Код:
sql_line:='SELECT * INTO ' + '`'+employee_name+'`' + ' from EMPTY';
не лучше ли будет написать:

Код:
sql_line:='SELECT * INTO '''+employee_name+''' from EMPTY';
это я написал наиболее близкий к исходному вариант. И зачем вообще брать имя таблицы в кавычки? Компилятор у меня на это ругается: "ошибка синтаксиса", не знаю, как у Вас.

Учитывая все вышесказанное, меняем код на:

Код:
 employee_name:=edit1.text;
 sql_line:='SELECT * INTO ['+employee_name+'] from EMPTY';
 ADOQuery1.Close;
 ADOQuery1.SQL.Text := sql_line;
 ADOQuery1.ExecSQL;
 ADOQuery1.close;

...


ADOConnection1.Connected:=false;
Form2.ADOConnection1.Connected:=false;
ADOConnection1.Connected:=true;
Form2.ADOConnection1.Connected:=true;

sql_line:='SELECT * FROM ['+employee+']';
Form2.ADOQuery1.SQL.Clear;
Form2.ADOQuery1.SQL.Add(sql_line);
Form2.ADOQuery1.Active:=True;
и получаем работоспособную программу.
Ну, и зайдя в Акцессовский файл, видим добавленную таблицу.

Правда, возник у меня вопрос: Вы что, всерьез собираетесь добавлять таблицу на каждую запись? А если там миллион записей будет - что тогда? Я бы, конечно, с интересом глянул на файл access с миллионом таблиц внутри; я бы его даже создал из любопытства, загнав в цикл процедуры создания таблиц... Но комп напрягать не хочется, да и страаашно

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

Последний раз редактировалось Sciv; 01.11.2012 в 21:38.
Sciv вне форума Ответить с цитированием
Старый 01.11.2012, 20:41   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Далее - что ЭТО такое:
Это имя таблицы, а вы ее уделали кавычками , но для аксеса лучше [] а не апострофы.
eval вне форума Ответить с цитированием
Старый 01.11.2012, 21:20   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
а вы ее уделали кавычками
Это не я, это автор Я же написал ниже, что:

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

Насчет [] - правда Ваша, я тестировал по-быстрому на английских символах и цифрах - естественно, все шло. С русскими без скобок выдавалась бы ошибка - тут к гадалке не ходи.

UPDATE Подправил код в соответствии с замечаниями Eval

Цитата:
а вы ее уделали кавычками
Это не я, это автор Я же написал ниже, что:

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

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

Последний раз редактировалось Stilet; 01.11.2012 в 23:21.
Sciv вне форума Ответить с цитированием
Старый 01.11.2012, 23:20   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
просьба посмотрите вложенный пример.
Посмотрел. Поменял пути к БД (у тя там абсолютные были - поставил свой путь). Запустил, создал новую таблицу. Создалась. Перезапустил прогу - таблица на месте.
Еще раз перезапустил - таблица на месте и открывается нормально.
Насчет коммита - тоже проблем не увидел в коде.

Делаю вывод что проблема в провайдере.

Цитата:
Я бы, конечно, с интересом глянул на файл access с миллионом таблиц внутри
У меня на работе такое вращается (не лимон, но около 200 тысяч таблиц). Вроде бы даже работает стабильно.
I'm learning to live...

Последний раз редактировалось Stilet; 01.11.2012 в 23:23.
Stilet вне форума Ответить с цитированием
Старый 02.11.2012, 00:27   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
У меня на работе такое вращается (не лимон, но около 200 тысяч таблиц).
Виталий, Вы не оговорились? Именно 200 тысяч таблиц, не записей в таблице? Не могу даже вообразить, в кокой предметной области понадобилось такое извращение..
Похоже, для каждого описываемого объекта (клиента, предприятия, модели) создаётся своя отдельная таблица? А клиентов/моделей/сущностей 200 тысяч?..
забавно!!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос на добавления полей в таблице базы данных через phpMyAdmin SwanHeart PHP 6 11.07.2011 20:12
Как правильно написать запрос на удаление строки из базы данных? Arik80 Помощь студентам 4 24.06.2011 22:15
Програма не может найти тип данных, ошибки Ladanua C# (си шарп) 11 18.06.2011 23:40
Ядро базы данных Microsoft Jet не может найти входную таблицу.... _-Re@l-_ БД в Delphi 0 27.06.2010 16:27
Запрос на вставку данных в таблицу (Проблема непустых ячеек) Ramires SQL, базы данных 3 02.10.2008 08:03