Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

21 Октябрь 2017, 13:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Тип данных объекта RowSet  (Прочитано 404 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ost
Пользователь
**
Offline Offline

Сообщений: 71


« Стартовое сообщение: 15 Апрель 2017, 17:50 »

Доброго.

Не могу сообразить как определить тип данных, содержащихся в RowSet.

Использую базу данных SQLite через ODBC-драйвер http://www.ch-werner.de/sqliteodbc/sqliteodbc_w64.exe
Поля каждой записи базы могут содержать данные трех типов: INTEGER, TEXT, REAL. Ну и дату в виде "YYYY-MM-DD"

Для перебора полей объекта RowSet использую следующий код, вызываемый в цикле:
Код:
oRowSet.getString(i)

Насколько понимаю, .getString() приводит все данные к типу String. Это, в свою очередь, вызывает проблемы при вставке этих данных в лист LO Calc.

Научите, пожалуйста, способу узнать тип данных, содержащихся в RowSet или как-нибудь иначе избавиться от проблем со вставкой в лист LO Calc числовых данных в виде текста.

Windows 7 (x64) LibreOffice 5.3.1.2

Записан
mikekaganski
Ветеран
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 613


« Ответ #1: 15 Апрель 2017, 18:00 »

Я не знаю тонкостей работы с SQLite, но если возможно экспортировать из неё в XML-формат ADO Rowset ([MS-PRSTFR]), то потом оттуда можно импортировать напрямую в calc (я совсем недавно добавил эту возможность в master - будет доступно в 5.4, но можно загрузить отдельно XSLT-фильтр и использовать с любой версией).
Записан

С уважением,
Михаил Каганский
economist
Ветеран
*****
Offline Offline

Сообщений: 715


« Ответ #2: 16 Апрель 2017, 20:07 »

SQLite хранит всё как "текст". Точнее просто "как есть".
Даже ошибившись с кодировкой текста - можно всегда получить исходное содержимое. 
Проверка типа, если она будет честной - она вернет "Текст", и будет права.   

Преобразованием типов уже внутри приложения - занимается
сам ODBC-драйвер, и насколько я знаю - неплохо.

Иногда (да и почти всегда, хлобысну уже) - проще импортировать как есть, а потом конвертнуть, как надо.
И SQLite - самая та БД, с которой это реже всего надо. 

Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
ost
Пользователь
**
Offline Offline

Сообщений: 71


« Ответ #3: 17 Апрель 2017, 18:07 »

экспортировать из неё в XML-формат ADO Rowset ([MS-PRSTFR])
Изучать ADO ради решения моих задач - это слегка избыточно. =)
Записан
ost
Пользователь
**
Offline Offline

Сообщений: 71


« Ответ #4: 17 Апрель 2017, 18:14 »

импортировать как есть, а потом конвертнуть
Так и поступил. Мне проще криворуко накостылять конвертацию средствами Basic, чем разбираться с типами в БД. =) Особенно с учетом того, что база работает только с текстом.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!