Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2020, 19:34   #1
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
По умолчанию ADOTable, в свойстве Connected нажимаю кнопку Build (Use Connection String), появляется окно и тут же закрывается - Ошибка при указании пути к БД

Здравствуйте. Работаю с ADOTable. Вот появилась проблема: установила на форму ADOTable, в свойстве Connected нажимаю кнопку Build (Use Connection String), появляется окно и тут же закрывается. Даже не могу прочитать, что за окно и что в нем. Прописать путь к БД не могу.
Проблема эта не только в новом проекте, но и в тех, что давно работают.
Появилось это неожиданно, может, глюк в Delphi? (Перезагрузка компа и переустановка delphi не помогли)Смогла поймать скрин появляющегося окна, ничего не понятно) видео тоже процесса прилагаю)
Спасибо за советы.
Изображения
Тип файла: jpg image-03-06-20-23-30.jpg (54.3 Кб, 1 просмотров)
Вложения
Тип файла: zip ошибка.zip (1.23 Мб, 2 просмотров)
a_n_n_a вне форума Ответить с цитированием
Старый 06.06.2020, 08:32   #2
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
По умолчанию

Ну что, никто не сталкивался с такой проблемой?
a_n_n_a вне форума Ответить с цитированием
Старый 08.06.2020, 21:53   #3
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Не сталкивались.

Есть вариант, который может ответить на вопрос: "что виновато и что делать".
Надо создать текстовый файл с расширением UDL в папке с проектом и там где находится файл БД (имя файла значения не имеет, но для порядка лучше чтобы было такое же как и имя исполняемого файла проекта).

Файл можно создать так:
- в блокноте в новом текстовом документе вставить какой-нибудь символ (1 или пробел) и сохранить с расширением udl, но не txt (с нужным именем); символ нужен чтобы сохранение было без капризов;
- открыть снова этот же документ в блокноте и, убрав этот символ, сохранить файл, так чтобы он был нулевого размера (в уже существующий файл блокнот позволяет сохранять и нулевой размер).

Затем запустить его в Wondows как обычный исполняемый файл.
Винда знает что это за файл и должна отрыть точно такой же диалог, какой открывается в Delphi по кнопке "Build" для формирования строки соединения. Открывается этот диалог, разумеется, не в среде Delphi.

Если и в этом случае будет такая же беда как и в Delphi, значит проблема в операционной системе.

При благополучном исходе, т.е. если диалог будет адекватным и в нем можно сформировать строку соединения, придется использовать этот файл вместо строки соединения:
в диалоге, который появляется в свойстве ConnectionString компонента ADOConnection надо будет отметить "Use Data Link File" и через кнопку Browse указать файл UDL, который был сформирован.

Этот прием с файлом позволит хотя бы определить источник проблемы.
Прик вне форума Ответить с цитированием
Старый 09.06.2020, 08:10   #4
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
По умолчанию

Все получилось!) Файл открывает окно) Но в списке поставщиков нет варианта "Microsoft.Jet.OLEDB.4.0", которым я подключала свою базу Access.
Все равно, спасибо за отклик!!!)
a_n_n_a вне форума Ответить с цитированием
Старый 09.06.2020, 08:36   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Получается, что причина проблемы всё же в Delphi.

А если в списке, открытом в винде, перечислены не все драйверы поставщиков, то там нет 32 битных драйверов, а на компе установлена 64 битная ОС.

Можно предложить такой вариант обхода и этой проблемы.
И современные Windows поддерживают bat-файлы. Такие файлы выполняются как и обычные exe.
А так как они содержат текст, то их можно создавать так же в блокноте.
Попробуйте сформировать bat-файл с такой текстовой командой:

C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\Oledb32.dll", OpenDSLFile file.udl

(все это в одну строку)

Здесь вместо file.udl, который идет после команды через пробел, вписывается свой файл udl, который можно вставить и с полным путем к нему.
Тогда вместо запуска udl файла нужно будет запускать file.bat (имя как и в udl произвольное), который должен показать диалог формирования строки соединения со всеми драйверами, которые установлены на машине.
Во всяком случае, на винде 10 у меня это работает.

Желательно перед тем как это делать убедится, что файл Oledb32.dl находится по пути, указанному в команде.

А в Delphi, понятно, нужно будет указывать сформированный файл с расширением udl. bat-файл нужен только для формирования строки соединения.

Последний раз редактировалось Прик; 09.06.2020 в 08:38.
Прик вне форума Ответить с цитированием
Старый 10.06.2020, 09:00   #6
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
По умолчанию

Ну хоть так! Спасибо еще раз)
a_n_n_a вне форума Ответить с цитированием
Старый 10.06.2020, 09:20   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от a_n_n_a Посмотреть сообщение
Ну хоть так!
Да, но хотелось бы узнать - получилось ли?
И на какой Windows?
Что называется "для будущих поколений программеров".
Прик вне форума Ответить с цитированием
Старый 10.06.2020, 09:37   #8
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
По умолчанию

Все указала, файл bat запускается. Потом опять моргает окошко, как в первом моем сообщении.И все выключается.
Изображения
Тип файла: jpg IMG_2599.jpg (53.0 Кб, 18 просмотров)
a_n_n_a вне форума Ответить с цитированием
Старый 10.06.2020, 10:11   #9
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Судя по картинке запуск был не bat файла, а команда выполнялась в командной строке окна cmd.exe. Надо испытать всё же bat файл, который запускается напрямую как обычный ехе, предварительно его создав. Правда в нашем случае это вряд ли поможет, но лучше рассмотреть все варианты.

Значит напрямую UDL файл запускается без проблем, кроме той, что показывает неполный список провайдеров, а в среде Delphi, при выполнении команды в cmd или в bat файле получаем артефакт?
Если так, то увы, - сложный случай. Разве только опытный сисадмин сможет помочь.
Прик вне форума Ответить с цитированием
Старый 16.06.2020, 17:15   #10
a_n_n_a
Форумчанин
 
Регистрация: 06.03.2009
Сообщений: 157
По умолчанию

Вроде делала все по вашей инструкции)
Ладно, буду городить что-нибудь) Спасибо!
a_n_n_a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi можно ли через кнопку добавить свой текст в чужое окно пример в свойстве браузера в поле Объект? falsebegin Общие вопросы Delphi 0 26.01.2020 05:48
После ошибки окно консоли закрывается и я не могу посмотреть, что за ошибка. NAN_13 Общие вопросы Delphi 10 30.03.2017 01:29
при нажатии на кнопку появляется новое окно I_am_ Win Api 2 08.12.2014 14:51
DBGrid: При нажатии ConectionString>Build не появляется окно Katus БД в Delphi 17 29.12.2011 12:26