Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.03.2008, 09:28
prsth prsth вне форума
Прохожий
 
Регистрация: 03.03.2008
Сообщения: 4
Репутация: 10
По умолчанию проверка ConnectionState (dbExpress)

Соединяюсь с MS SQL по dbExpress стандартным образом. после

MSSQLconnection.Connected := True;

хотелось бы сделать проверку на наличие соединения с базой при помощи анализа свойства ConnectionState, однако при попытке выполнить

if DataModule1.MSSQLConnection.ConnectionState = csStateOpen
begin
end;

компилятор ругается на undeclared identifier: csStateOpen. Пробовал сравнивать как строку 'csStateOpen' ругается на несоответствие типов String и TConnectionState.. Искал в инете в исходниках разных, везде проверяется как у меня в первом случае и должно работать. Не понимаю в чем ошибка.
Ответить с цитированием
  #2  
Старый 03.03.2008, 09:31
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

С БД никогда не работал, но подозреваю, что не хватает модуля, в котором объявлен тип TConnectionState.
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #3  
Старый 03.03.2008, 09:42
prsth prsth вне форума
Прохожий
 
Регистрация: 03.03.2008
Сообщения: 4
Репутация: 10
По умолчанию

он подключается в uses. Причем пробовал как вначале, так и после implementation аля чем черт не шутит. Не помогают такие манипуляции
Ответить с цитированием
  #4  
Старый 03.03.2008, 11:08
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

а может все из-за then

if DataModule1.MSSQLConnection.ConnectionState = csStateOpen then
begin
end;
Ответить с цитированием
  #5  
Старый 03.03.2008, 11:23
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

пробовал в разных вариантах если then есть и uses то все нормально
(смотри файл)
Вложения
Тип файла: zip MSSQLConnection.zip (3.9 Кбайт, 5 просмотров)
Ответить с цитированием
  #6  
Старый 03.03.2008, 11:37
prsth prsth вне форума
Прохожий
 
Регистрация: 03.03.2008
Сообщения: 4
Репутация: 10
По умолчанию

прошу прощения, пропустил then при написании сообщения. В программе я его испаользую Во избежание дальнейших недоразумений привожу весь код процедуры и задаю вопрос вдогонку. Почему-то компилятор не обращает внимания на try-except. При Попытке соединиться с базой с пустыми параметрами выдается стандартное сообщение об ошибке глобального обработчика исключений. Также раскомментирование строки с EDatabaseError вызывает ошибку 'Undeclared Identifier' для EDatabaseError, что совершенно сбивает меня с толку.

Цитата:
procedure TFormConnection.BitBtn1Click(Sender: TObject);
begin
DataModule1.MSSQLConnection.Params.Values['HostName']:= EditServName.Text;
DataModule1.MSSQLConnection.Params.Values['DataBase']:= EditDatabaseNAme.Text;
DataModule1.MSSQLConnection.Params.Values['User_Name']:= EditUserName.Text;
DataModule1.MSSQLConnection.Params.Values['Password']:= EditPassword.Text;

try
DataModule1.MSSQLConnection.Connected:=True;
except
// on EDatabaseError do begin
MessageDlg('Соединение не установлено!',mtError,[mbOK],0);
// end;
end;

FormConnection.Close;

// if DataModule1.MSSQLConnection.ConnectionState = csStateOpen then begin
// end;

end;
Ответить с цитированием
  #7  
Старый 03.03.2008, 11:44
prsth prsth вне форума
Прохожий
 
Регистрация: 03.03.2008
Сообщения: 4
Репутация: 10
По умолчанию

все проблемы решились с добавлением в uses "DBXpress, DB, SqlExpr". Спасибо!! В моей толстой книге и статьях в сети почему-то умалчиваются названия библиотек, которые необходимо подключить для нормальной работы.

Однако try-except всё равно не перехватывает исключение. Все комментарии снял, программа компилится нормально.
Ответить с цитированием
  #8  
Старый 04.03.2008, 11:37
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Вроде хватает даже одного uses DB;
кстати более удобно (по моему)
Код:
type
  TDataModule1 = class(TDataModule)
....
  public
    { Public declarations }
    procedure DoConnect();
  end;

и вызывать потом DataModule1.DoConnect();

про ошибку если запускаешь под Делфи сперва выскакивает ее ошибка а если нажать продолжить то срабатывает программный except
и второй вариант может ошибка возникает до try
в строках:
Код:
   DataModule1.MSSQLConnection.Params.Values['HostName']:= EditServName.Text;
  DataModule1.MSSQLConnection.Params.Values['DataBase']:= EditDatabaseNAme.Text;
  DataModule1.MSSQLConnection.Params.Values['User_Name']:= EditUserName.Text;
  DataModule1.MSSQLConnection.Params.Values['Password']:= EditPassword.Text;
попробуй пошаговое выполнение.
Удачи.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter