Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.141.202] |
|
Сообщ.
#1
,
|
|
|
Проблема такая: устанавливаю соединение с базой sql через AdoConnection. Ввожу в поле edit имя базы. Если введено имя существующей базы, то соединение устанавливается. А если несуществующей - то delphi 2010 выдает ошибку Error "Источник данных не найден и не указан драйвер, используемый по умолчанию". Как сделать так, чтобы выводилось корректное соообщение о т ом, что соединение не удалось установить?
procedure TFormConnection.Edit1Change(Sender: TObject); var Edi : TEdit; begin Edi := Sender as TEdit; s:=edi.Text; end; procedure TFormConnection.ПодключитьClick(Sender: TObject); begin FormMain.ADOConnection1.Connected := false; FormMain.AdoConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=' + s; FormMain.ADOConnection1.Connected := true; if FormMain.ADOConnection1.Connected = true then begin ShowMessage('Соединение установлено!'); end else ShowMessage('Соединение не удалось установить!'); end; |
Сообщ.
#2
,
|
|
|
>>> TFormConnection.ПодключитьClick(Sender: TObject);
У кнопки имя Подключить кириллицей набрано? Лучше переименовать в Connect, на всякий случай... Edit1Change зачем нужен? Если только для присвоения глобальной переменной s, то выкинуть. Кстати, глобальные переменные лучше не использовать http://www.gunsmoker.ru/2011/04/blog-post.html >>> чтобы выводилось корректное соообщение о т ом, что соединение не удалось установить Сообщение как раз корректное, и можно с большой вероятностью узнать истинную причину. Но если очень хочется поменять, то через блок try...except, примерно так procedure TFormConnection.ConnectClick(Sender: TObject); begin FormMain.ADOConnection1.Connected := false; FormMain.AdoConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source="' + Edit1.Text +'"'; // переменная s не нужна try FormMain.ADOConnection1.Connected := true; ShowMessage('Соединение установлено!'); except ShowMessage('Соединение не удалось установить!'); end; end; |
Сообщ.
#3
,
|
|
|
Цитата maxjuvefan @ На Билдере - вот так;Как сделать так, чтобы выводилось корректное соообщение о т ом, что соединение не удалось установить? bool __fastcall TFDM::Connect() { String dbName = Format("%s%s", ARRAYOFCONST((ExtractFilePath(Application->ExeName), DB_FILE_NAME))); // для старших версий акцесса и ACCDB-файла: // Connection->ConnectionString = Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Persist Security Info=False", ARRAYOFCONST((dbName))); // для версий 2000-2007 и MDB-файла: Connection->ConnectionString = Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False", ARRAYOFCONST((dbName))); try { Connection->Open(); } catch (Exception *E) { Application->MessageBox(E->Message.c_str(), L"Ошибка при соединении с базой", MB_ICONWARNING); // !!!!!!!!!!!!!!!!! return false; } return true; } |