Поиск:

Ответ в темуСоздание новой темы Создание опроса
> EOleException, как перехватить ошибку ? 
V
    Опции темы
comtat
  Дата 11.1.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Подключаюсь через ADO к MS_Access
Код

str := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID='+Login+';';
str := str + 'Data Source='+IniDir+Database+';Mode=ReadWrite;';
str := str + 'Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";';
str := str + 'Jet OLEDB:Database Password="'+Pass+'";Jet OLEDB:Engine Type=5;';
str := str + 'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;';
str := str + 'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";';
str := str + 'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;';
str := str + 'Jet OLEDB:Don''t Copy Locale on Compact=False;';
str := str + 'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
ADOConnection1.ConnectionString := str;
ADOConnection1.Connected := true;
...

Необходимо проводить анализ ошибок таких как неверный путь к БД, неверный логин или пароль и т.д.
Как можно перехватить код ошибки ?


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
ТоляМБА
Дата 11.1.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Код

try
...твой код...
except
on e:Exception do
    begin
  ShowMessage(e.Message);
  ...твои действия в случае если твой код вызвал ошибку...
    end;
end;

PM   Вверх
comtat
Дата 11.1.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



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


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
SergeBS
Дата 12.1.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



comtat, 
ADOConnection.Errors.Count - сколько.
ADOConnection.Errors[i], i=0...ADOConnection.Errors.Count-1 - сами ошибки.
Это правда не коды ошибок, а сами сообщения. Переведешь на русский язык в меру желания.
PM MAIL   Вверх
comtat
Дата 12.1.2007, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



SergeBS , ТоляМБА  спасибо за помощь ! smile 
Вот что у меня получилось

Код

  str := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID='+Login+';';
  str := str + 'Data Source='+IniDir+Database+';Mode=ReadWrite;';
  str := str + 'Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";';
  str := str + 'Jet OLEDB:Database Password="'+Pass+'";Jet OLEDB:Engine Type=5;';
  str := str + 'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;';
  str := str + 'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";';
  str := str + 'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;';
  str := str + 'Jet OLEDB:Don''t Copy Locale on Compact=False;';
  str := str + 'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
  ADOConnection1.ConnectionString := str;
  try
    try
      ADOConnection1.Connected := true;
    except
      on E: EOleException do
        begin
          // Не верный путь к БД
          if (E.ErrorCode=-2147467259) then
            {Обработка ошибки}
          // Не верный логин или пароль
          if (E.ErrorCode=-2147217843) then
            {Обработка ошибки}
        end;
    end;
  finally
    {если все гуд}
  end;



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
SergeBS
Дата 12.1.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



comtat, 
Ошибочка: 26 строка - это совсем не {если все гуд}. Это {а все равно бабахну}. А {если все гуд} - сразу после 13 и перед except. Там можешь выставить флажок насчет гуд и по нему выпускать юзера в базу.


PM MAIL   Вверх
comtat
Дата 12.1.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



SergeBS пасиб  smile 
Еще тагды вопрос в тему если выложить БД на локальной машины, то со своей машины я могу подключиться,
а остальные не могут говорит, что не верный путь к БД хотя все верно.

Бд и exe писал на своей машине, в чем может быть проблема ?? 


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
SergeBS
Дата 12.1.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



comtat, 
Цитата
если выложить БД на локальной машины, то со своей машины я могу подключиться,
а остальные не могут говорит, что не верный путь к БД хотя все верно.

Я в таких случаях стряпаю udl-файл и пытаюсь подключиться им. Вообще:
1. Права доступа к файлам на машине. 
2. Блокировка другим приложением - ты открыл в исключительном режиме - остальные отдыхают. 
3. Просто блокировка при записи. Access 97 например строчной блокировки не имеет.

Вообще - не советую так делать. Если несколько юзеров одновременно будут одну Access-базу как файл подключать, то рано или поздно произойдет БАХ! И база сдохнет. Возможно - насмерть, т.е. без восстановления даже части данных.
Если нужно несколько юзеров - в 2000 и новее Офисе спрятана MSDE - младшая (по возможностям)  сестрица MS SQL server. Базу Access съест влегкую. И база у тебя тогда рухнет только вместе с винтом smile. Или запускай НА ОДНОЙ машине MS Jet (движок Access) и уже с ним работай юзерами - гимору больше, но будет многопользовательская.
PM MAIL   Вверх
comtat
Дата 13.1.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Трабла была с правами к БД

К одной БД базе будет коннектится только одно приложение, т.к. у заказчика нет возможности дылать локалку. А потом данные нуна будет как-то реплицировать. А Access позволяет делать репликации ? 

 smile 
Я бы и сам непротив бы пользоваться MSDE, но заказчик настаивает на Access типа эт круто  smile 


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
SergeBS
Дата 15.1.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



comtat, 
Цитата
А Access позволяет делать репликации ? 

Репликация != объединению.
PM MAIL   Вверх
comtat
Дата 15.1.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Цитата(SergeBS @  15.1.2007,  09:35 Найти цитируемый пост)
Репликация != объединению

Я в курсе  smile 
но все же Access поддерживает репликацию ?? 



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
SergeBS
Дата 15.1.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



comtat, 
Цитата
но все же Access поддерживает репликацию ?? 

Понятия не имею. Он мне по большому счету неинтересен. Да и в твоей задаче это неважно - сети-то нет. Значит все равно ручками файл тащить, через флэшку/RW-шку и т.п. 
PM MAIL   Вверх
comtat
Дата 15.1.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



SergeBS , а прав ведь, как сам запамятил . Спасибо !!  smile 


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Evenstain
Дата 5.3.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 13.11.2008

Репутация: 1
Всего: 0



такая вот проблема: пытаюсь перехватить ошибки класса EOleException. но delphi ругается, говорит, что

Цитата(Delphi)

[Error] Unit3.pas(107): Undeclared identifier: 'EOleException'


использую код типа:

Код

try
  .............
  .............
except
  on EOleException do 
begin
.................
.................
end
  ...
end;


объясните, что я делаю не так
PM MAIL   Вверх
pseud
Дата 5.3.2010, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Evenstain, смотри свою тему там ответил
Цитата

Цитата(Evenstain @  4.3.2010,  16:13 Найти цитируемый пост)
P.S. написал в разделе type: EOleException = class(Exception); вроде работает, но ошибку не ловит. что я делаю не так??

читаем хелп:
Цитата

EOleException is the exception class for OLE automation errors that occur in methods or properties of an object.
Unit
ComObj

не создавай свой класс EOleException (не справшивай почему), а в uses пропиши ComObj.



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1132 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.