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

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

31 Март 2020, 15:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3   Вниз
  Печать  
Автор Тема: Макрос копирования строки Calc в базу данных  (Прочитано 7078 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #30: 30 Сентябрь 2017, 09:24 »

Разумеется, ошибка.
Текст запроса выглядит как
Код:
INSERT INTO "Таблица1" ("ID","Число 1","Число 2","Текст") values (1,2,3,Привет)
"Привет" - это строка, значит нужно её взять в одиночные кавычки
Код:
INSERT INTO "Таблица1" ("ID","Число 1","Число 2","Текст") values (1,2,3,'Привет')
Сделать это можно или в коде, как рекомендовал rami ("красные кавычки"), или вписав эти одинарные кавычки прямо в ячейку (т.е. не просто Привет, а 'Привет', как на картинке


* Правильное задание текста.png (4.37 Кб, 403x103 - просмотрено 21 раз.)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
economist
Форумчанин
***
Offline Offline

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


« Ответ #31: 30 Сентябрь 2017, 11:49 »

Кстати, еще один довод за другие движки СУБД/RDBMS в OpenOffice|LibreOffice BASE, с отказом от "встроенного" в неё HSQLDB.

С той же SQLite - в кавычки нужно брать только явные строковые литералы типа 'Привет' из поста выше , а имена таблиц, полей и их псевдонимы без пробелов (даже на русском!) - прекрасно обходятся без дурацких кавычек!

Код:
INSERT INTO Таблица1 (ID, Число1, Число2, Текст) values (1,2,3, 'Привет')

Это преимущество выражается в одном простом наблюдении:

Количество нажатий клавиш клавиатуры при написании SQL-запроса - при использовании SQLite в 2(!) раза меньше, чем в HSQLDB. Скорость получения готового запроса - в 1,5 раза быстрее. А число ошибок - ниже в 3 раза. Проверено электроникой, то есть экспериментально.

 
« Последнее редактирование: 30 Сентябрь 2017, 11:51 от economist » Записан

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

Сообщений: 51


« Ответ #32: 1 Октябрь 2017, 15:55 »

нужно её взять в одиночные кавычки
Спасибо, все работает.
Записан
ArsKam
Участник
**
Offline Offline

Сообщений: 23


« Ответ #33: 12 Декабрь 2019, 20:11 »

Здравствуйте!
Прошу извинить, если не по теме.
Можно ли скопировать строку (или часть) поиском в папке с ods-файлами?
ВПР же не ищет по закрытым и нескольким файлам.
По примеру того, как работает grep в linux, findstr.exe в windows или select-string в powershell.
Возможен ли такой макрос в Basic, заполняющий строку по искомому значению в 1м столбце рабочего файла?
Или макрос на Python или создать БД из целевых файлов и обрабатывать средствами LO Base?
Записан
economist
Форумчанин
***
Offline Offline

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


« Ответ #34: 12 Декабрь 2019, 21:47 »

Непонятно что за ODS и почему их много. Если ODS-ки регулярно правятся - то простейший макрос при закрытии сбросит лист в TXT с заменой, незаметно для пользователя .
А затем уже grep / findstr.exe / select-string.

С этими же TXT можно сделать ODB-базу данных (подключив папку через ODBC/ISAM - каждый файл окажется отдельной таблицей в ней), и использовать всю мощь SQL для отбора строк. Для объединения таблиц будет достаточно простого запроса типа:

SELECT * FROM Книга1 WHERE ФИО="Иванов"
UNION
SELECT * FROM Книга2 WHERE ФИО="Иванов"
 
Если Python - то библиотека типа pyexcel-ods https://pypi.org/project/pyexcel-ods/
Производительность её не знаю, но если как у openpyxl для XLSX - то там все превосходно.
Если что-то нужно делать с данными - стоит читать сразу в Pandas, есть библа для ODS.

Есть и консольные утилиты для вытаскивания текста из ODS, например тут в обсуждении: https://www.dokuwiki.org/plugin:docsearch?s[]=docsearch&s[]=plugin   
Записан

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

Сообщений: 23


« Ответ #35: 13 Декабрь 2019, 09:01 »

Спасибо.
Думаю, широко я размахнулся)
Непонятно что за ODS и почему их много. Если ODS-ки регулярно правятся
ods-таблицы с дневным распределением товара в кол-ве за год или два, как архив. Моя задача скопировать последнее распределение по каждой товарной позиции при новом поступлении.
можно сделать ODB-базу данных (подключив папку через ODBC/ISAM - каждый файл окажется отдельной таблицей в ней), и использовать всю мощь SQL для отбора строк. Для объединения таблиц будет достаточно простого запроса типа:

SELECT * FROM Книга1 WHERE ФИО="Иванов"
UNION
SELECT * FROM Книга2 WHERE ФИО="Иванов"

Наверное, как для малознающего, будет проще импортировать эти таблицы в новую базу в LO Base, но 1я пробная попытка не удалась.
Записан
economist
Форумчанин
***
Offline Offline

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


« Ответ #36: 13 Декабрь 2019, 09:53 »

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

Выложите короткий файл-пример. ODS может ссылаться сам на себя и выводить "последнее":
- формулами
- макросами
- SQL-запросом через ODB к самому себе 
Записан

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

Сообщений: 23


« Ответ #37: 13 Декабрь 2019, 11:05 »

пока ищу нужный товар программой DocFetcher (раньше искал встроенным поиском Windows), вручную открываю последний файл с ним и копипастаю распределение. Потом из него тоже буду копипастить, когда придёт новый номер издания.

* +разноска.ods (49.5 Кб - загружено 4 раз.)
« Последнее редактирование: 13 Декабрь 2019, 11:08 от ArsKam » Записан
Страниц: « 1 2 3   Вверх
  Печать  
 
Перейти в:  

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