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

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

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

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

Сообщений: 2


« Стартовое сообщение: 3 Апрель 2018, 11:51 »

Друзья, я видел запросы в ОО и ЛО написанные без кавычек и  с сохранением форматирования. Т.е. после закрытия редактора запроса и повторного открытия сохраняется и форматирование и отсутствие кавычек. Все работает...
Как это делают?
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 965


« Ответ #1: 28 Апрель 2018, 13:00 »

Ну, это на самом деле очень просто: нужно взять за правило при каждом(!) создании SQL-запроса сразу же нажимать на кнопку [SQL] в панели инструментов. Она "отключает" встроенный парсер запроса и Base тут же перестает "обкавычивать" имена полей, а также удалять переносы строк, отступы и т.п., что вы назвали "форматированием". Даже больше - исчезают некоторые глюки и вообще все работает как надо вам, а не как надо Base-у. Нажатость (темнота) кнопки - сохраняется вместе с запросом и больше проблем не возникает.

Но в некоторых редких случаях (например при ODBC-подключениях) - "нажатость" этой кнопки, увы, отключает часть функционала. Например параметрические запросы, где пользователю при выполнении запроса выводится диалог на ввод, например вот поиск по "части" введеного ИНН - при нажатой кнопке SQL - он работать не будет, а при отжатой - всё тут же "обкавычится", но зато запрос будет работать! Вот он:

Код:
SELECT * FROM КОНТР WHERE SUBSTR("ИНН", 1, 10) LIKE "%" || :ИНН || "%"

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

Код:
RowSet = createUnoService("com.sun.star.sdb.RowSet")
RowSet.DataSourceName = "Biblio" ' указываем зарегистрированную базу данных
RowSet.EscapeProcessing=FALSE ' иначе строка запроса обкавычится и запрос даст сбой
RowSet.CommandType = com.sun.star.sdb.CommandType.COMMAND ' вызываем команду
RowSet.Command = "SELECT..."
RowSet.execute() ' выполняем запрос

Этот самый RowSet.EscapeProcessing=FALSE как раз и "нажимает" кнопку SQL.
« Последнее редактирование: 28 Апрель 2018, 14:56 от economist » Записан

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

Сообщений: 2


« Ответ #2: 4 Ноябрь 2018, 13:08 »

Спасибо economist, и извините за запоздалую благодарность. Если бы не это тайное знание - я бы завис с ЛО6.1 (firebird)
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 965


« Ответ #3: 5 Ноябрь 2018, 23:04 »

Всегда рад помочь. Сам убил на эту проблему пару суток и едва не потерял веру в человечество...

OpenOffice|LibreOffice вообще любит подобные "сюрпризы". Эта SQL-"кнопка" - отличный пример рукотворного геморроя, отталкивающего от неплохой, в общем-то, программы. Впрочем, по сравнению с включенным на протяжении 2-х лет OpenGL, который на трети компьютеров вызывает жесточайшие глюки прорисовки документов и интерфейса - это ещё "цветочки".

Хорошо что эта проблема имеет решение. Если быть объективным - "дурное" обкавычивание полей и добавление ненужных алиасов - есть даже в "священном" MS Excel. Точнее в офисной утилите MSQRY32.EXE. И ничего ведь, как-то выжили (всем миром). Поэтому LO и его разработчиков можно "понять и простить"... 
« Последнее редактирование: 5 Ноябрь 2018, 23:07 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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