Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 09.09.2011
Сообщений: 17
1

БД Аксесс. Непонятно откуда взялась ошибка

02.03.2012, 10:03. Показов 1028. Ответов 16
Метки нет (Все метки)

Здравствуйте! Написал вот такой вот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.FormActivate(Sender: TObject);
begin
 
ADOConnection1.Close;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'
+'Data Source='+ExtractFilePath(ParamStr(0))+'/Anketa.mdb'+
'; Persist Security Info=false ';
ADOConnection1.Open;
 
ADOConnection1.Connected:=true;
Form2.ADOTable1.Active:=true;
Form2.ADOTable2.Active:=true;
Form2.ADOTable3.Active:=true;
Form2.ADOTable4.Active:=true;
Form2.ADOTable5.Active:=true;
end;
Куда надо поместить данный код, чтобы при открытии программы подключалась БД из папки с самой программой?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2012, 10:03
Ответы с готовыми решениями:

Откуда взялась картинка?
Доьрое время суток! Установил вчеиа майбь последней вермии. При регистрации картинка против...

Откуда взялась рамка?
Рамку видно глазами, а в инструментах разработчика её нет. Рамка вокруг элемента .product.large...

Откуда взялась энергия
Как известно ничего не берётся из ниоткуда. А откуда же изначально взялась энергия? Например...

Откуда взялась единица?
На странице index.php, содержащей произвольный код, добавляю header вот так: <?php echo...

16
38 / 70 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 10:41 2
OnFormShow
1
0 / 0 / 1
Регистрация: 09.09.2011
Сообщений: 17
02.03.2012, 10:46  [ТС] 3
Может я что-то не так делаю, но появляется ошибка: Не выполнена проверка подлинности!
0
38 / 70 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 10:50 4
Ты не прошел провернку на ПОДЛОСТЬ)))
Delphi
1
2
ADOConnection1.Open; //это надо убрать
ADOConnection1.Connected:=true; // Это оставить
1
0 / 0 / 1
Регистрация: 09.09.2011
Сообщений: 17
02.03.2012, 11:05  [ТС] 5
Open убрал, Connected-оставил, все равно та же ошибка( Но БД подгружает, когда раз 5 эту ошибку закроешь.

Добавлено через 10 минут
Нашел проблему, надо было сначала все таблицы отключить)) ЗАРАБОТАЛО! Спасибо)
0
1237 / 1076 / 185
Регистрация: 04.04.2011
Сообщений: 3,730
02.03.2012, 11:14 6
Delphi
1
OnFormShow
Нет, при проблеме с подключением (нет файла БД) при запуске программы будет "зависон" либо белое (частично белое) пятно вместо Вашей кульно-рулезной формочки

По теме
Самым первым оператором в указанном фрагменте поставьте
Delphi
1
if Tag>0 then exit;
а последним
Delphi
1
 Tag := 0;
Без этих двух строк код будет выполняться не один ираз при запуске, а каждый раз как форма становится активной, т.е. получает фокус !

По ошибке:
Она - следствие неверно указанной строки ConnectionString, в Вашем случае это скорее всего неверно заданный путь к файлу базы (либо отсутствие этого файла в указанной папке, что в общем-то то же самое) для Jet OLE.
Чтобы убедиться что путь правильный вставьте перед ADOConnection1.Open строку
Delphi
1
ShowMessage(ADOConnection1.ConnectionString);
Добавлено через 1 минуту
Delphi
1
2
ADOConnection1.Open; //это надо убрать
ADOConnection1.Connected:=true; // Это оставить
А есть разница ?
1
0 / 0 / 1
Регистрация: 09.09.2011
Сообщений: 17
02.03.2012, 11:24  [ТС] 7
Спасибо, перенес код на активацию формы)) Извиняюсь за беспокойство, а у Вас нет опыта общения с DBImage? Как в него засунуть jpg и сохранить в БД?
0
1237 / 1076 / 185
Регистрация: 04.04.2011
Сообщений: 3,730
02.03.2012, 11:31 8
TBLOBField.LoadFromFile/LoadFromStream
+ F1
0
38 / 70 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 11:36 9
Цитата Сообщение от MsGuns Посмотреть сообщение
Delphi
1
OnFormShow
Нет, при проблеме с подключением (нет файла БД) при запуске программы будет "зависон" либо белое (частично белое) пятно вместо Вашей кульно-рулезной формочки
Не будет зависона. Просто выскочить Exception и формочка не откроется
Цитата Сообщение от MsGuns Посмотреть сообщение

Добавлено через 1 минуту

Delphi
1
2
ADOConnection1.Open; //это надо убрать
ADOConnection1.Connected:=true; // Это оставить

А есть разница ?
Дурацкий вопрос.
0
1237 / 1076 / 185
Регистрация: 04.04.2011
Сообщений: 3,730
02.03.2012, 11:49 10
Delphi
1
Не будет зависона. Просто выскочить Exception и формочка не откроется
В случае исполнения кода, приведенного в [1], а есть надежды, что Вы таки писали свою рекомендацию непосредственно для него, а не вообще для сферических коней в вакууме, - произойдент именно зависание и белые пятна. Если, конечно, Вы не выставите секундный таймаут в коннекшине - но и этом случае прорисовка ВСЕХ деталей формы не гарантирована

Delphi
1
Дурацкий вопрос.
А может это совет дурацкий ?
0
38 / 70 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 11:51 11
MsGuns, белые пятна у вас это когда вы приходите с перепоя на работу.
А может это совет дурацкий ?
Нет, именно вопрос
0
1237 / 1076 / 185
Регистрация: 04.04.2011
Сообщений: 3,730
02.03.2012, 11:58 12
Ис справки Делфи:
Description

Set Connected to true to establish a connection to an ADO data store without opening a dataset. Set Connected to false to close a connection. The default value for Connected is false.

An application can check Connected to determine the current status of a connection. If Connected is true, the connection is active; if false, and the KeepConnection property is also false, then the connection is inactive.

Connected can also be used in a program to determine the success of a call to the Open method (a true value in Connected) or the Close method (a false value).


В контексте фрагмента кода, приведенного ТС, следует что Ваш совет не даст результат или не имеет смысла, т.е. дурацкий

Добавлено через 4 минуты
Delphi
1
MsGuns, белые пятна у вас это когда вы приходите с перепоя на работу.
Может быть, не знаю, т.к. давненько не проверял ибо с перепою на работиу не хожу, да и перепою уже лет так много не бывало

Но Вам верю, конечно, как человеку, безусловно, опытному в таких делах и знающему ))
0
38 / 70 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 12:03 13
Ну и что?
давайте тогда писать
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ADOConnection1.Open();
ADOConnection1.Open();
ADOConnection1.Open();ADOConnection1.Open();
ADOConnection1.Open();
ADOConnection1.Open();
ADOConnection1.Open();
ADOConnection1.Open();
ADOConnection1.Connected:=true;
ADOConnection1.Connected:=true;
ADOConnection1.Connected:=true;
ADOConnection1.Connected:=true;
ADOConnection1.Connected:=true;
ADOConnection1.Connected:=true;
ADOConnection1.Connected:=true;
Добавлено через 2 минуты
Но Вам верю, конечно, как человеку, безусловно, опытному в таких делах и знающему ))
Мой опыт достиг такого уровня, что выработался имунитет к белым пятнам, как в программировании так и с перепоя:cofee2:
0
1237 / 1076 / 185
Регистрация: 04.04.2011
Сообщений: 3,730
02.03.2012, 12:14 14
Не знаю Ваш опыт в области перепоя, но вот в области проектирования СУБД уже представляю. И он, судя по последнему посту, весьма скромен.
Иначе Вы бы понимали, что в нормальных программах в дизайне при компилляции "выходного" exe-файла нет ни открытых соединений, ни тем паче таблиц (и вообще ничего открытого). Все открытия выполняются непосредственно на этапе выполнения программы (все сразу, по очереди или по мере надобности - это уже вопрос интерфейса). Правильная программа сначала делает попытку соединиться с БД и только если соединение выполнено, делаются соответствующие открытия датасетов.
Исходя из вышесказанного строка
Delphi
1
ADOConnection.Connected := true;
и строка
Delphi
1
ADOConnection.Open
абсолютно идентичны (с приведенным ТС фрагментом аналогично, хоть у него и может быть в дизайне все открыто
Поэтому дурацкий был вопрос, но не ответ, намекающий что товарищ не в теме, надо попытаться въехать (или отъехать, что в данном случае было бы много лучше
0
38 / 70 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 12:21 15
MsGuns,
Delphi
1
2
ADOConnection.Connected := true;
ADOConnection.Open
Молодецю Будем номинировать тебя на премию.

Как ты думаешь зачем я убрал одну строку?
Ответ: А ну да, они же идетичны!
Так, что дурацкий именно твой вопрос!
-----------------------------------------
Что касается опыта, то Access это БД?
0
1237 / 1076 / 185
Регистрация: 04.04.2011
Сообщений: 3,730
02.03.2012, 12:32 16
Поэтому дурацкий был ответ, но не вопрос
Запутали Вы меня совсем Вашими эвфемизмами )

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

ЗЫ. Однако про перепой это Вы напрасно. Я действительно уже давно много не пью - нельзя, видите ли, да и не смогу наверное уже

Добавлено через 3 минуты
Delphi
1
Что касается опыта, то Access это БД?
Вне сомнений. Причем достаточно уникальная. В том смысле что являясь по физической сути локальной полностью построена по идеологии "клиент-сервер". А также в том смысле что вполне работает без самого "сервера", т.е. акцеса (Хотя если разобраться, акцес это и не сервер вообще, а просто "клиент", работающий с сервером - MS ADO DB

Добавлено через 3 минуты
работающий с сервером - MDAC
Уточняю во избежание обвинения в гомосексуализме, большивизме, наркомании или еще каком пороке, который привидится уважаемому оппоненту в моих постах
0
38 / 70 / 10
Регистрация: 03.02.2012
Сообщений: 362
02.03.2012, 12:32 17
MsGuns, я рад, что к ван ноконец то дошло
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2012, 12:32

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Откуда в уравнении взялась единица?
Есть уравнение по вычислению остатка от деления (см скрин). Вопрос: Каким образом была получена...

Пожалуйста, объясните, откуда взялась 1/2
Всем приветик) Всегда, когда я что-то решаю, и если есть возможность проверить правильный ли мой...

Three js, откуда взялась переменная length?
Вот собственно и весь вопрос. Необъявленная переменная length, да еще и передается как параметр на...

MSysCompactError откуда она взялась?
есть БД Access на диске D:\BD.mdb. при работе с ней создается таблица MSysCompactError. Далее не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.