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

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

11 Август 2022, 01:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 4


« Стартовое сообщение: 29 Апрель 2022, 02:01 »

Здравствуйте, уважаемые гуру ОО, в связи с "импортозамещением" приходится переезжать на Libre|Open Office.
И возникло невообразимое количество проблем начиная от полного непонимания экселевских макросов (хотя тот же VB не понимаю в чем проблема, но разберусь позже) и заканчивая использованием данных из внешних баз данных (простите за тавтологию) в частности MySQL.
В двух словах на пальцах. Есть mysql база. очень жирная толстая и тяжелая. в ней ведутся определенные данные по аргументу времени с кучей параметров пишущихся раз в 10 сек в формате понятном экселю (система дат 1900).
В эксель файле сделан запрос к MySQL посредством ODBC на извлечение определенных данных по условию аргумент больше такой то даты (которая берется из ячейки в экселевском документе) и меньше такой то даты (опять же из другой ячейки в экселевском документе).
Как это прикрутить к ОО я вообще не понимаю. Ладно получилось прикрутить доступ к MySQL опять же через ODBC, но оно зачем-то файл создало.
А как задать условия получения данных то? если руками например в мастере запросов говорить WHERE Argument >47999.3333333 AND Argument < 48000.000000 (к примеру) - оно ругается, что так нельзя.
Еще один нюанс, в MySQL десятичный разделитель точка. в ОО я так не не победил эту запятую.
Помогите пожалуйста, нанять "адекватных" людей наша организация зажала, и свалили всё на обычных сотрудников.
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 718


« Ответ #1: 29 Апрель 2022, 08:25 »

оно ругается, что так нельзя.

Нажмите на кнопку [SQL] - Выполнить команду SQL непосредственно.

Десятичная точка на самом деле везде, Если она не распознается - значит значение (полагаю в Calc/Writer из Base) передается как текст, а не как число.
Записан

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

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


« Ответ #2: 29 Апрель 2022, 09:11 »

Обратите внимание, что OOo/LibreOffice - не является клоном MS Office. Этот пакет задумывался и разрабатывался вокруг других идей, как нужно создавать документы. Центральная идея стилей, парадигма работы с базами данных, модель документов, API - всё это совершенно отличается от MS Office изначально. Без понимания этого попытка заменить одно другим как если бы Вы просто меняли версии одного продукта, неизбежно приведут к тому, что Вы описываете.

начиная от полного непонимания экселевских макросов (хотя тот же VB не понимаю в чем проблема, но разберусь позже)

Что такое "тот же VB"? Даже в MS Office не VB, а VBA (это разные языки семейства Basic, хотя и родственные друг другу). А в OOo и потомках встроен StarBasic - ещё один язык семейства, который даже не родственник языкам от MS. И ещё в OOo есть режим совместимости с VBA - нечто, призванное обеспечить некоторую базовую совместимость - насколько это было реализовано (а было очень мало, и большей частью для Calc).

но оно зачем-то файл создало.

Если только Вы не используете Mail Merge, работа с БД в OOo и потомках ведётся либо через (зарегистрированные) файлы ODB (описывающие соединение и другие метаданные типа макросов, запросов и форм), либо через динамические соединения из макросов. В случае Mail Merge есть ещё вариант "скрытой" ODB - встроенной в ODT.

десятичный разделитель точка. в ОО я так не не победил эту запятую

Точка и запятая в качестве десятичных разделителей зависит прежде всего от локали программы (для России - запятая). Однако при правильной настройке пользователю не нужно стремиться к тому, чтобы у него печаталась точка: задача настройки локали программы - позволить программе понимать, когда пользователь пишет число, и какое это число. Например, в России пользователь печатает привычно для себя "1,234" - и программа должна понять, что речь об одной целой двухстах тридцати четырёх тысячных, а дальше уже дело настроенной БД - знать, как туда отправлять число, которое уже распознано.

Но в целом я Вам сочувствую. Я как-то занимался переводом и поддержкой ПО на предыдущем месте работы; я был тем самым одним из "адекватных людей", и я знаю, что грозит предприятию, где "организация зажала".
Записан

С уважением,
Михаил Каганский
aiva
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #3: 29 Апрель 2022, 15:34 »

Выполнить команду SQL непосредственно.
Так запрос работает, однако до сих пор не понятно как привязать к запросу условия по данным из ячейки CALCа. мне бы хотя бы просто пример, попытаюсь разобраться откуда ноги растут.
это разные языки семейства Basic
хех это я уже понял ) даже ключ совместимости не помогает. Похоже придется с нуля писать, либо в спешном порядке учить питон.
Точка и запятая в качестве десятичных разделителей зависит прежде всего от локали программы
вот тут вообще засада полная. если делать англ локаль (чтобы точка была разделителем), то он мне текстовые даты записывает как April March и тд., а если локаль РУ, то проклятая запятая, а в базу пишутся значения с точкой. поэтому даже если делать тестовый запрос вручную и данные все же подгружаются, ОО их не понимает.
Засада полная. И ведь не объяснишь, получаем ответ "вам за что деньги платят". Так что или делать или увольняться. 
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 718


« Ответ #4: 29 Апрель 2022, 23:45 »

запрос работает, однако до сих пор не понятно как привязать к запросу условия по данным из ячейки CALCа

Это в MSO называется Параметрический запрос, и тут, в LO, он тоже возможен, как с появлением мини-диалогов на ввод условий, так и с использованием значений ячеек (но тут нужен макрос).

SELECT-запрос можно собрать из ячеек, списков Проверки данных, контролов итд, получить ResultSet, перебрать его и вывести в ячейки.

Но наиболее технологично заранее создать безразмерный Диапазон базы данных в Calc (перетянув на лист Таблицу/View/Запрос по Ctrl+Shift+F4) и "подменять" в нем SELECT-запрос на нужный. Суть и грабельки описаны тут: https://forumooo.ru/index.php/topic,8480.0/msg,57603.html - там инфы достаточно чтобы написать в Calc приложение к любой промышленной базе данных.

Дату лучше хранить "цифрами" в формате ISO ГГГГ-ММ-ДД и или как текст, но так же. Локаль, имхо, лучше вообще никогда не трогать.

Кавалерийским наскоком LibreOffice не взять, тут нужны месяцы, чтобы начать осознанно кодить копипастить. Ну и делиться опытом на Форуме тоже полезно: больше желающих и могущих помочь в поисках ответов на свои и чужие вопросы.  

На счет Python - это правильно, язык учится быстро и в LO он уже встроен. На Форуме немало примеров его использования. Обрабатывать данные векторными операциями или срезами из БД, скажем, в Python/Pandas, в его списках, множествах, IN-MEMORY датафреймах - гораздо быстрее и проще, чем делать это перебором/энумераторами в неуклюжих медленных массивах и структурах LO Basic или ячейках листов Calc. Хотя уметь надо всё.

А вот вывод финального результата - проще дооформить в Calc, если не нужен web-доступ и очень красивые графики (для этого у Python есть готовые либы с ReactJS основой).
« Последнее редактирование: 29 Апрель 2022, 23:50 от economist » Записан

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

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


« Ответ #5: 30 Апрель 2022, 07:03 »

OFFTOPIC
В StarBasic и Python используется разный стиль программирования. Я использую оба, свой для каждого языка.
Например:
Basic: GetData(), CamelCase; где скобки в отсутствие аргументов можно опустить.
Python: get_data(), snake_case; причём скобки означают вызов и именно с этой целью используются.
Но Python добавляет и массу других отличий и особенностей стиля (PEP 8 и пр.).

А в LibreOffice API: getData(), mixedCase

А вот как я сношу строку в Basic (точка переносится на вторую строку и сигнализирует о том, что строка неполная, отступ в 1 пробел):
  oMap = com.sun.star.container _
   .EnumerableMap.create("string", "string")
Сами понимаете, что в Python совсем другие правила.
Кроме того, мы тут активно используем Венгерскую нотацию (систему префиксов в именах, передающую тип), которая в Python не одобряется.

Как-то правил, исключительно для себя, очень полезный код от @JohnSUN (RefEdit реализация), который использовал global-переменную в отрицательном значении (Not в имени), но стиль требует "положительного" подхода, и я убрал отрицание и изменил соответствующим образом код. Считается, что это лучше для восприятия, хотя и субъективно. В общем, выработка своего стиля требует ещё больше времени, чем уходит на изучение языка. Но это очень важно!! И не просто.
...но начать лучше не с этого, а с освоения 10-ти пальцевого слепого метода печати. Улыбка
« Последнее редактирование: 1 Май 2022, 19:17 от eeigor » Записан

Ubuntu 18.04 LTS • LibreOffice 7.3.5.2 Community
aiva
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #6: 1 Май 2022, 04:18 »

Спасибо всем за ответы, для человека пришедшего с MS, ОО - это просто катастрофа и разрыв мозга. Не сомневаюсь, что в грамотных руках это мощнейший инструмент, но явно не в моих.
Еще огромный минус в том, что практически вся более-менее стоящая информация только на английском, мои познания в нем начались и закончились на "лондон из зе кепитал оф грейт бритн".
Буду "как-нибудь".. Ну или придется свою зарплату отдавать человеку, кто будет "как надо".
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 470



« Ответ #7: 1 Май 2022, 17:57 »

Помогите пожалуйста, нанять "адекватных" людей наша организация зажала, и свалили всё на обычных сотрудников.
так вы не администратор и не ИТшник в вашей компании?
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
aiva
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #8: 2 Май 2022, 03:21 »

так вы не администратор и не ИТшник в вашей компании?
Далеко нет Улыбка но с IT связан. Не знаю даже как объяснить, навряд ли моя должность многое скажет Улыбка Начальник геофизической партии (отдел сопровождения бурения). И да, Газпром. и да, жопят каждую копейку.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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