powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с получением списка листов XLS (FireDAC)
2 сообщений из 2, страница 1 из 1
Проблема с получением списка листов XLS (FireDAC)
    #38891315
bizisoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Столкнулся со следующей проблемой (XE7+FireBird), используя компоненты FireDAC (FDConnection, FDQuery) не получается получить список листов файла xls/xlsx - функция не возвращает значений (не заполняется ListBox).
Делаю следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DM->FDConnXLSX->Close();
DM->FDConnXLSX->Params->Values["Database"] = FN; // путь и имя файла
DM->FDConnXLSX->Open();

DM->FDConnXLSX->GetTableNames("","","",ListBox1->Items,
						TFDPhysObjectScopes() << osMy,
						TFDPhysTableKinds() << tkTable << tkSynonym << tkView,
						true);



В справке по этим компонентам нашел пример в Delphi :
Код: pascal
1.
DM.FDConnXLSX.GetTableNames('', '', '', List, [osMy], [tkTable, tkView]);



Попробовал его записать через такую запись, которую взял из справки, но не уверен что правильно:
Код: plaintext
1.
TFDPhysObjectScopes() << osMy,	TFDPhysTableKinds() << tkTable << tkSynonym << tkView,




Все параметры/свойства компонентов установлены верно, т.к. если выполнить FDQuery->Open(), то в DBGrid отобразятся данные из файла. В FDQuery в SQL указан запрос типа "select * from [Sheet1 $]" (в файле лист имеет такое же наименование).

Список листов необходим для перебора и соответствующего корректирования запроса.

Подскажите пожалуйста, что я делаю неверно и как можно получить этот список.

P.S. В предыдущих версиях (XE3-XE5) я это делал через компоненты ADO (...->GetTableNames(ListBox1->Items, NULL); все отлично получалось, но пришлось отказаться от ADO, т.к. при размещении данных компонентов проект не компилировался ввиду ошибки (не помню какой). Если удалить данные компоненты - проект также не компилировался, но если в *.h файле закомментировать директиву препроцессора относящуюся к ADO то все компилируется. Поэтому отказался от ADO и решил освоить FireDAC..

С Уважением, Дмитрий.
...
Рейтинг: 0 / 0
Проблема с получением списка листов XLS (FireDAC)
    #38891336
bizisoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема разрешилась после изменения строки
Код: plaintext
1.
2.
3.
4.
DM->FDConnXLSX->GetTableNames("","","",ListBox1->Items,
						TFDPhysObjectScopes() << osMy,
						TFDPhysTableKinds() << tkTable << tkSynonym << tkView,
						true);


на
Код: plaintext
1.
2.
3.
4.
DM->FDConnXLSX->GetTableNames("","","",LBoxTableName->Items,
						TFDPhysObjectScopes() << osMy << osSystem << osOther,
						TFDPhysTableKinds() << tkTable << tkSynonym << tkView,
						true);


но я не знаю как эти два доп. параметра отразятся на отображении списка листов.
Например в ADO помимо листов (видимых в excel) иногда отображались еще какие-то левые листы, я называл их "системными".
Лист1$ и бывало что еще отображались Лист1_$, который при попытке его прочитать вылетал в ошибку, также еще были и другие непонятные листы, и приходилось их дополнительно обрабатывать через try catch и соответственно исключать из чтения.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с получением списка листов XLS (FireDAC)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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