Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.134.104.173] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток. Написал программу для работы с БД, используя для этого компоненты ADOConnection, ADOQuery, DataSource, DBGrid и OpenDialog1. БД с расширением mdf открывает через свойство ConnectionString компонента ADOConnection. Добавляет новые данные, редактирует, удаляет. Только вот мне понадобилось открывать БД щелчком по кнопке через компонент OpenDialog1. Как это можно сделать?
|
Сообщ.
#2
,
|
|
|
Цитата maxjuvefan @ ADOConnection Что пишем в ConnectionString? Вот путь и записываем из OpenDialog1. |
Сообщ.
#3
,
|
|
|
В ConnectionString следующее: Provider=MSDASQL.1;Persist Security Info=False;Data Source=Tel02
Данный код не работает procedure TFormMain.ConnectionClick(Sender: TObject); begin if OpenDialog2.Execute then AdoConnection1.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=' + OpenDialog2.FileName; AdoConnection1.Open; end; Выдает ошибку: "Источник данных не найден и не указан драйвер, используемый по умолчанию" |
Сообщ.
#4
,
|
|
|
Что такое
Цитата maxjuvefan @ ?Tel02 DNS или путь к mdf? Какая база данных, mdf- мне ни о чем не говорит кроме того что это расширения файла. Добавлено Поиск |
Сообщ.
#5
,
|
|
|
База на sql server 2008 называется Tel02. К ней идет подключение по ConnectionString через компонент AdoConnection. Надо сделать так, чтобы в exe программе на delphi 2010 была возможность выборки базы даных
|
Сообщ.
#6
,
|
|
|
Цитата maxjuvefan @ База на sql server 2008 называется Tel02 Это БД (точнее табличное пространство сервера) так называется, а путь к ней надо указать. ЗЫ И раздел не удачно выбран, попроси модераторов перенести в Delphi Базы Данных. Добавлено Настрой соединение вручную, убедись что все работает , затем можно путь через диалог менять. |
Сообщ.
#7
,
|
|
|
А как к БД путь указать?
|
Сообщ.
#8
,
|
|
|
Цитата maxjuvefan @ А как к БД путь указать? Работа с ADO в Delphi. Часть 1 (с картинками) Глава 19. Использование ADO средствами Delphi (без картинок) |
Сообщ.
#9
,
|
|
|
Спасибо, только я все равно не понял, как путь к бд указать
|
Сообщ.
#10
,
|
|
|
Создай строку подключения как описано в Работа с ADO в Delphi. Часть 1 (с картинками) , а потом подменяй путь если он там будет.
Сейчас не установлен MS SQL Server, для ORACLа строка выглядит так Provider=MSDAORA.1;User ID=XXX;Data Source=MyDB;Persist Security Info=False Пути нет, так как MSDAORA сам знает откуда брать, я указываю только схему. Добавлено Delphi: Как подключиться к MS SQL Server2000 |
Сообщ.
#11
,
|
|
|
не такое ли надо?
Вызвать редактор свойства в рантайме... |
Сообщ.
#12
,
|
|
|
Цитата Bas @ Рабочий код:для ORACLа строка выглядит так bool __fastcall TFDM::Connect() { Screen->Cursor = crSQLWait; Application->ProcessMessages(); // Conn - это TADOConnection // в строке соединения - имя ODBC-источника данных, имя юзера и его пароль Conn->Close(); Conn->ConnectionString = Format("Provider=MSDASQL.1;Data Source=%s;User ID=%s;Password=%s;Persist Security Info=false", ARRAYOFCONST((FODBCName, FEdPassword->UserName, FEdPassword->Password))); try { Conn->Open(); } catch (Exception *E) { ::Application->MessageBox(E->Message.c_str(), L"Соединение невозможно", MB_ICONWARNING); Screen->Cursor = crDefault; return false; } //------------------------------------------------------------------------- // на эту херню у оперов должен быть GRANT SELECT V_$SESSION TO oper (от SYS AS SYSDBA, SYSTEM не имеет на ЭТО прав) if (QrTmp->Active) QrTmp->Close(); QrTmp->SQL->Text = Format("select count(*) from v$session where username = '%s'", ARRAYOFCONST((FEdPassword->UserName))); QrTmp->Open(); int cnt = QrTmp->Fields->Fields[0]->AsInteger; QrTmp->Close(); Screen->Cursor = crDefault; if (cnt > 1) { String msg = Format("Пользователь %s уже соединён с базой", ARRAYOFCONST((FEdPassword->UserName))); Application->MessageBox(msg.c_str(), L"Соединение невозможно", MB_ICONWARNING); return false; } //------------------------------------------------------------------------- return true; } |
Сообщ.
#13
,
|
|
|
Проблема такая: устанавливаю соединение с базой 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; Добавлено Еще такой вопрос. Нужно подключиться к бд sql. Файл, открываемый через opendialog, идет в data sourse= . Что должен содержать этот файл и как называться (любое имя)? Это же не может быть файл *.mdf, т.к. подключенный к базе он не может быть открыт, а не подключенный, он не является источником данных... procedure TFormConnection.Edit1Change(Sender: TObject); var Edi : TEdit; begin Edi := Sender as TEdit; s:=edi.Text; end; procedure TFormMain.ConnectionBDClick(Sender: TObject); begin if OpenDialog2.Execute then begin ADOConnection1.Connected := false; AdoConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=' + s; ADOConnection1.Connected := true; ShowMessage('Соединение установлено!'); end else ShowMessage('Соединение не удалось выполнить!'); end; |
Сообщ.
#14
,
|
|
|
Обрабатывайте try
|