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

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

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

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

Сообщений: 51


« Стартовое сообщение: 16 Июнь 2016, 11:24 »

Столкнулся с проблемой создания базы данных libreoffice из существующей таблицы .ods (libreoffice calc).
А именно, не получается изменить тип полей базы после портирования. Как я понял он выставляется автоматически по данным с calc, но практически везде определяется тип неправильно. А в самой базе уже невозможно поменять вручную.
Подскажите, каким образом можно изменить тип полей (число, текст и т.д.)?
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 023


iMac, LibreOffice и Apache OpenOffice


« Ответ #1: 16 Июнь 2016, 11:45 »

Скорей всего вы не правильно что-то делаете. Если не создать первичный ключ, то базу нельзя редактировать.

Напишите подробней как вы создаёте базу, а заодно выложите образец этой базы. Какая ось и версия LibreOffice?
Записан

AlexWorkStream
Форумчанин
***
Offline Offline

Сообщений: 51


« Ответ #2: 16 Июнь 2016, 12:10 »

Скорей всего вы не правильно что-то делаете. Если не создать первичный ключ, то базу нельзя редактировать.

Напишите подробней как вы создаёте базу, а заодно выложите образец этой базы. Какая ось и версия LibreOffice?

Может немного не ясно выразился... Опишу поподробнее.

1. Есть файл *.ods (Libre Office Calc) на основе которого делаю динамическую базу (обновляемую, при внесении изменений в файл).
2. Запускаю мастера баз и нажимаю "соединится с существующей базой данных" - "электронная таблица". Выбираю мой файл с таблицей *.ods.
3. Таблица портируется, после чего - сохраняю файл базы.

А вот проблема как раз в том, что тип полей при портировании определяется неверно (т.е. там где надо ЧИСЛО ставится ТЕКСТ). И поменять это в самой базе невозможно так как база динамическая (зависящая от первоначального файла с таблицей .ods).

Возможно есть какой-то способ указать тип поля в начальной таблице? Хотя пробовал менять формат ячеек, но все бес толку...
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 023


iMac, LibreOffice и Apache OpenOffice


« Ответ #3: 16 Июнь 2016, 12:40 »

А вот проблема как раз в том, что тип полей при портировании определяется неверно (т.е. там где надо ЧИСЛО ставится ТЕКСТ). И поменять это в самой базе невозможно так как база динамическая (зависящая от первоначального файла с таблицей .ods).
Тип поля определяется по второй строке таблицы данных, если у вас заголовки многострочные (или состоят из объединённых ячеек), то тип полей будет текстовый.

P.S. проверил, — тип определяется правильно.
Записан

AlexWorkStream
Форумчанин
***
Offline Offline

Сообщений: 51


« Ответ #4: 16 Июнь 2016, 12:42 »

А вот проблема как раз в том, что тип полей при портировании определяется неверно (т.е. там где надо ЧИСЛО ставится ТЕКСТ). И поменять это в самой базе невозможно так как база динамическая (зависящая от первоначального файла с таблицей .ods).
Тип поля определяется по второй строке таблицы данных, если у вас заголовки многострочные (или состоят из объединённых ячеек), то тип полей будет текстовый.

Так в том то и проблема, вторая строка таблицы - это формула, результат которой - число, а определяется как текст(((.

P.S. Формула такого типа - "=IF(COUNTIF(E$1:E2;E2)=1;MAX(B$1:B1)+1;"")" результатом которой является нумерация от 1-го и до ...
« Последнее редактирование: 16 Июнь 2016, 12:57 от AlexWorkStream » Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 023


iMac, LibreOffice и Apache OpenOffice


« Ответ #5: 16 Июнь 2016, 13:08 »

Так в том то и проблема, вторая строка таблицы - это формула, результат которой - число, а определяется как текст(((.
Действительно проблема, сколько ни пытаюсь, всегда получается правильно — числа как числа, даты как даты, во второй строке формулы.
Записан

rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 023


iMac, LibreOffice и Apache OpenOffice


« Ответ #6: 16 Июнь 2016, 13:18 »

P.S. Формула такого типа - "=IF(COUNTIF(E$1:E2;E2)=1;MAX(B$1:B1)+1;"")" результатом которой является нумерация от 1-го и до ...
Эта формула может создавать проблему. Если "правда" — результат может быть числом, но если "ложь" — результат всегда пустая строка (текстовый тип)

P.S. Попробуйте изменить формулу, чтобы она гарантированно давала числовой результат (ноль вместо пустой строки):
Код:
=IF(COUNTIF(E$1:E2;E2)=1;MAX(B$1:B1)+1;0)
« Последнее редактирование: 16 Июнь 2016, 13:27 от rami » Записан

AlexWorkStream
Форумчанин
***
Offline Offline

Сообщений: 51


« Ответ #7: 16 Июнь 2016, 14:11 »

P.S. Формула такого типа - "=IF(COUNTIF(E$1:E2;E2)=1;MAX(B$1:B1)+1;"")" результатом которой является нумерация от 1-го и до ...
Эта формула может создавать проблему. Если "правда" — результат может быть числом, но если "ложь" — результат всегда пустая строка (текстовый тип)

P.S. Попробуйте изменить формулу, чтобы она гарантированно давала числовой результат (ноль вместо пустой строки):
Код:
=IF(COUNTIF(E$1:E2;E2)=1;MAX(B$1:B1)+1;0)

Спасибо большое! Помогло! Не думал, что пустота - это текст...
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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