На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Открытие БД через OpenDialog с помощью ADOConnection , Как можно сделать открытие БД через OpenDialog с помощью ADOConnection
    Доброго времени суток. Написал программу для работы с БД, используя для этого компоненты ADOConnection, ADOQuery, DataSource, DBGrid и OpenDialog1. БД с расширением mdf открывает через свойство ConnectionString компонента ADOConnection. Добавляет новые данные, редактирует, удаляет. Только вот мне понадобилось открывать БД щелчком по кнопке через компонент OpenDialog1. Как это можно сделать?
      Цитата maxjuvefan @
      ADOConnection

      Что пишем в ConnectionString? Вот путь и записываем из OpenDialog1.
        В 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;

        Выдает ошибку: "Источник данных не найден и не указан драйвер, используемый по умолчанию"
          Что такое
          Цитата maxjuvefan @
          Tel02
          ?
          DNS или путь к mdf?
          Какая база данных, mdf- мне ни о чем не говорит кроме того что это расширения файла.

          Добавлено
          Поиск
            База на sql server 2008 называется Tel02. К ней идет подключение по ConnectionString через компонент AdoConnection. Надо сделать так, чтобы в exe программе на delphi 2010 была возможность выборки базы даных
              Цитата maxjuvefan @
              База на sql server 2008 называется Tel02

              Это БД (точнее табличное пространство сервера) так называется, а путь к ней надо указать.
              ЗЫ И раздел не удачно выбран, попроси модераторов перенести в Delphi Базы Данных.

              Добавлено
              Настрой соединение вручную, убедись что все работает , затем можно путь через диалог менять.
              Сообщение отредактировано: Bas -
                А как к БД путь указать?
                  Цитата maxjuvefan @
                  А как к БД путь указать?


                  Работа с ADO в Delphi. Часть 1 (с картинками)
                  Глава 19. Использование ADO средствами Delphi (без картинок)
                  Сообщение отредактировано: Bas -
                    Спасибо, только я все равно не понял, как путь к бд указать
                      Создай строку подключения как описано в Работа с ADO в Delphi. Часть 1 (с картинками) , а потом подменяй путь если он там будет.
                      Сейчас не установлен MS SQL Server, для ORACLа строка выглядит так
                      ExpandedWrap disabled
                        Provider=MSDAORA.1;User ID=XXX;Data Source=MyDB;Persist Security Info=False

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

                      Добавлено
                      Delphi: Как подключиться к MS SQL Server2000
                          Цитата Bas @
                          для ORACLа строка выглядит так
                          Рабочий код:
                          ExpandedWrap disabled
                            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;
                            }
                            Проблема такая: устанавливаю соединение с базой 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;
                              Обрабатывайте try
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0396 ]   [ 18 queries used ]   [ Generated: 16.04.24, 15:52 GMT ]