Поместить произвольный текст в итоговую таблицу запро...

Автор ForumOOo (бот), 10 мая 2012, 22:16

0 Пользователи и 1 гость просматривают эту тему.

ForumOOo (бот)

Компонент: Base
Версия продукта: 3.2.1
Сборка: OpenOffice.org 3.2.1  OOO320m19 (Build:9505)
ОС: Windows 7 HP 64bit

Поместить произвольный текст в итоговую таблицу запроса.

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

--
Подпись: shinamashina

JohnSUN

Добро пожаловать на форум, shinamashina! (Еле выговорил  ;D )
Если бы я решал эту задачу для себя, я не стал бы возится с формулами или переписыванием запроса. Я бы просто выделил весь столбец, вошел в форматирование ячеек (Ctrl+1) и вписал бы в поле Код формата строку
токарь @ 4 разряд
Данные в ячейках остались бы те же - Васильев, Петров и т.д. - но выглядело бы и печаталось как надо
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

shinamashina

#2
JohnSUN
Благодарю за совет Владислав, то что надо.

shinamashina

JohnSUN
К сожалению вынужден сообщить что воспользоваться результатами запроса оформленного таким образом непредставляется возможным. Да, действительно, в таблице запроса всё отображается как надо, но воспользоваться этими данными невозможно, т.е. распечатать никак, скопировать текст никак, в отчёте который я создаю на базе этого запроса дополнительный текст ("токарь" и "4 разряд") неотображается.
Мне кажется что для корректной работы всего этого дела необходимо изменить саму формулировку  запроса.
Подскажите пожалуйста как это лучше сделать.
С Уважением shinamashina...

JohnSUN

Цитата: shinamashina от 11 мая 2012, 23:44
К сожалению вынужден сообщить что воспользоваться результатами запроса оформленного таким образом непредставляется возможным. Да, действительно, в таблице запроса всё отображается как надо, но воспользоваться этими данными невозможно, т.е. распечатать никак, скопировать текст никак
Извини, отвечал впопыхах, пропустил очень важный момент. Я говорил о варианте, при котором результат запроса "всасывается" в лист Calc и уже там форматируется для окончательного вывода на печать. Знаю, что это не "чистый Base", просто мне всегда казалось, что так проще и быстрее.
Цитата: shinamashina от 11 мая 2012, 23:44в отчёте который я создаю на базе этого запроса дополнительный текст ("токарь" и "4 разряд") неотображается.
Мне кажется что для корректной работы всего этого дела необходимо изменить саму формулировку  запроса.
Подскажите пожалуйста как это лучше сделать.
Есть такая функция - CONCAT. Напоминает CONCATENATE, но принимает только два параметра. То есть, если нужно сцепить три строки (как в данном случае), то придется использовать вложенный CONCAT:
CONCAT( CONCAT( 'токарь ', "FIO" ), ' 4 разряд' )
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

shinamashina

#5
JohnSUN
Мне кажется что OpenOffice Base незнает такой команды как CONCAT. Поэтому по прежнему ничего у меня неполучается.
Код который вы предложили я пытался ипользовать и отдельно и в различных сочетаниях с уже имеющимся текстом запроса - ничего неполучается.

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

Hasim

#6
Приложили бы свою БД с конкретными указаниями, где-что взять и куда-чего вставить, а то толкуете неизвестно о чём.

ЦитироватьМне кажется что OpenOffice Base незнает такой команды как CONCAT.
ссылка на документацию
http://www.hsqldb.org/doc/1.8/guide/ch09.html#N1251E

shinamashina

#7
Hasim
Суть моей проблемы полностью изложена в первом посте этой темы.

Документация по SQL это всё теория, на практике всё происходит так как я сказал.

Hasim

#8
Суть вашей проблемы понятна только вам, потому что вы видите свою БД, а мы нет.

ЦитироватьДокументация по SQL это всё теория, на практике всё происходит так как я сказал.

Так вы и задаете вопросы по теории, а не по вашей конкретной практической БД.
Вам и отвечают в соответствии с теорией.

Если ваша практика не совпадает с теорией, покажите эту вашу практику, чтобы мы могли понять почему не совпадают теория и практика.

JohnSUN

Цитата: shinamashina от 18 мая 2012, 00:08Мне кажется что OpenOffice Base незнает такой команды как CONCAT. Поэтому по прежнему ничего у меня неполучается.
Каюсь, нужно было не пример формулы с CONCAT() давать, а весь текст SELECT'а, было бы нагляднее. Исправляюсь  :-[
Значит для твоего набора полей запрос у меня получился таким:
SELECT CONCAT( CONCAT( 'Добавим к тексту ', "Ссылка" ), ' какой-то произвольный текст' ) AS "Ссылки",
          "Имя", "Объём" FROM "Перечень хранимых раздач"
WHERE "Раздел" = 'Системы для научной работы '

Делал я его для тестовых данных на первой картинке. На второй картинке показано как делал и что получил в результате.

Цитата: shinamashina от 18 мая 2012, 00:08Графа к которой нужно добавить произвольный текст называется "Ссылка".
Не "Имя"? В первом вопросе вроде бы речь шла о 4 разряде для "Исаака Дунаевского"?
Цитата: shinamashina от 18 мая 2012, 00:08
Кроме этого, как вы советовали, пытался открыть текст моего запроса с помощью Calc. Принципиально всё вроде работает, но на практике столкнулся с непреодолимой для меня проблемой, то-есть при вставке таблицы запроса в документ Calc русский текст отображается в виде абракатабры.
Не волнуйся, там явно что-то очень простое, связанное с кодировкой... Ты как его в Calc перетаскивал?
Цитата: shinamashina от 18 мая 2012, 00:08Я весь в расстройстве. Неужели такую на первый взгляд элементарную задачу OpenOffice неможет решить? ???
Всё ещё надеюсь на чудо...
"Спокойствие, только спокойствие!" (с) Карлсон. Уверяю тебя -может! Еще чуть-чуть и всё получится!

[вложение удалено Администратором]
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

shinamashina

JohnSUN
Благодарю за помощь и терпение.

Сейчас буду тестить новый код который вы предложили, о результатах отпишусь позже.

Запрос в документ Calc я перетаскивал следующим образом: - открываю документ Calc, нажимаю кнопку "Источники данных", в появившемся перечне выбираю свой запрос, копирую его и вставляю в документ Calc.

JohnSUN

Цитата: shinamashina от 18 мая 2012, 12:05открываю документ Calc, нажимаю кнопку "Источники данных", в появившемся перечне выбираю свой запрос, копирую его и вставляю в документ Calc.
Хочешь прикол? У меня та же фигня!  :beer:
Поэтому я не заморачиваюсь с копированием и вставкой, а просто цепляю таблицу с результатами запроса за верхнюю левую клетку (блин, как же этот квадратик правильно называется, а?) и тащу в нужную ячейку таблицы...

[вложение удалено Администратором]
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Hasim

Цитата: JohnSUN от 18 мая 2012, 11:20У меня та же фигня!

Вместо правильной кодировки 1251 используется 1252 при копировании.
И только при копировании строк.
При копировании отдельных ячеек кодировка правильная.
И никак не могут исправить.

shinamashina

JohnSUN
Кланяюсь тебе в ноги... ЧУДО СВЕРШИЛОСЬ - ОНО РАБОТАЕТ !!!

И перетаскивание за квадратик (которое ты рекомендовал в своём предыдущем посте) получается и запрос выполненный на основе последнего предложенного тобой кода тоже срабатывает. Правда с кодом запроса пришлось повозиться - в начале опять ничего неполучалось, потратил наверно часа два пока понял в чём дело - оказалось ты просто добавил пробел к имени исходной таблицы с данными; потом дописывал ещё кое-какие свои бантики... В общем в итоге всё получилось. При этом у меня сложилось впечатление что функция CONCAT самая ходовая в Base, у меня практически весь запрос состоиз из CONCAT - к той графе добавить то, к этой графе это, ту графу объединить с этой, ту с той и тд...

Ещё раз благодарю за помощь.
P.S. Надеюсь необидешся если ещё как-нибудь обращусь...


JohnSUN

Цитата: shinamashina от 21 мая 2012, 11:42Ещё раз благодарю за помощь.
Ой, да на здоровье! Рад, что всё получилось.
Цитата: shinamashina от 21 мая 2012, 11:42Надеюсь необидешся если ещё как-нибудь обращусь...
"Люди должны помогать друг другу. На этом держится этот мир. Во всяком случае, я так думаю. А если это не так, то пусть этот мир катится в тартарары, он мне не нужен..." (с) Ли и Миллер, "Агент Перемен"
Конечно же обращайся! Не я, так кто-нибудь еще с радостью поможет
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне