<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF71%3AGambas</id>
		<title>LXF71:Gambas - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF71%3AGambas"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF71:Gambas&amp;action=history"/>
		<updated>2026-05-13T04:54:52Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF71:Gambas&amp;diff=4691&amp;oldid=prev</id>
		<title>Yaleks: шаблон</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF71:Gambas&amp;diff=4691&amp;oldid=prev"/>
				<updated>2008-05-22T10:59:09Z</updated>
		
		<summary type="html">&lt;p&gt;шаблон&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&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 valign='top'&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;Версия 10:59, 22 мая 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{{Цикл/Gambas}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF71:Gambas&amp;diff=4679&amp;oldid=prev</id>
		<title>Yaleks: /* настройка данных */ оформление</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF71:Gambas&amp;diff=4679&amp;oldid=prev"/>
				<updated>2008-05-21T10:38:50Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;настройка данных: &lt;/span&gt; оформление&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&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 valign='top'&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;Версия 10:38, 21 мая 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 114:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 114:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;код настройки окружения базы (для MySQL и PostrgeSQL&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;код настройки окружения базы (для MySQL и PostrgeSQL&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;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;{|&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;{| &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;style=&amp;quot;background:white;color:black;&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;ins class=&quot;diffchange diffchange-inline&quot;&gt;|- style=&amp;quot;background:#dfcfe6;color:black&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!MySQL (от имени root) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!MySQL (от имени root) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!PostgreSQL (от имени root)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!PostgreSQL (от имени root)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 133:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 134:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;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;{|&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;{| &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;style=&amp;quot;background:white;color:black;&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;ins class=&quot;diffchange diffchange-inline&quot;&gt;|- style=&amp;quot;background:#dfcfe6;color:black&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!MySQL (от имени mysqll) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!MySQL (от имени mysqll) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!PostgreSQL (от имени postgres)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!PostgreSQL (от имени postgres)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 145:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 147:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;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;{|&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;{| &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;style=&amp;quot;background:white;color:black;&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;ins class=&quot;diffchange diffchange-inline&quot;&gt;|- style=&amp;quot;background:#dfcfe6;color:black&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!MySQL (от имени любого пользователя) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!MySQL (от имени любого пользователя) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!PostgreSQL (от имени любого пользователя)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;!PostgreSQL (от имени любого пользователя)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF71:Gambas&amp;diff=4582&amp;oldid=prev</id>
		<title>Yaleks: Новая: == Легкий доступ к базам данных ==  ''PART 1 Хотите написать красивое приложение для работы с вашей базой да...</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF71:Gambas&amp;diff=4582&amp;oldid=prev"/>
				<updated>2008-05-15T06:25:12Z</updated>
		
		<summary type="html">&lt;p&gt;Новая: == Легкий доступ к базам данных ==  &amp;#039;&amp;#039;PART 1 Хотите написать красивое приложение для работы с вашей базой да...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Легкий доступ к базам данных ==&lt;br /&gt;
&lt;br /&gt;
''PART 1 Хотите написать красивое приложение для работы с вашей базой данных? У вас есть на это всего десять минут? '''Доктор Марк Александр Бэйн''' (Dr Mark Alexander Bain) прописал Gambas!''&lt;br /&gt;
&lt;br /&gt;
я буду удивлён, если мой вопрос “как вам понравится Visual&lt;br /&gt;
Basic для Linux?” не вызовет у вас злости. Пожалуйста,&lt;br /&gt;
успокойтесь, дышите ровно и перестаньте рвать журнал.&lt;br /&gt;
Давайте я лучше спрошу так: «как быть опытным программистам на&lt;br /&gt;
Visual Basic, которые хотели бы полностью перебраться под Linux, но&lt;br /&gt;
не сделают этого до тех пор, пока не смогут взять с собой свои навыки?» Для этого нужен язык программирования, который не является&lt;br /&gt;
VB, но позволит программистам на VB работать в Linux. Звучит гораздо лучше, правда?&lt;br /&gt;
&lt;br /&gt;
Этот язык – Gambas. он спроектирован так, что каждый, кто раньше пользовался Visual Basic, почувствует себя здесь, как дома, а новичок в программировании с его помощью сможет разрабатывать приложения, которые выглядят профессионально. В конце этого урока вы&lt;br /&gt;
научитесь создавать графический пользовательский интерфейс,&lt;br /&gt;
настраивать (простую) базу данных, а также читать и писать в неё&lt;br /&gt;
информацию при помощи графического интерфейса.&lt;br /&gt;
&lt;br /&gt;
Итак, приступим!&lt;br /&gt;
&lt;br /&gt;
===самое начало===&lt;br /&gt;
Время инсталлировать базу данных. Да, я знаю что вы хотите сразу&lt;br /&gt;
получить GUI и углубиться в код. Но убедиться в том, что база данных&lt;br /&gt;
на месте действительно важно. Почему? Потому, что процесс установки Gambas требует драйверов, которые входят в состав базы данных.&lt;br /&gt;
Его можно скомпилировать и без них, и им потом даже можно будет&lt;br /&gt;
пользоваться, но вот поддержки баз данных вы при этом не получите.&lt;br /&gt;
&lt;br /&gt;
Итак, нам нужна база данных. Если вы сразу подумали MS Access,&lt;br /&gt;
умойте с мылом своё сознание. я имел ввиду MySQL или PostgreSQL.&lt;br /&gt;
Почему? Потому что они оба бесплатны, просты в использовании и&lt;br /&gt;
очень надёжны.&lt;br /&gt;
&lt;br /&gt;
Главный недостаток PostgreSQL состоит в том, что Gambas ожидает что у вас установлены пакеты разработки PostgreSQL. Это значит,&lt;br /&gt;
что вам придётся где-то достать эти файлы для вашего дистрибутива&lt;br /&gt;
Linux. Если вы не уверены, или спешите (или просто такой же лентяй,&lt;br /&gt;
как и я), возьмите MySQL. Gambas может работать с ним прямо из&lt;br /&gt;
коробочки.&lt;br /&gt;
&lt;br /&gt;
В процессе установки Gambas нет ничего особенного, и вы очень&lt;br /&gt;
скоро сможете его запустить. Дистрибутив Gambas можно скачать с&lt;br /&gt;
http://gambas.sourceforge.net. При первом запуске вы увидите&lt;br /&gt;
окно с приглашением создать новый проект или открыть существующий. Выбор первой опции запустит мастер, который проведёт вас по&lt;br /&gt;
всем этапам подготовки проекта. как только он закончится, первое что&lt;br /&gt;
надо будет сделать – это создать новую форму (в конце концов, мы&lt;br /&gt;
работаем с GUI!). Для этого в окне Project активируйте папку Forms,&lt;br /&gt;
щелкните правой кнопкой мыши и выберите пункт меню New.&lt;br /&gt;
&lt;br /&gt;
===построение GUI===&lt;br /&gt;
Итак, наконец-то мы можем перейти к созданию графического интерфейса, выбирая нужные элементы в панели инструментов, а затем&lt;br /&gt;
рисуя их на форме мышкой. Для первого примера мы добавим только&lt;br /&gt;
выпадающий список (combo box) и поле ввода (text box). щелчок на&lt;br /&gt;
зелёном треугольнике позволит вам запустить приложение. Да, пока&lt;br /&gt;
оно не делает ничего особенного, но мы можем добавить код, чтобы&lt;br /&gt;
исправить это упущение. Для того, чтобы вернуться в режим дизайнера кликните на красном квадрате в меню окна Project.&lt;br /&gt;
&lt;br /&gt;
Gambas управляется событиями (как и Visual Basic). Это значит,&lt;br /&gt;
что весь выполняемый код мы должны связать с кнопками, выпадающими списками и так далее. Двойной щелчок на форме открывает&lt;br /&gt;
окно редактирования кода. Сейчас оно выглядит примерно так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
‘ Gambas class file&lt;br /&gt;
PUBLIC SUB Form_Open()&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
В этом месте мы можем размещать переменные, функции, процедуры и комментарии (они начинаются с символа ‘). По умолчанию система создаёт процедуру (подпрограмму) Form_Open, которая выполняется в момент открытия формы. Вот, каким образом Gambas управляется событиями.&lt;br /&gt;
&lt;br /&gt;
Немного доработаем код:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
‘ Gambas class file&lt;br /&gt;
PUBLIC SUB Form_Open()&lt;br /&gt;
combobox1.Add(“Fred Jones”)&lt;br /&gt;
combobox1.Add(“Mary Smith”)&lt;br /&gt;
combobox1.Add(“Jim Thompson”)&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Нажатием зелёной кнопки Run запустим наш проект. теперь у вас&lt;br /&gt;
есть форма с работающим выпадающим списком. Здорово, правда?&lt;br /&gt;
&lt;br /&gt;
Вернёмся в режим дизайнера с помощью красной кнопки Stop и&lt;br /&gt;
щелкнем дважды на выпадающем списке. В приложении появится&lt;br /&gt;
новая процедура (ComboBox1_Click), после создания кода для которой мы должны получить примерно следующее:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
‘ Gambas class file&lt;br /&gt;
PUBLIC SUB Form_Open()&lt;br /&gt;
combobox1.Add(“Fred Jones”)&lt;br /&gt;
combobox1.Add(“Mary Smith”)&lt;br /&gt;
combobox1.Add(“Jim Thompson”)&lt;br /&gt;
ComboBox1_Click&lt;br /&gt;
END&lt;br /&gt;
PUBLIC SUB ComboBox1_Click()&lt;br /&gt;
IF combobox1.text = “Fred Jones” THEN&lt;br /&gt;
textbox1.Text=”London”&lt;br /&gt;
ELSE IF combobox1.text = “Mary Smith” THEN&lt;br /&gt;
textbox1.Text=”Paris”&lt;br /&gt;
ELSE IF combobox1.text = “Jim Thompson” THEN&lt;br /&gt;
textbox1.Text=”New York”&lt;br /&gt;
END IF&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Заметьте, что процедура ComboBox1_Click вызывается в конце&lt;br /&gt;
процедуры Form_Open. Попробуйте запустить приложение в таком&lt;br /&gt;
виде и спрятав это строчку за символ комментария, чтобы понять&lt;br /&gt;
зачем она нужна.&lt;br /&gt;
&lt;br /&gt;
Итак, у нас уже есть работоспособный графический интерфейс, но&lt;br /&gt;
все данные прописаны прямо в коде приложения – не самая лучшая&lt;br /&gt;
ситуация. Представьте себе, что в этом приложении лежат данные о&lt;br /&gt;
целой компании, а затем Фред переезжает в берлин, Мэри внезапно&lt;br /&gt;
выходит замуж (или разводится), а Джим превратился в Джэйн.&lt;br /&gt;
Используя базу данных для хранения информации, мы можем писать&lt;br /&gt;
приложения, которые гораздо проще поддерживать.&lt;br /&gt;
&lt;br /&gt;
=== настройка данных ===&lt;br /&gt;
Перед тем, как начинать программировать работу с базой данных,&lt;br /&gt;
её нужно настроить определённым образом. Для начала приведём&lt;br /&gt;
код настройки окружения базы (для MySQL и PostrgeSQL&lt;br /&gt;
соответственно).&lt;br /&gt;
{|&lt;br /&gt;
!MySQL (от имени root) &lt;br /&gt;
!PostgreSQL (от имени root)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;su mysql&lt;br /&gt;
mysql_install_db&amp;lt;/source&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;useradd -d /home/postgres postgres&lt;br /&gt;
mkdir /home/postgres&lt;br /&gt;
chown postgres /home/postgres&lt;br /&gt;
mkdir /usr/local/pgsql/data&lt;br /&gt;
chown postgres /usr/local/pgsql/data&lt;br /&gt;
su postgres&lt;br /&gt;
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Это нужно выполнить только один раз, лучше всего сразу после установки пакета.&lt;br /&gt;
&lt;br /&gt;
Для запуска базы данных наберите:&lt;br /&gt;
{|&lt;br /&gt;
!MySQL (от имени mysqll) &lt;br /&gt;
!PostgreSQL (от имени postgres)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 /usr/bin/mysqld_safe &amp;amp;&lt;br /&gt;
|&lt;br /&gt;
 /usr/local/pgsql/bin/postmaster -D /usr/local/&lt;br /&gt;
 pgsql/data &amp;gt;~/logfile 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
|}&lt;br /&gt;
как правило, подобный запуск нужно выполнять при каждой загрузке&lt;br /&gt;
вашего компьютера.&lt;br /&gt;
{|&lt;br /&gt;
!MySQL (от имени любого пользователя) &lt;br /&gt;
!PostgreSQL (от имени любого пользователя)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 echo “create database customers”| mysql -uroot&lt;br /&gt;
 mysql -uroot &amp;lt; data.sql&lt;br /&gt;
|&lt;br /&gt;
 /usr/local/pgsql/bin/createdb customers&lt;br /&gt;
 /usr/local/pgsql/bin/psql customers &amp;lt; data.sql&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
create table manager (&lt;br /&gt;
id int auto_increment,&lt;br /&gt;
surname varchar(50),&lt;br /&gt;
firstname varchar(50),&lt;br /&gt;
primary key (id));&lt;br /&gt;
create table office (&lt;br /&gt;
id int auto_increment,&lt;br /&gt;
city varchar(50),&lt;br /&gt;
manager_id int,&lt;br /&gt;
primary key (id));&lt;br /&gt;
GRANT select,insert,delete,update ON *&lt;br /&gt;
TO bainm@localhost IDENTIFIED BY &lt;br /&gt;
‘mypassword’;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
create table manager (&lt;br /&gt;
id bigserial,&lt;br /&gt;
surname varchar(50),&lt;br /&gt;
firstname varchar(50),&lt;br /&gt;
primary key (id));&lt;br /&gt;
create table office (&lt;br /&gt;
id bigserial,&lt;br /&gt;
city varchar(50),&lt;br /&gt;
manager_id int,&lt;br /&gt;
primary key (id));&lt;br /&gt;
create user bainm password ‘mypassword’;&lt;br /&gt;
GRANT select,insert,delete,update on manager to bainm;&lt;br /&gt;
GRANT select,insert,delete,update on office to bainm;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
таким образом, вы создадите таблицу. Для того, чтобы загрузить в неё&lt;br /&gt;
данные, нужен следующий код:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
/*Загрузка данных по умолчанию*/&lt;br /&gt;
insert into manager (firstname,surname) values (‘Fred’,’Jones’);&lt;br /&gt;
insert into manager (firstname,surname) values(‘Mary’,’Smith’);&lt;br /&gt;
insert into manager (firstname,surname) values (‘Jim’,‘Johnson’);&lt;br /&gt;
insert into office(city,manager_id) values (‘London’,1);&lt;br /&gt;
insert into office(city,manager_id) values (‘Paris’,2);&lt;br /&gt;
insert into office(city,manager_id) values (‘New York’,3);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Хотя для каждой базы данных существует свой набор инструментов, основы языка запросов одинаковы. оба приложения понимают&lt;br /&gt;
SQL (Structured Query Language, язык структурированных запросов),&lt;br /&gt;
однако в его реализации есть небольшие отличия. Например, в MySQL&lt;br /&gt;
вы можете указать звёздочку (*) в выражении GRANT, тогда как&lt;br /&gt;
PostgreSQL требует отдельного GRANT для каждой таблицы. однако, в&lt;br /&gt;
подавляющем большинстве случаев запрос, написанный для одной&lt;br /&gt;
базы данных будет работать и для другой.&lt;br /&gt;
&lt;br /&gt;
Перед тем, как выполнять запросы, мы должны присоединиться к&lt;br /&gt;
базе данных. Gambas содержит множество компонентов, которые можно добавлять в процессе создания формы. В данном случае нам потребуются компоненты доступа к базам данных. Выберите в окне Project&lt;br /&gt;
пункт меню Project, а затем Properties. Перейдите к вкладке&lt;br /&gt;
Components и включите галочку около gb.db. теперь наше приложение&lt;br /&gt;
готово подключиться к базе данных.&lt;br /&gt;
&lt;br /&gt;
Чтобы создать подключение, нам придётся писать код, правда, он&lt;br /&gt;
будет очень простым. Для начала надо сказать программе, какое подключение использовать.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
‘ Gambas class file&lt;br /&gt;
PRIVATE conn AS NEW Connection&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Поместите этот код в верхней части формы, вне функций и процедур. так мы сделаем подключение доступным везде, как глобальный&lt;br /&gt;
параметр. После этого можно заняться написанием процедуры, которая отвечает за настройку подключения.&lt;br /&gt;
&lt;br /&gt;
В первую очередь нам надо указать, как и куда подключаться –&lt;br /&gt;
каким драйвером воспользоваться, имя пользователя и пароль, а также название базы данных.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
WITH conn&lt;br /&gt;
.Type = “mysql”&lt;br /&gt;
.Host = “localhost”&lt;br /&gt;
.Login = “bainm”&lt;br /&gt;
.Password = “mypassword”&lt;br /&gt;
.Name = “customers”&lt;br /&gt;
END WITH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
После настройки нам осталось только открыть соединение, и мы&lt;br /&gt;
будем готовы отправлять и получать информацию.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;TRY conn.OPEN&amp;lt;/source&amp;gt;&lt;br /&gt;
Использование TRY необходимо потому, что мы не хотим чтобы&lt;br /&gt;
наше приложение обрушилось, если вдруг оно не сможет&lt;br /&gt;
присоединиться.&lt;br /&gt;
&lt;br /&gt;
Вместо этого мы поймаем и обработаем любую ошибку, которая&lt;br /&gt;
может возникнуть.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
TRY conn.Open&lt;br /&gt;
IF ERROR THEN&lt;br /&gt;
Message (“Cannot Open Database. Error = “ &amp;amp; Error.Text)&lt;br /&gt;
END IF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Вся функция для настройки и открытия соединения выглядит так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
‘ Gambas class file&lt;br /&gt;
PRIVATE conn AS NEW Connection&lt;br /&gt;
PRIVATE FUNCTION make_connection() AS Boolean&lt;br /&gt;
WITH conn&lt;br /&gt;
.Type = “mysql”&lt;br /&gt;
.Host = “localhost”&lt;br /&gt;
.Login = “bainm”&lt;br /&gt;
.Password = “mypassword”&lt;br /&gt;
.Name = “customers”&lt;br /&gt;
END WITH&lt;br /&gt;
TRY conn.Open&lt;br /&gt;
IF ERROR THEN&lt;br /&gt;
Message (“Cannot Open Database. Error= “ &amp;amp;&lt;br /&gt;
Error.Text)&lt;br /&gt;
RETURN FALSE&lt;br /&gt;
END IF&lt;br /&gt;
RETURN TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Функция возвращает TRUE, если подключение удалось и FALSE в противном случае.&lt;br /&gt;
&lt;br /&gt;
=== время воспользоваться данными ===&lt;br /&gt;
Получив соединение с базой данных, можно воспользоваться содержащейся в ней информацией. Для начала заполним выпадающий список.&lt;br /&gt;
&lt;br /&gt;
Любой программист на Visual Basic использовал бы в этих целях&lt;br /&gt;
объект Recordset. В Gambas эту роль выполняет Result. он содержит в&lt;br /&gt;
себе результаты запроса к базе данных. Например, чтобы получить&lt;br /&gt;
список всех менеджеров, мы должны выполнить следующий запрос:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;select surname,firstname from manager&amp;lt;/source&amp;gt;&lt;br /&gt;
отправить этот запрос базе данных и получить результат в виде&lt;br /&gt;
Result можно вот так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;resManager= conn.Exec(“select surname,firstname from manager”)&amp;lt;/source&amp;gt;&lt;br /&gt;
теперь этой информацией можно воспользоваться, чтобы заполнить выпадающий список. Напишем простой цикл&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
FOR EACH resManager&lt;br /&gt;
ComboBox1.Add (resManager!firstname &amp;amp; “ “ &amp;amp; resManager!surname)&lt;br /&gt;
NEXT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
обратите внимание на то, что к каждому полю результата мы обращаемся при помощи имени объекта Result, восклицательного знака и&lt;br /&gt;
имени поля, например res!firstname.&lt;br /&gt;
&lt;br /&gt;
Если сделать resManager глобальной переменной, она будет&lt;br /&gt;
доступна в других процедурах и функциях, а включив поле id в запрос&lt;br /&gt;
мы получим возможность легко ссылаться на эти данные из любого&lt;br /&gt;
места программы. обратите внимание на то, как строки соединяются&lt;br /&gt;
друг с другом при помощи &amp;amp;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
PRIVATE resManager AS Result&lt;br /&gt;
PRIVATE SUB load_combo()&lt;br /&gt;
DIM sql AS String&lt;br /&gt;
sql=”select id, surname,firstname from manager”&lt;br /&gt;
resManager= conn.Exec(sql)&lt;br /&gt;
FOR EACH resManager&lt;br /&gt;
ComboBox1.Add (resManager!firstname &amp;amp; “ “ &amp;amp; resManager!surname)&lt;br /&gt;
NEXT&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
теперь мы можем использовать выпадающий список, чтобы получить дополнительную информацию из базы данных. В нашем примере&lt;br /&gt;
это будет офис, в котором работает каждый менеджер. Принцип очень&lt;br /&gt;
напоминает заполнение выпадающего списка: запрос отправляется на&lt;br /&gt;
сервер, а полученный результат отображается в поле ввода. основное&lt;br /&gt;
отличие заключается в том, что возвращаемые данные зависят от текущего элемента выпадающего списка.&lt;br /&gt;
&lt;br /&gt;
Вернёмся к процедуре load_combo, в которой мы заносим список&lt;br /&gt;
менеджеров в resManager. каждая запись включает в себя идентификатор ID, имя и фамилию каждого менеджера. Всё, что нам нужно&lt;br /&gt;
сделать – это перейти к нужной строчке, достать из нее ID и запросить&lt;br /&gt;
у базы данных офис менеджера с таким идентификатором. Мы можем&lt;br /&gt;
использовать поле index выпадающего списка для определения строки,&lt;br /&gt;
к которой нужно перейти (для первого менеджера index = 0, для второго – 1, для третьего – 2 и так далее). технология проста: сначала нужно&lt;br /&gt;
переместить указатель resManager на первую запись, а потом переместиться к следующей n раз, где n – это index выпадающего списка.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
resManager.MoveFirst&lt;br /&gt;
resManager.MoveTo( ComboBox1.Index)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
текст запроса генерируется на основе resManager!id.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
sql=”select city from office” &amp;amp;&lt;br /&gt;
“ where manager_id=” &amp;amp; resManager!id&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Целиком процедура будет выглядеть так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
PUBLIC SUB ComboBox1_Click()&lt;br /&gt;
DIM res AS Result&lt;br /&gt;
DIM sql AS String&lt;br /&gt;
resManager.MoveFirst&lt;br /&gt;
resManager.MoveTo( ComboBox1.Index)&lt;br /&gt;
sql = “select city from office” &amp;amp; “ where manager_id=” &amp;amp;&lt;br /&gt;
resManager!id&lt;br /&gt;
res = conn.Exec(sql)&lt;br /&gt;
textbox1.Text=res!city&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
окончательный вариант Form_Open&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
PUBLIC SUB Form_Open()&lt;br /&gt;
IF make_connection()=TRUE THEN&lt;br /&gt;
load_combo&lt;br /&gt;
ComboBox1_Click&lt;br /&gt;
END IF&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Мы уже выполняли запись в базу данных, когда настраивали её.&lt;br /&gt;
Делалось это при помощи оператора INSERT. Второй способ изменения данных – это оператор UPDATE. Давайте для начала рассмотрим&lt;br /&gt;
INSERT.&lt;br /&gt;
&lt;br /&gt;
Для этих целей добавим на форму поле ввода и кнопку и используем их для указания нового города. Выполните двойной щелчок на&lt;br /&gt;
кнопке и вы обнаружите процедуру Button1_Click.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
PUBLIC SUB Button1_Click()&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
основной целью процедуры является создание SQL-запроса для&lt;br /&gt;
вставки в базу нового города на основе содержимого поля ввода&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;sql=”insert into office (city) values (‘” &amp;amp; textbox2.text &amp;amp;”’)”&amp;lt;/source&amp;gt;&lt;br /&gt;
В реальной процедуре нам придется предварительно выполнить&lt;br /&gt;
некоторые проверки, чтобы убедиться что исходные данные&lt;br /&gt;
правильные.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
PUBLIC SUB Button1_Click()&lt;br /&gt;
DIM res AS Result&lt;br /&gt;
DIM sql AS String&lt;br /&gt;
IF textbox2.text &amp;lt;&amp;gt; “” THEN&lt;br /&gt;
sql=”insert into office (city) values (‘” &amp;amp; textbox2.text &amp;amp;”’)”&lt;br /&gt;
res=conn.Exec(sql)&lt;br /&gt;
ELSE&lt;br /&gt;
message (“Input required”)&lt;br /&gt;
END IF&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
обратите внимание: на экране кнопка имеет надпись Button1, а&lt;br /&gt;
второе поле ввода - TextBox2. Для изменения этих названий убедитесь, что вы находитесь в режиме дизайнера, щелкните (только один&lt;br /&gt;
раз, вы ведь не собираетесь писать код) на нужном элементе управления и нажмите F4. Появится страница Properties. отыщите там элемент&lt;br /&gt;
с названием Text и замените его значение на «Add» для кнопки и пустую строку для поля ввода.&lt;br /&gt;
&lt;br /&gt;
Если вы запустите приложение и нажмёте кнопку Add, внешне&lt;br /&gt;
ничего не произойдёт. однако, при помощи следующей команды&lt;br /&gt;
оболочки&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;echo “select * from office”| mysql -uroot customers&amp;lt;/source&amp;gt;&lt;br /&gt;
вы можете убедиться, что город был добавлен в базу данных.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы увидеть новый город в приложении, нужно создать&lt;br /&gt;
новый выпадающий список и заполнить его данными из таблицы городов, в которых еще нет ни одного менеджера. Значит, нам нужно&lt;br /&gt;
добавить такой список в форму и написать процедуру для его заполнения (она будет вызываться из Form_Open и при нажатии кнопки Add).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
PRIVATE resNewOffice AS Result ‘Global variable&lt;br /&gt;
PRIVATE SUB load_new_office ()&lt;br /&gt;
DIM sql AS String&lt;br /&gt;
sql=”select id,city from office where manager_id is NULL”&lt;br /&gt;
resNewOffice=conn.Exec(sql)&lt;br /&gt;
combobox2.Clear&lt;br /&gt;
FOR EACH resNewOffice&lt;br /&gt;
combobox2.Add(resNewOffice!city)&lt;br /&gt;
NEXT&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Эта функция очень похожа на процедуру для заполнения выпадающего списка менеджеров с одним отличием&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;combobox2.Clear&amp;lt;/source&amp;gt;&lt;br /&gt;
Поскольку она может быть вызвана не только из Form_Open (когда выпадающий список еще пуст), но и при добавлении города. Эта&lt;br /&gt;
строчка очищает список, чтобы в него можно было загрузить новые&lt;br /&gt;
данные.&lt;br /&gt;
&lt;br /&gt;
Наконец, мы рассмотрим, как изменять данные в базе при помощи&lt;br /&gt;
выражения UPDATE. Допустим, мы хотим переместить одного из&lt;br /&gt;
менеджеров в новый офис. Эта процедура перенесёт id менеджера из&lt;br /&gt;
записи о старом офисе в запись о новом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
PUBLIC SUB Button2_Click()&lt;br /&gt;
DIM res AS Result&lt;br /&gt;
DIM sql AS String&lt;br /&gt;
resNewOffice.MoveFirst&lt;br /&gt;
resNewOffice.MoveTo (combobox2.Index)&lt;br /&gt;
resManager.MoveFirst&lt;br /&gt;
resManager.MoveTo (combobox1.Index)&lt;br /&gt;
sql=”update office set manager_id=NULL” &amp;amp; “ where&lt;br /&gt;
manager_id=” &amp;amp; resManager!id&lt;br /&gt;
res=conn.Exec(sql)&lt;br /&gt;
sql=”update office set manager_id=” &amp;amp; resManager!id &amp;amp;&lt;br /&gt;
“ where id=” &amp;amp; resNewOffice!id&lt;br /&gt;
res=conn.Exec(sql)&lt;br /&gt;
ComboBox1_Click&lt;br /&gt;
load_new_office&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ну вот, всё что нам осталось – это привести экран в порядок, добавив метки (используйте F4, чтобы получить доступ к окну Properties и&lt;br /&gt;
изменить текст меток).&lt;br /&gt;
&lt;br /&gt;
=== использование хранимых процедур ===&lt;br /&gt;
Хранимые процедуры очень похожи на обычные процедуры и&lt;br /&gt;
функции с тем отличием, что они хранятся на стороне базы данных, а не на стороне клиентского приложения. Их достоинством&lt;br /&gt;
является то, что если вы изменили код процедуры, то результат&lt;br /&gt;
его работы (или ошибку) увидят все пользователи системы без&lt;br /&gt;
необходимости в установке новой версии вашей программы.&lt;br /&gt;
Хранимые процедуры очень полезны для выполнения операторов&lt;br /&gt;
UPDATE/INSERT.&lt;br /&gt;
&lt;br /&gt;
Если вы измените структуру или положение таблицы, вам нужно&lt;br /&gt;
будет только изменить код хранимой процедуры в базе данных вместо&lt;br /&gt;
того, чтобы перекомпилировать и обновлять приложение на всех рабочих местах. Хранимые процедуры создаются следующим образом (в&lt;br /&gt;
PostgreSQL и MySQL 5.0)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
mysql&amp;gt; CREATE PROCEDURE updateLocation (IN manid INT,IN offid INT)&lt;br /&gt;
-&amp;gt; BEGIN&lt;br /&gt;
-&amp;gt; update office set manager_id=NULL where manager_id=manid;&lt;br /&gt;
update office set manager_id=manid where id=offid;&lt;br /&gt;
-&amp;gt; END&lt;br /&gt;
-&amp;gt; //&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
А вот так выглядит использование хранимой процедуры (из&lt;br /&gt;
Gambas).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
PUBLIC SUB Button2_Click()&lt;br /&gt;
DIM res AS Result&lt;br /&gt;
DIM sql AS String&lt;br /&gt;
resNewOffice.MoveFirst&lt;br /&gt;
resNewOffice.MoveTo (combobox2.Index)&lt;br /&gt;
resManager.MoveFirst&lt;br /&gt;
resManager.MoveTo (combobox1.Index)&lt;br /&gt;
sql=”call updateLocation(resManager!id,resNewOffice!id)”&lt;br /&gt;
res=conn.Exec(sql)&lt;br /&gt;
ComboBox1_Click&lt;br /&gt;
load_new_office&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Программировать в Gambas легко. Если вы опытный программист&lt;br /&gt;
под Windows, я надеюсь что вы увидели путь в Linux, проложенный&lt;br /&gt;
маленькой синей креветкой Gambas.&lt;/div&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	</feed>