<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>LXF126:OOo - История изменений</title>
		<link>http://wiki2.linuxformat.ru/index.php?title=LXF126:OOo&amp;action=history</link>
		<description>История изменений этой страницы в вики</description>
		<language>ru</language>
		<generator>MediaWiki 1.11.1</generator>
		<lastBuildDate>Wed, 13 May 2026 23:43:14 GMT</lastBuildDate>
		<item>
			<title>Ewgen: изменил название категории</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF126:OOo&amp;diff=12216&amp;oldid=prev</link>
			<description>&lt;p&gt;изменил название категории&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 12:48, 24 июня 2011&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 237:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 237:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Прежде чем добавлять в ваш код какой-либо ''SQL''-запрос, неплохо было бы посмотреть, работает ли он, в редакторе ''SQL''. Для этого выберите в главном окне открытой базы данных '''Сервис &amp;gt; SQL''', введите ''SQL''-запрос в поле '''Команда''' [Command To Execute] и нажмите кнопку '''Execute'''. После этого вы увидите и результат, и объяснение возможных ошибок в поле '''Состояние''' [Status]. Эта возможность особенно полезна при отладке громоздких ''SQL''-скриптов. '''LXF'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Прежде чем добавлять в ваш код какой-либо ''SQL''-запрос, неплохо было бы посмотреть, работает ли он, в редакторе ''SQL''. Для этого выберите в главном окне открытой базы данных '''Сервис &amp;gt; SQL''', введите ''SQL''-запрос в поле '''Команда''' [Command To Execute] и нажмите кнопку '''Execute'''. После этого вы увидите и результат, и объяснение возможных ошибок в поле '''Состояние''' [Status]. Эта возможность особенно полезна при отладке громоздких ''SQL''-скриптов. '''LXF'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Категория:OpenOffice&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;.org&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Категория:OpenOffice]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Категория:Дмитрий Попов]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Категория:Дмитрий Попов]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 24 Jun 2011 12:48:39 GMT</pubDate>			<dc:creator>Ewgen</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF126:OOo</comments>		</item>
		<item>
			<title>Ewgen: добавил категории</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF126:OOo&amp;diff=12215&amp;oldid=prev</link>
			<description>&lt;p&gt;добавил категории&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 12:44, 24 июня 2011&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 236:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 236:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Прежде чем добавлять в ваш код какой-либо ''SQL''-запрос, неплохо было бы посмотреть, работает ли он, в редакторе ''SQL''. Для этого выберите в главном окне открытой базы данных '''Сервис &amp;gt; SQL''', введите ''SQL''-запрос в поле '''Команда''' [Command To Execute] и нажмите кнопку '''Execute'''. После этого вы увидите и результат, и объяснение возможных ошибок в поле '''Состояние''' [Status]. Эта возможность особенно полезна при отладке громоздких ''SQL''-скриптов. '''LXF'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Прежде чем добавлять в ваш код какой-либо ''SQL''-запрос, неплохо было бы посмотреть, работает ли он, в редакторе ''SQL''. Для этого выберите в главном окне открытой базы данных '''Сервис &amp;gt; SQL''', введите ''SQL''-запрос в поле '''Команда''' [Command To Execute] и нажмите кнопку '''Execute'''. После этого вы увидите и результат, и объяснение возможных ошибок в поле '''Состояние''' [Status]. Эта возможность особенно полезна при отладке громоздких ''SQL''-скриптов. '''LXF'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Категория:OpenOffice.org]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Категория:Дмитрий Попов]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 24 Jun 2011 12:44:25 GMT</pubDate>			<dc:creator>Ewgen</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF126:OOo</comments>		</item>
		<item>
			<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF126:OOo&amp;diff=11390&amp;oldid=prev</link>
			<description>&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: ''OpenOffice.org'' Открытый офисный пакет для профессионалов&lt;br /&gt;
&lt;br /&gt;
==''OpenOffice.org'': Все по форме==&lt;br /&gt;
&lt;br /&gt;
: '''Дмитрий Попов''' расскажет, как создать и обработать формы в ''OpenOffice.org'', а также как сохранить добытые данные в виде текста или в базе данных ''Base''.&lt;br /&gt;
&lt;br /&gt;
''OpenOffice.org Writer'' – это не только солидный текстовый редактор. С использованием его возможностей дизайнера форм можно легко генерировать анкеты любого вида, от простых тестов до продвинутых опросников. И хотя создание форм во ''Writer'' не отличается сложностью, их обработка и извлечение данных из них – это совсем другое дело. К счастью, ''OOo'' сам предлагает инструменты для создания простого, но эффективного решения по обработке форм. С помощью ''OpenOffice.org Basic'' можно написать макрос, обрабатывающий форму, а извлеченные данные сохранить в текстовом файле или в базе данных ''OpenOffice.org Base''. Изучая это решение обработки форм, вы узнаете несколько продвинутых технологий ''OpenOffice.org Basic'', способных пригодиться вам в других проектах.&lt;br /&gt;
&lt;br /&gt;
Любой бизнес первым делом требует формы сбора данных. Начнем с простой, для введения имен и фамилий пользователей. Создайте новый документ ''Writer'' и выберите '''Вид &amp;gt; Панели инструментов &amp;gt; Дизайн формы''', чтобы появилась панель управления '''Дизайн формы'''. Нажмите на '''Режим проектирования''', затем выберите кнопку '''Текстовое поле''' и нарисуйте в документе текстовое поле. Дважды щелкните на только что созданном поле, чтобы открылась палитра '''Свойства''', и введите в поле '''Имя''' FirstName. С помощью других опций этой палитры можно настроить свойства поля: например, его внешний вид, шрифт и цвет рамки. Таким же образом нарисуйте другое текстовое поле под названием LastName. Сделав это, сохраните полученную форму.&lt;br /&gt;
&lt;br /&gt;
Теперь начнем работать над макросом. Чтобы все было сделано аккуратно, создадим для наших экспериментов отдельную библиотеку. Зайдите в '''Сервис &amp;gt; Макросы &amp;gt; Управление макросами &amp;gt; OpenOffice.org Basic''', нажмите кнопку '''Управление''', переключитесь в раздел '''Библиотеки''' и создайте новую библиотеку под названием '''ProcessForm'''. Нажмите кнопку '''Изменить''', и откроется редактор ''OOo Basic''. Начнем с написания простого макроса, который инициализирует форму, считывает данные из ее полей и отображает извлеченные значения во всплывающем сообщении.&lt;br /&gt;
&lt;br /&gt;
===Создание формы===&lt;br /&gt;
&lt;br /&gt;
Для инициализации формы нужны два оператора. Первый велит макросу использовать текущий открытый документ:&lt;br /&gt;
&lt;br /&gt;
 Doc=ThisComponent&lt;br /&gt;
&lt;br /&gt;
Второй оператор отыскивает в документе определенную форму по ее индексу. В нашем случае в документе есть только одна форма с индексом, равным нулю, и оператор, инициализирующий переменную '''Form''', имеет вид&lt;br /&gt;
&lt;br /&gt;
 Form=Doc.Drawpage.forms.getbyIndex(0)&lt;br /&gt;
&lt;br /&gt;
Извлечение данных из формы – тоже двухшаговый процесс. Во-первых, макрос ищет поле по его имени, используя метод '''getByName''':&lt;br /&gt;
&lt;br /&gt;
 TextBox=Form.getByName(“FirstName”)&lt;br /&gt;
&lt;br /&gt;
Найдя поле, макрос извлекает из него текстовые данные следующим оператором:&lt;br /&gt;
&lt;br /&gt;
 FirstName=TextBox.String&lt;br /&gt;
&lt;br /&gt;
Точно так же можно взять данные из поля LastName:&lt;br /&gt;
&lt;br /&gt;
 TextBox2=Form.getByName(“LastName”)&lt;br /&gt;
 LastName=TextBox2.String&lt;br /&gt;
&lt;br /&gt;
Наконец, чтобы убедиться в правильности работы макроса, добавим оператор, отображающий собранные данные в окне сообщения:&lt;br /&gt;
&lt;br /&gt;
 MsgBox FirstName &amp;amp; “ ” &amp;amp; LastName&lt;br /&gt;
&lt;br /&gt;
Вот полный листинг макроса, который нужно ввести в редакторе ''OOo'':&lt;br /&gt;
&lt;br /&gt;
 Sub FetchFormData&lt;br /&gt;
  Doc=ThisComponent&lt;br /&gt;
  Form=Doc.Drawpage.forms.getbyIndex(0)&lt;br /&gt;
  TextBox1=Form.getByName(“FirstName”)&lt;br /&gt;
  FirstName=TextBox1.String&lt;br /&gt;
  TextBox2=Form.getByName(“LastName”)&lt;br /&gt;
  LastName=TextBox2.String&lt;br /&gt;
  MsgBox FirstName &amp;amp; “ ” &amp;amp; LastName&lt;br /&gt;
 End Sub&lt;br /&gt;
&lt;br /&gt;
После ввода макроса перейдите в документ, содержащий форму, заполните два поля и сохраните форму. Чтобы запустить макрос, щелкните '''Сервис &amp;gt; Выполнить макрос...''' и выберите макрос '''FetchFormData''' из библиотеки '''ProcessForm'''. Если все работает правильно, вы увидите окно сообщения с данными из полей формы. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF126_73_1.jpg|300px]] Чтобы хранить данные, извлеченные из формы, нужно создать простую таблицу. В '''Свойствах''' задайте длину всех полей.&lt;br /&gt;
[[Изображение:LXF126_73_1.jpg|300px]] При создании базы данных выберите опцию '''Да''', зарегистрировать базу данных — в дальнейшем это сэкономит ваше время.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Отображение извлеченных данных в окне сообщения демонстрирует нам, что макрос работает; но польза от него пока невелика. Давайте изменим его так, чтобы он записывал значения через запятую (CSV) в текстовый файл, который затем можно импортировать и обработать в ''Calc'' или в другом приложении:&lt;br /&gt;
&lt;br /&gt;
 Sub WriteToFile()&lt;br /&gt;
  Doc=ThisComponent&lt;br /&gt;
  Form=Doc.Drawpage.forms.getbyIndex(0)&lt;br /&gt;
  TextBox=Form.getByName(“FirstName”)&lt;br /&gt;
  FirstName=TextBox.String&lt;br /&gt;
  TextBox1 = Form.getByName(“LastName”)&lt;br /&gt;
  LastName= TextBox1.String&lt;br /&gt;
  FilePath=“/home/user/formdata.csv”&lt;br /&gt;
  f1=FreeFile()&lt;br /&gt;
  Open FilePath For Append Access Read Write Lock Write As #f1&lt;br /&gt;
  Print #f1, FirstName + “, ” + LastName + Chr(13)&lt;br /&gt;
  Close #f1&lt;br /&gt;
 End Sub&lt;br /&gt;
&lt;br /&gt;
===Определение путей к файлам===&lt;br /&gt;
&lt;br /&gt;
Та часть макроса, что записывает извлеченные данные в текстовый файл, начинается с оператора '''FilePath=“/home/user/formdata.csv”'''. Как вы, наверное, уже догадались, этот оператор определяет целевой текстовый файл. Вместо того, чтобы прописывать путь к файлу в макросе вручную, воспользуйтесь процедурой '''InputBox''' — пусть его определит пользователь:&lt;br /&gt;
&lt;br /&gt;
 FilePath=InputBox(“Введите путь к файлу”, “Внимание”)&lt;br /&gt;
&lt;br /&gt;
Альтернатива – обратиться к службе '''com.sun.star.util.PathSubstitution''', чтобы узнать путь к каталогу настроек пользователя ''OOo'' (например, '''/home/user/.openoffice.org/3/user''') и применить его в качестве местоположения текстового файла. Как видно из названия, эта служба заменяет определенную переменную на путь. В нашем случае мы используем переменную '''$(user)''', и служба возвратит путь к каталогу настроек пользователя:&lt;br /&gt;
&lt;br /&gt;
 SubstService=CreateUnoService(“com.sun.star.util.PathSubstitution”)&lt;br /&gt;
 UserPath=SubstService.substituteVariables(“$(user)”, true)&lt;br /&gt;
&lt;br /&gt;
Теперь используем полученное имя каталога для задания имени файла:&lt;br /&gt;
&lt;br /&gt;
 FilePath=UserPath + “/formdata.csv”&lt;br /&gt;
&lt;br /&gt;
Неважно, какой из этих вариантов вы выберете: способ, которым макрос будет записывать данные, останется тем же. Чтобы открыть файл, макрос определяет уникальное число, часто называемое номером файла или каналом данных. Это делается с помощью функции '''FreeFile''', которая возвращает номер файла для использования в макросе:&lt;br /&gt;
&lt;br /&gt;
 f1=FreeFile()&lt;br /&gt;
&lt;br /&gt;
Затем макрос открывает файл командой Open:&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|Заголовок=Скорая помощь|Содержание=Чтобы скопировать данные из базы в электронную таблицу ''Calc'', щелкните правой кнопкой по нужной таблице и выберите '''Копировать'''. Переключитесь в ''Calc'', выберите '''Правка &amp;gt; Вставить'''. И все!|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
 Open FilePath For Append Access Read Write As #f1&lt;br /&gt;
&lt;br /&gt;
Режим '''For Append''' создает новый файл или же открывает существующий и помещает курсор в его конец; иными словами, наш макрос будет дописывать данные. Режим '''Access''' определяет права доступа; в нашем случае макрос может читать и изменять&lt;br /&gt;
файл. Чтобы ограничить доступ к файлу на время его использования, макрос применяет режим Lock. Когда текстовый файл открыт, макрос записывает в него данные из полей формы и закрывает файл:&lt;br /&gt;
&lt;br /&gt;
 Print #f1, FirstName + “, ” + LastName + Chr(13)&lt;br /&gt;
 Close #f1&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на '''Chr(13)''' в конце оператора '''Print'''. Это символ возврата каретки, чтобы следующая строка, которую будет записывать макрос, начиналась с новой строки.&lt;br /&gt;
&lt;br /&gt;
===Сохранение данных в базе===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF126_74_1.jpg|300px]] Для добавления выпадающего списка или еще чего-нибудь надо связать вашу форму с базой данных.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Данные в текстовом файле можно импортировать и обрабатывать любой программой, поддерживающей формат CSV, но есть и возможность сохранять обработанные данные непосредственно в базе, минуя стадию промежуточных файлов. Для этого зайдите в '''Файл &amp;gt; Создать &amp;gt; Базу данных...,''' выберите пункт '''Создать новую базу данных''' и нажмите '''Далее'''. Выберите '''Да, зарегистрируйте базу данных''' и отметьте '''Открыть базу для редактирования''', затем нажмите на кнопку '''Готово'''. Сохраните созданную базу данных под именем '''FormDB.odb'''. Перейдите в раздел '''Таблицы''' и нажмите на '''Создать таблицу в режиме дизайна'''.&lt;br /&gt;
&lt;br /&gt;
В таблицу следует внести три поля. Начнем с '''ID''', оно будет ключевым полем таблицы. Введите '''ID''' в столбце '''Название поля''', а в выпадающем списке '''Тип поля''' выберите '''Целое '''[Integer]. Щелкните правой кнопкой мыши по зеленому маркеру рядом с именем поля и выберите опцию '''Первичный ключ'''. Наконец, установите опцию '''Автозначение''' на '''Да''' и введите '''10''' в поле '''Длина'''. Добавьте поля '''FirstName''' и '''LastName''', установите им тип '''Текст''' [Varchar] и задайте для каждого длину. Сохраните полученную таблицу как '''Table1''', и ваша новая база данных готова.&lt;br /&gt;
&lt;br /&gt;
Вы уже знаете, как извлекать данные из полей формы; осталось написать код, сохраняющий полученные значения в базе данных. Первым делом макрос должен установить связь с базой данных '''FormDB.odb''', используя службу '''com.sun.star.sdb.DatabaseContext''':&lt;br /&gt;
&lt;br /&gt;
 DBContext=createUnoService(“com.sun.star.sdb.&lt;br /&gt;
 DatabaseContext”)&lt;br /&gt;
 DataSource=DBContext.getByName(“FormDB”)&lt;br /&gt;
 DB=DataSource.GetConnection (“”,“”)&lt;br /&gt;
&lt;br /&gt;
Чтобы этот код заработал, база данных '''FormDB.odb''' должна быть зарегистрирована ''OOo'' в качестве источника данных. Если, создавая базу, вы выбрали опцию '''Да, зарегистрировать базу данных''', то вам ничего больше делать не нужно; а если нет, потребуется зарегистрировать базу данных вручную. В ''OOo'' зайдите в '''Сервис &amp;gt; Параметры''', там выберите раздел '''База данных OpenOffice.org &amp;gt; Базы данных'''. Нажмите '''Создать...''', выберите файл '''FormDB.odb''', убедитесь, что в поле '''Зарегистрированное название''' стоит '''FormDB''', и нажмите '''OK'''.&lt;br /&gt;
&lt;br /&gt;
Для управления данными, содержащимися в ''Base, OOo Basic'' применяет ''SQL''-запросы, и для сохранения данных формы в таблицу '''Table1''' базыданных '''FormDB''' понадобится команда ''SQL'' '''INSERT INTO'''. Запрос имеет следующий формат:&lt;br /&gt;
&lt;br /&gt;
 INSERT INTO таблица (“Поле1”, “Поле2”) VALUES (‘Значение1’,‘Значение2’)&lt;br /&gt;
&lt;br /&gt;
Вот как должен выглядеть оператор, вставляющий значения '''FirstName''' и '''LastName''' в поля таблицы '''Table1''':&lt;br /&gt;
&lt;br /&gt;
 SQLQuery=”INSERT INTO “”Table1”” (“”FirstName””,“”LastName””) &lt;br /&gt;
   VALUES “ + “(‘” + FirstName + “’,’” + LastName + “’)”&lt;br /&gt;
&lt;br /&gt;
Наконец, макрос выполняет указанный ''SQL''-запрос и закрывает соединение с базой данных:&lt;br /&gt;
&lt;br /&gt;
 SQLStatement=DB.createStatement&lt;br /&gt;
 Result=SQLStatement.executeQuery (SQLQuery)&lt;br /&gt;
 DB.close&lt;br /&gt;
 DB.dispose()&lt;br /&gt;
&lt;br /&gt;
Вот полный текст макроса для ознакомления:&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF126_74_2.jpg|300px]] Мастер помогает добавлять в форму всяческие компоненты — например, выпадающие списки.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Sub SaveInDB()&lt;br /&gt;
  Doc=ThisComponent&lt;br /&gt;
  Form=Doc.Drawpage.forms.getbyIndex(0)&lt;br /&gt;
  TextBox1=Form.getByName(“FirstName”)&lt;br /&gt;
  FirstName=TextBox1.String&lt;br /&gt;
  TextBox2=Form.getByName(“LastName”)&lt;br /&gt;
  LastName=TextBox2.String&lt;br /&gt;
  DBContext=createUnoService(“com.sun.star.sdb.&lt;br /&gt;
  DatabaseContext”)&lt;br /&gt;
  DataSource=DBContext.getByName(“Basket”)&lt;br /&gt;
  ConnectToDB=DataSource.GetConnection (“”,“”)&lt;br /&gt;
  SQLQuery=”INSERT INTO “”Table1”” (“”FirstName””,&lt;br /&gt;
   “”LastName””) VALUES “ + “ (‘” +&lt;br /&gt;
   FirstName + “’,’” + LastName + “’)”&lt;br /&gt;
  SQLStatement=ConnectToDB.createStatement&lt;br /&gt;
  Result=SQLStatement.executeQuery (SQLQuery)&lt;br /&gt;
  ConnectToDB.close&lt;br /&gt;
  ConnectToDB.dispose()&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
===Выпадающие списки===&lt;br /&gt;
&lt;br /&gt;
Теперь, зная, как извлекать данные из текстовых полей, можете оживить вашу форму, включив в нее выпадающие списки и группы опций. Например, если нужно спросить пользователей, какой именно текстовый процессор они предпочитают, добавьте выпадающий список с перечнем приложений.&lt;br /&gt;
&lt;br /&gt;
В первую очередь определите источник данных, связанный со списком. В базе данных '''FormDB.odb''' создайте новую таблицу, содержащую первичный ключ – поле '''ID''' и текстовое поле '''ListItem'''. Сохраните ее как '''Table2''', откройте и сделайте в ней три записи, соответствующих трем текстовым процессорам. &lt;br /&gt;
&lt;br /&gt;
Следующий шаг – связать нашу форму с базой данных '''FormDB'''. Выберите '''Вид &amp;gt; Панели инструментов &amp;gt; Дизайн формы''', и в появившейся панели '''Дизайн формы''' нажмите кнопку '''Навигатор форм'''. На палитре '''Навигатор форм''' перейдите к разделу '''Данные''' и в поле '''Источник''' выберите файл '''FormDB.odb'''. В выпадающем списке '''Тип содержимого источника''' укажите '''Таблица''', а в списке '''Содержимое''' – '''Table2'''. Нажмите на кнопку '''Выпадающий список''' [Combo Box] на панели '''Элементы управления''' и нарисуйте на форме выпадающий список. Откроется мастер, где можно определить его параметры. Убедитесь, что у вас отмечено правильное поле ('''ListItems'''), и выберите опцию '''Нет, Сохранить значение только в форме'''. Нажмите '''Готово''', и список готов к использованию. &lt;br /&gt;
&lt;br /&gt;
Извлечение значения из этого компонента просто и требует всего лишь две строки кода. Сначала надо отыскать спи сок по его имени, а потом запросить значение:&lt;br /&gt;
&lt;br /&gt;
 ComboBox = Form.getByName(“ComboBox”)&lt;br /&gt;
 ComboBoxValue = ComboBox.CurrentValue&lt;br /&gt;
&lt;br /&gt;
Добавление группы кнопок-переключателей к форме так же просто, однако следует помнить, что:&lt;br /&gt;
# Все переключатели в группе должны иметь одно и то же имя.&lt;br /&gt;
# Для задания описания каждого переключателя следует использовать поле '''Метка''' в палитре '''Свойства'''.&lt;br /&gt;
&lt;br /&gt;
Например, для выбора возможного ответа на вопрос «Как часто вы пользуетесь ''OpenOffice.org''?» можно создать три кнопки-переключателя: «Ежедневно», «Раз в неделю» и «Раз в месяц».&lt;br /&gt;
&lt;br /&gt;
Определение того, какая из кнопок активна в текущий момент, требует нескольких шагов. Во-первых, макрос должен найти все&lt;br /&gt;
кнопки в указанной группе:&lt;br /&gt;
&lt;br /&gt;
 OptionGroup=Form.getGroupByName(“Options”, Opt())&lt;br /&gt;
&lt;br /&gt;
Затем макрос должен в цикле '''For … Next''' пройти через все пункты массива, от наименьшего ('''LBound''') до наибольшего ('''Ubound'''), и определить состояние ('''State''') каждой кнопки. Если свойство '''State''' возвращает '''True''' (это значит, что кнопка активна), макрос запрашивает ее значение '''Label''':&lt;br /&gt;
&lt;br /&gt;
 For i=LBound(Opt) to UBound(Opt)&lt;br /&gt;
  If Opt(i).state Then&lt;br /&gt;
   OptionGroupValue=Opt(i).label&lt;br /&gt;
  End If&lt;br /&gt;
 Next&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF126_75_1.jpg|300px]] Работа с формой станет проще, если вы реализуете кнопку отправки данных, с помощью события '''Нажатие клавиши мыши'''.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что все кнопки-переключатели в группе хранятся в массиве '''Opt()''', который следует объявить в самом начале макроса с помощью оператора '''Dim Opt()'''. Вот как будет выглядеть полный макрос:&lt;br /&gt;
&lt;br /&gt;
 Sub WhichRadioButton&lt;br /&gt;
  Dim Opt()&lt;br /&gt;
  Doc=ThisComponent&lt;br /&gt;
  Form=Doc.Drawpage.forms.getbyIndex(0)&lt;br /&gt;
  OptionGroup=Form.getGroupByName(“Options”, Opt())&lt;br /&gt;
  For i=LBound(Opt) to UBound(Opt)&lt;br /&gt;
   If Opt(i).state Then&lt;br /&gt;
    OptionGroupValue=Opt(i).label&lt;br /&gt;
   End If&lt;br /&gt;
  Next&lt;br /&gt;
  MsgBox OptionGroupValue&lt;br /&gt;
 End Sub&lt;br /&gt;
&lt;br /&gt;
===Настройка макросов===&lt;br /&gt;
&lt;br /&gt;
Созданные макросы вполне пригодны к применению, однако небольшая настройка способна облегчить их использование. Для извлечения данных из формы нужно запускать макрос вручную, через '''Сервис &amp;gt; Макросы &amp;gt; Выполнить макрос...''' и последующий выбор нужного макроса. Это не самый эффективный способ работы, но горю помочь легко: добавьте на форму кнопку '''Submit''' и свяжите ее с макросом. Для этого щелкните компонент '''Кнопка''' в панели '''Элемент управления''' и нарисуйте на форме кнопочку. В палитре '''Свойства''' переключитесь в раздел '''События''' и свяжите макрос с событием '''Нажатие клавиши мыши'''. Готово!&lt;br /&gt;
&lt;br /&gt;
Теперь другая проблема: вы заметили, что форму надо сохранять перед тем, как макрос будет извлекать из нее данные? Если пользователь этого не сделает, макрос вернется с пустыми руками, или сохранит ранее введенные сведения. Чтобы предотвратить это, выполните проверку наличия в документе изменений с помощью свойства '''isModified'''. Если возвращаемый результат равен '''True''', макрос сохраняет документ:&lt;br /&gt;
&lt;br /&gt;
 DocURL=Doc.getURL()&lt;br /&gt;
 If Doc.isModified Then&lt;br /&gt;
   Doc.storeAsURL(DocURL, Args)&lt;br /&gt;
 End If&lt;br /&gt;
&lt;br /&gt;
И, наконец, после извлечения данных можно очистить все поля формы. Это упростит следующему пользователю ввод сведений и предотвратит чтение того, что ранее вводил другой пользователь. Для этого напишем простой макрос и свяжем его с кнопкой очистки на форме:&lt;br /&gt;
&lt;br /&gt;
 Sub ResetForm&lt;br /&gt;
  Doc = ThisComponent&lt;br /&gt;
  Form = Doc.Drawpage.forms.getbyIndex(0)&lt;br /&gt;
  Form.Reset()&lt;br /&gt;
 End Sub&lt;br /&gt;
&lt;br /&gt;
Вместо этого также можно добавить оператор '''Form.Reset()''' в конец макроса, который извлекает данные из формы.&lt;br /&gt;
&lt;br /&gt;
===Проверка SQL-запросов===&lt;br /&gt;
&lt;br /&gt;
Прежде чем добавлять в ваш код какой-либо ''SQL''-запрос, неплохо было бы посмотреть, работает ли он, в редакторе ''SQL''. Для этого выберите в главном окне открытой базы данных '''Сервис &amp;gt; SQL''', введите ''SQL''-запрос в поле '''Команда''' [Command To Execute] и нажмите кнопку '''Execute'''. После этого вы увидите и результат, и объяснение возможных ошибок в поле '''Состояние''' [Status]. Эта возможность особенно полезна при отладке громоздких ''SQL''-скриптов. '''LXF'''&lt;/div&gt;</description>
			<pubDate>Tue, 15 Feb 2011 07:53:01 GMT</pubDate>			<dc:creator>Crazy Rebel</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF126:OOo</comments>		</item>
	</channel>
</rss>