Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ADODataSet при коннекте к файлу Excel / 15 сообщений из 15, страница 1 из 1
07.12.2018, 15:09
    #39744331
EasyCode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
Здравствуйте.
Создал подключение элемента ADODataSet к файлу excel. На одном компьютере работает отлично.
При запуске программы на другом компьютере - выдает ошибку пути (см. картинку), как сделать путь к файлу с таблицей такой, чтобы можно было запустить программу на другом компьютере без ошибок?
Проблема именно в пути. Если поменять в ручную, то нормально работает, а что если на другом компьютере не окажется Делфи, чтобы изменить путь? Вот в этом проблема.
Прошу помощи!
http://prntscr.com/lrxt4k
...
Рейтинг: 0 / 0
07.12.2018, 15:20
    #39744341
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
EasyCodeПроблема именно в пути.
Русские буквы? Пробелы?
...
Рейтинг: 0 / 0
07.12.2018, 15:29
    #39744350
EasyCode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
wadman,

Нет. На данный момент - G:\Rasschet\Project1.exe
Дело в том, что я не знаю на другом компьютере какая буква будет и не могу путь прописать именно для другого компьютера, чтоб там работало. У меня на компьютере все нормально функционирует.
...
Рейтинг: 0 / 0
07.12.2018, 15:42
    #39744364
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
EasyCodeЕсли поменять в ручную, то нормально работает, а что если на другом компьютере не окажется Делфи, чтобы изменить путь? Вот в этом проблема.


TOpenFileDialog уже отменили? Заставь пользователя выбирать нужный ему файл Экселя.
...
Рейтинг: 0 / 0
07.12.2018, 15:45
    #39744369
EasyCode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
DarkMaster,
Дело в том, что по функционалу программы, пользователь не должен сам открывать файл. Эта таблица используется как БД для последующих процедур в программе.
...
Рейтинг: 0 / 0
07.12.2018, 15:48
    #39744377
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
EasyCodeДело в том, что по функционалу программы, пользователь не должен сам открывать файл.
Указать расположение файла и открыть его - разные операции.
...
Рейтинг: 0 / 0
07.12.2018, 15:51
    #39744382
EasyCode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
wadman,

Это я понимаю.
В коде запрос к таблице 1 раз только используется, когда ищет значение из таблицы.
Дальше запросов к таблице нет.
Она даже не открывается в программе, ее пользователь вообще не видит и не должен.
Путь прописать как правильно, чтоб программа вообще открывалась без этой ошибки, вот в чем вопрос.
...
Рейтинг: 0 / 0
07.12.2018, 15:54
    #39744387
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
EasyCodewadman,
Путь прописать как правильно, чтоб программа вообще открывалась без этой ошибки, вот в чем вопрос.

Ну так держи рядом к программой файл настроек (да хоть ini тот же) где и храни правильный путь для пользователя.
...
Рейтинг: 0 / 0
07.12.2018, 15:56
    #39744390
Beltar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
1) Не указан драйвер. Странно.

2) У тебя в ADOConnection всегда забиты твои настройки. Даже свойство Connected будет именно в том состоянии, в котором находилось в момент компиляции. Поскольку оно становится активным при любых попытках что-то получить из базы при разработке, то на другом компе оно просто полезет по твоим настройкам. Меня в свое время это настолько достало, что сейчас в любом DataModule, где лежит соединение (не только ADO касается). Первым делом выполняю сразу в onCreate

Код: pascal
1.
2.
3.
4.
5.
if ADOConnection1.Connected then
  begin
  ShowErrorMessage('Закрой соединение');
  Application.Terminate;
  end;



Т. е. даже под отладкой не допускаю запуска с активным соединением.

3) Посмотри строку соединения. Тебе нужно все эти параметры как-то сохранить и при запуске программа должна их считать. На их основе собираешь строку соединения и подключаешься.

Как именно будешь сохранять это уже на твое усмотрение. Только с прочими настройками не следует мешать.

Если у тебя файл Access, то можно путь к нему делать относительным. Ну или в папку с прогой положить.
...
Рейтинг: 0 / 0
07.12.2018, 16:02
    #39744399
EasyCode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
Вот что в ConnectionString указано
авторProvider=MSDASQL.1;Persist Security Info=False;Extended Properties="DBQ=D:\table.russia.xls;DefaultDir=D:\;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;FIL=excel 12.0;FILEDSN=D:\table.russia.xls.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ReadOnly=1;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

Просто это настройки для моего ПК, а на другом ПК допустим будет буква не D, а "E". И я не знаю как прописать путь так, чтобы он смог считывать эту таблицу и на другом ПК. Сам файл таблицы лежит в основной папке с программой.
...
Рейтинг: 0 / 0
07.12.2018, 16:03
    #39744402
EasyCode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
DarkMaster,

Вот именно что, то что правильного пути на другом ПК нет. Потому что буква диска с расположением программы постоянно меняется. На разных ПК по разному.
...
Рейтинг: 0 / 0
07.12.2018, 16:36
    #39744437
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
EasyCodeВот именно что, то что правильного пути на другом ПК нет. Потому что буква диска с расположением программы постоянно меняется. На разных ПК по разному.Вот для подобных задач и существуют конфиги для программ. А где они лежат - в ini-файлах, реестре, базе данных, локально, удаленно и т.д и т.п. или каждый раз спрашиваются у юзера - решаешь ты.
...
Рейтинг: 0 / 0
07.12.2018, 16:40
    #39744442
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
EasyCode,

Вот это:
Код: plaintext
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DBQ=D:\table.russia.xls;DefaultDir=D:\;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;FIL=excel 12.0;FILEDSN=D:\table.russia.xls.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ReadOnly=1;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

Замени на:

Код: plaintext
1.
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DBQ=%%TABLENAME%%;DefaultDir=%%DIRNAME%%;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;FIL=excel 12.0;FILEDSN=D:\table.russia.xls.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ReadOnly=1;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

Строчку хранишь в ini. На старте приложения читаешь строку из ini. Делаешь замену %%DIRNAME%% и %%TABLENAME%% на путь к файлу и директорию по умолчанию для пользователя и спокойно работаешь.

DIRNAME и TABLENAME хранишь в Ini. И настраиваешь для каждого конкретного пользователя...

Аминь.
...
Рейтинг: 0 / 0
07.12.2018, 16:41
    #39744444
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
DarkMaster,

А ну и FILEDSN не забыть. По аналогии.
...
Рейтинг: 0 / 0
07.12.2018, 17:12
    #39744472
EasyCode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODataSet при коннекте к файлу Excel
DarkMaster,

Спасибо
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ADODataSet при коннекте к файлу Excel / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]