<?xml version="1.0"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
		<channel><title>[Lantica Software Support Center] Recently Updated Articles</title><link>https://www.lantica.com/support/rss/kb/recent_changes</link><description/><item><title>Installing Sesame on Ubuntu 22.04 LTS</title><description>
&lt;p&gt;Since Sesame is currently still a 32 bit program, to run on a modern 64 bit operating system, you need to install 32bit compatibility libraries. To do this on Ubuntu 22.04 run the following commands:&lt;/p&gt;
&lt;p&gt;sudo dpkg --add-architecture i386&lt;br&gt;
wget &lt;a href="http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1.6_amd64.deb" target="_blank" rel="noreferrer noopener"&gt;http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1.6_amd64.deb&lt;/a&gt;&lt;br&gt;
sudo dpkg -i multiarch-support_2.27-3ubuntu1.6_amd64.deb&lt;br&gt;
sudo apt-get update&lt;br&gt;
sudo apt-get install libc6:i386&lt;br&gt;
sudo apt-get install libstdc++6:i386&lt;br&gt;
sudo apt-get install libx11-dev:i386 &lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/263</link><pubDate>Wed, 18 Jun 2025 18:01:39 GMT</pubDate><guid isPermaLink="false">4645d7cd2c3a4ed62b0090c981defb36</guid></item><item><title>What are the minimum system requirements to run Sesame?</title><description>&lt;p&gt;Sesame requires a Windows 2000, XP, Vista, Windows 7, Windows 8, Windows 10, Windows 11( or newer) or a Linux (for Intel) operating system. Minimum RAM requirements are the same as those required by the operating system. However, it is a good idea to have a total amount of RAM that is three times the size of your largest database. For network use over a LAN (local area network) or WAN (wide area network), Sesame requires installation of the TCP/IP (standard Internet) protocol on the network. The network server must be capable of running a Windows or Linux (for Intel) program on itself.&lt;/p&gt;</description><link>https://www.lantica.com/support/kb/article/31</link><pubDate>Wed, 26 Feb 2025 17:05:23 GMT</pubDate><guid isPermaLink="false">76355e1e1c507b36f3a84144b8feb5b4</guid></item><item><title>Will Sesame run on my operating system?</title><description>
&lt;p&gt;Sesame is a 32 bit application that runs on the following operating systems:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows NT&lt;/li&gt;
&lt;li&gt;Windows 2000&lt;/li&gt;
&lt;li&gt;Windows XP&lt;/li&gt;
&lt;li&gt;Windows Vista (32 bit)&lt;/li&gt;
&lt;li&gt;Windows Vista (64 bit as a 32 bit application)&lt;/li&gt;
&lt;li&gt;Windows 7 (32 bit)&lt;/li&gt;
&lt;li&gt;Windows 7 (64 bit as a 32 bit application)&lt;/li&gt;
&lt;li&gt;Windows 8 (32 bit)&lt;/li&gt;
&lt;li&gt;Windows 8 (64 bit as a 32 bit application)&lt;/li&gt;
&lt;li&gt;Windows 10 (32 bit)&lt;/li&gt;
&lt;li&gt;Windows 10 (64 bit as a 32 bit application)&lt;/li&gt;
&lt;li&gt;Windows 11 (32 bit)&lt;/li&gt;
&lt;li&gt;Windows 11 (64 bit as a 32 bit application)&lt;/li&gt;
&lt;li&gt;All Windows Server 20xx Operating systems to date&lt;/li&gt;
&lt;/ul&gt;
As well as:
&lt;ul&gt;
&lt;li&gt;Linux (for Intel)&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://www.lantica.com/support/kb/article/3</link><pubDate>Mon, 24 Jan 2022 13:47:42 GMT</pubDate><guid isPermaLink="false">6e14e2ba9aadf1369e0b48c7ab855726</guid></item><item><title>Change the field type that an element is bound to</title><description>&lt;ol&gt;
&lt;li&gt;Open Sesame Designer  &lt;/li&gt;
&lt;li&gt;Open your DSR file  &lt;/li&gt;
&lt;li&gt;Expand Manage a Database  &lt;/li&gt;
&lt;li&gt;Expand your database name  &lt;/li&gt;
&lt;li&gt;Click Manage Fields  &lt;/li&gt;
&lt;li&gt;Under Action: choose "Change Field Type"  &lt;/li&gt;
&lt;li&gt;Under Field Name choose the field you want to switch to text  &lt;/li&gt;
&lt;li&gt;On the right, click Add Transaction to Batch  &lt;/li&gt;
&lt;li&gt;Click Run Batch  &lt;/li&gt;
&lt;/ol&gt;</description><link>https://www.lantica.com/support/kb/article/178</link><pubDate>Mon, 27 Apr 2020 13:19:43 GMT</pubDate><guid isPermaLink="false">cff0ec1b74706d5d059389869da830c7</guid></item><item><title>Troubleshooting Client/Server Connection Issues</title><description>
&lt;p&gt;Problems during initial setup:&lt;/p&gt;
&lt;p&gt;Before beginning this troubleshooting guide, double check that server and client versions of Sesame are the exact same version. Version mismatching can lead to many problems, not just communication problems, so always be sure you are running same version on the server and all client computers.&lt;/p&gt;
&lt;p&gt;1: I get an Error message saying "One or more of the files may be set to read-only" then I get another error saying that the files failed to open.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Check that there is no space in between the hyphen and the word client (or server) in the target of the Sesame icon. &lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check the spelling on the "Client"(or "Server") switch after sesame.exe&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check that the Sesame version string at the top of the Sesame window says Sesame Plus not Sesame Personal. Sesame Personal does not have Client/Server capabilities.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2: I get an Error message saying "Error failed to connect to server"&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Check that the Server name used in the target of the Client icon is the computer name of the computer running Sesame Server&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check that the Sesame Server is running on the Server computer&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check Firewall on both Server and Client computers.(See Firewall section below)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Verify network connection to the Server computer using the Ping command&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;If Ports have been specified in the Server's target path, those same ports need to be specified in the Client's target path&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;If Ports are specified on the Target path check that there is no spaces in between the Server Name, the colons and the ports&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;If you're trying to connect Sesame Client/Server over the Internet, verify that the TCP Ports for Sesame, 20000 and 20001 by default, are forwarded to the Server computer in the Port Forwarding section of the Router's configuration.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3: I get an Error message saying "Failed to connect to the Server - too many clients" followed by an Error message saying "Failed to connect to the Server" but there is only one Client connected to the Server&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Check the Sesame Server dialog on the Server computer, and see if the "Connections" field at the top of the window says 1 out of 1. If it does the license file may not be in the right place. Start by checking the "Start In:" property of the Sesame Server icon and make a note of the path displayed in it, by default the path is C:\Sesame2\. You will need to place the s_license2.lic file into that directory. Then shut down the Sesame Server program using the shutdown commands under Server Administration from the open client and then restart it. The "Connections" field should now show the correct number of allowed clients. If it does not, contact Technical Support for additional assistance. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;Problems after initial setup/connection:&lt;/p&gt;
&lt;p&gt;The first thing you are going to want to try if you've just started having issues with Client/Server not working properly is to try a re-boot of the Server computer. Sometimes certain network problems can be solved with a simple reboot of the Server machine. If the problem just started happening and Client/Server was running correctly before and nothing has changed with the network configuration itself, try a reboot. &lt;/p&gt;


&lt;p&gt;1: Sesame Client closes after being open for a short period of time&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Check Firewall on both Server and Client computers.(See Firewall section below)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Update to Sesame version 2.5.2 or newer, if you're currently on an older version&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;If you are connected to the Server computer via a Wireless connection, try connecting with a patch cable and see if problem persists&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check for Port conflicts with other programs(See Port Conflcts section below)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2: Sesame Client closes after being open for longer than 5 minutes. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Check Firewall on both Server and Client computers.(See Firewall section below)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check Power Saving Settings on the Network Card of both the Client and the Server computers(See Power Saving Setting on the Network Card section below)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check Router settings for port timeouts and connection timeouts or try substituting a different router as certain routers have internal timeouts built into them that can not be changed.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check to see if the Server computer has been assigned a different IP address from when Client first connected to the Server computer(See DHCP section below)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Check to see if the Client computer has been assigned a different IP address from when it first connected to the Server computer(See DHCP section below)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;If you are connected to the Server computer via a Wireless connection, try connecting with a patch cable and see if problem persists&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;It could be that the problem you are experiencing is a hardware issue. Try substituting in a new network card, different cable, switch, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;br&gt;
&lt;p&gt;Firewall&lt;/p&gt;
&lt;p&gt;Certain firewall programs will allow the initial connection, but will time out the connection after a few minutes and close the ports that Sesame is using. To get firewalls to not only allow the initial connection, but to also allow the ports to remain open, you need to tell the firewall not to mess with the ports that Sesame is using.&lt;/p&gt;

&lt;p&gt;On the Windows Firewall be sure that both the program sesame.exe and the communication ports(Default: TCP 20000 and 20001) are on the allowed exceptions list.&lt;/p&gt;

&lt;p&gt;For other Firewalls add exceptions for either the program or the ports or both depending on what it allows you to add for exceptions.&lt;/p&gt;

&lt;p&gt;If you already added these exceptions to your Firewall when you first set up Sesame in Client/Server, but are now experiencing problems, double check that the exceptions are still there. Some software updates to Firewall programs have been known to delete exceptions that have been added by the user.&lt;/p&gt;

&lt;p&gt;Different firewall programs have different settings for timeouts. If your connections are timing out after some number of minutes, check the manual for your firewall program to see where they set timeouts.&lt;/p&gt;

&lt;p&gt;Power Saving Setting on the Network Card&lt;/p&gt;
&lt;p&gt;In Windows Control Panel open the System properties. Switch to the Hardware tab and click Device Manager. Under Network Adapters check the properties of all the items listed. If they have a Power Management tab, make sure that the option "Allow the computer to turn off this device to save power." is unchecked.&lt;/p&gt;

&lt;p&gt;Port Conflicts&lt;/p&gt;
&lt;p&gt;Sesame by default runs on TCP Ports 20000 and 20001. If you have another program that is using either of these ports, or suspect you have another program on either of those ports, you will want to assign a different set of ports for Sesame to use. The port numbers must be sequential with the second port being 1 number higher than the first port number.&lt;/p&gt;

&lt;p&gt;DHCP&lt;/p&gt;
&lt;p&gt;Since Sesame requires a constant network connection between the Client and Server computers if either one of the IP addresses was to change, the connection would be broken. If you are using DHCP, to assign IP addresses to the computers, check that the Client Lease Time is set to 24 Hours. In some cases it may be necessary to assign a static IP address to the Server, Client, or both computers.&lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/137</link><pubDate>Fri, 17 Apr 2020 14:31:47 GMT</pubDate><guid isPermaLink="false">f3557de3049f0acbdbc318d4549761a1</guid></item><item><title>Merging Your Data Into Labels (Microsoft Word 2007/2016)</title><description>
&lt;p&gt;1. Export data from Sesame with Field Name Headers&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/wm_asciiexport.png" alt="wm_asciiexport.png"&gt;&lt;/p&gt;
&lt;p&gt;2. Open Microsoft Word&lt;/p&gt;
&lt;p&gt;3. Click the "Mailings" toolbar at the top, Click on "Start Mail Merge" and choose "Letters".&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/wm_07mailmergelabels.png" alt="wm_07mailmergelabels.png"&gt;&lt;/p&gt;
&lt;p&gt;4. Choose the label that you will be using and select "OK"&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/wm_07labeloptions.png" alt="wm_07labeloptions.png"&gt;&lt;/p&gt;
&lt;p&gt;5. At the top click on "Select Recipients" and choose "Use Existing List..."&lt;/p&gt;
&lt;p&gt;6. In the Files of Type: drop down at the bottom choose "All Files (*.*)" and browse to where your ASCII file is and select it&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/wm_07browse.png" alt="wm_07browse.png"&gt;&lt;/p&gt;
&lt;p&gt;7. Click into the first label on your document and then on the toolbar at the top click on "Insert Merge Fields"&lt;/p&gt;
&lt;p&gt;8. Insert your database fields in the appropriate spots by selecting the field and then selecting the "Insert" button, when completed click on the "Close" button&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/wm_03insert.png" alt="wm_03insert.png"&gt;&lt;/p&gt;
&lt;p&gt;9. On the toolbar at the top click on "Update Labels"&lt;/p&gt;
&lt;p&gt;NOTE: Saving your document will cause Word to remember all your merge settings so you can begin from this step the next time you open your merge document.&lt;/p&gt;
&lt;p&gt;10. Click "Finish &amp;amp; Merge " at the top. Choose "Print Documents..." to print the letters, or click "Edit Individual Documents..." to merge to a new document&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/wm_07endmerge.png" alt="wm_07endmerge.png"&gt;&lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/136</link><pubDate>Tue, 11 Dec 2018 16:51:13 GMT</pubDate><guid isPermaLink="false">9c7dbf86e8a9ac5f1c462b63a21873af</guid></item><item><title>Exporting Your Data To A CSV File</title><description>
&lt;p&gt;1. Open your application and open your form in Search Update mode. Retrieve the records you want to export.&lt;/p&gt;
&lt;p&gt;2. If the Spec Window title bar at the bottom left of your screen does not display Export followed by the name of your form,&lt;b&gt; click on the large arrow to the right of the title until Export is the displayed spec.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/sesame_export1.png" alt="sesame_export1.png"&gt;&lt;/p&gt;
&lt;p&gt;3. In the Spec Window,&lt;b&gt; click the grey box next to the fields that you want to export&lt;/b&gt;. An arrow appears in the box to inform you that the field is selected for export. The number displayed next to the arrow indicates the order of the elements you have selected.&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/sesame_export2.png" alt="sesame_export2.png"&gt;&lt;/p&gt;
		


	&lt;p&gt;4. In the Spec Window, click on the title bar which should say Export followed by your form name. &lt;b&gt;Select Run&lt;/b&gt; from the list of options that appears.&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/sesame_export3.png" alt="sesame_export3.png"&gt;&lt;/p&gt;
&lt;p&gt;5. The Ascii Export window appears on your screen asking you to enter a filename for the export. Be sure to include the file extension(.csv or .txt) in the filename. The default options will work under most circumstances. &lt;b&gt;Enter the filename you want to use&lt;/b&gt; in the Ascii Export Filename box and click Accept.&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/Support/screenshots/sesame_export4.png" alt="sesame_export4.png"&gt;&lt;/p&gt;
&lt;p&gt;6. Sesame exports your data to the specified file.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;More Information:&lt;/b&gt;&lt;br&gt;Information about Exporting data from Sesame is located on page 343 of the 2.0 Sesame User Guide.&lt;/p&gt;

</description><link>https://www.lantica.com/support/kb/article/84</link><pubDate>Wed, 28 Nov 2018 14:50:36 GMT</pubDate><guid isPermaLink="false">96079f3e4b64abbf74d596976b1e83a2</guid></item><item><title>Running Sesame On The Web</title><description>
&lt;h2&gt;Section Links&lt;/h2&gt;
     &lt;ul&gt;
          &lt;li&gt;&lt;a href="#1"&gt;Getting Your Data Uploaded&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href="#2"&gt;Starting A Sesame Server On The Web&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href="#3"&gt;Building A Webpage To Serve Sesame Data&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href="#4"&gt;Putting It All Together&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href="#5"&gt;Using PuTTY&lt;/a&gt;&lt;/li&gt;
     &lt;/ul&gt;
&lt;p&gt;With the free release of the Sesame API, it has never been easier to deploy a Sesame application on the web. Using Sesame's ability to save a form as HTML (the language of
web pages) and to then integrate that web page with an online Sesame application using the API, it is no more than an afternoon's work to get your application "on
the web." Providing support for the common scripting languages of the web (PHP, Perl, Python, Java, and C#), the API lets any web page send data to a Sesame server,
or get data from the server in much the same way as the usual Sesame client software.
&lt;/p&gt;
&lt;p&gt;
As many of you have seen, the convenience of having an application on the web is paramount in today's business climate. Customers, salespeople, regional offices, and  
your people "on the road" all need access to information, and they need it immediately wherever they are. Deploying information on the web provides that information
to your customers or employees anywhere they can get on the internet, with no more software than a web browser. This means that they no longer have to wait until
they get back to the office to update the application or get the latest information from the database. It is, quite literally, at their fingertips all of the time.
&lt;/p&gt;
&lt;p&gt;
&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Getting Your Data Uploaded&lt;/h2&gt;
Almost all web servers, the machines that provide web pages, run either Linux or Windows. Currently Linux is the much more popular choice for web servers. If you
have Sesame for Windows, you can obtain and run Sesame for Linux at no additional cost. To run Sesame on a web server that you own and manage is as simple as
copying the executable to that server along with your application and license files. If you are using a third party web server, as most of us are, it is not much
more difficult to deploy Sesame, but there are a few simple requirements. You must have some way of copying files to the web server. Typically, this is done
using a program known as FTP ("file transfer protocol/program"). There are special FTP programs for Windows that have an easy to use graphical user interface. 
Alternatively, a command line FTP program comes with every version of Windows since Windows 95. A typical FTP session to send Sesame to a web server would look 
something like this:
&lt;p&gt;
(Instructions are in italics and bold. The portions you need to type are in bold and appear after a "ftp&amp;gt;" or "C:&amp;gt;" prompt. Replies from FTP usually start with a number 
(i.e.: 220, 230, etc...) and may vary from one server to another.)
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;&lt;i&gt;On the command line type ftp, followed by the name of your web site&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
C:\&amp;gt; ftp www.YourWebSite.com&lt;br&gt;
220-Welcome to www.YourWebSite.com&lt;br&gt;
&lt;br&gt;&lt;b&gt;&lt;i&gt;FTP will now prompt you for your login name and password. These should be provided by the company providing your web server.&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
Name: &lt;b&gt;YourLoginName&lt;/b&gt;&lt;br&gt;
331 User YourLoginName OK. Password required&lt;br&gt;
Password: &lt;b&gt;************&lt;/b&gt;&lt;br&gt;
230-User YourLoginName has group access&lt;br&gt;
230 Ok. Current directory is /&lt;br&gt;
Remote system type is UNIX.&lt;br&gt;
Using binary mode to transfer files.&lt;br&gt;
&lt;br&gt;&lt;b&gt;&lt;i&gt;Go into the directory where web pages are kept - usually "www" or "public_html".&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
ftp&amp;gt; &lt;b&gt;cd www&lt;/b&gt;&lt;br&gt;
250 OK. Current directory is /www&lt;br&gt;
&lt;br&gt;&lt;b&gt;&lt;i&gt;Make a directory ("folder") to put sesame in.&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
ftp&amp;gt; &lt;b&gt;mkdir Sesame2&lt;/b&gt;&lt;br&gt;
257 "Sesame2" : The directory was successfully created&lt;br&gt;
&lt;br&gt;&lt;b&gt;&lt;i&gt;Go into that directory.&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
ftp&amp;gt; &lt;b&gt;cd Sesame2&lt;/b&gt;&lt;br&gt;
250 OK. Current directory is /www/Sesame2&lt;br&gt;
&lt;br&gt;&lt;b&gt;&lt;i&gt;Send sesame to the web server putting it in the directory you just created: "Sesame2".&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
ftp&amp;gt; &lt;b&gt;send sesame&lt;/b&gt;&lt;br&gt;
local: sesame remote: sesame&lt;br&gt;
229 Extended Passive mode OK (|||36665|)&lt;br&gt;
150 Accepted data connection&lt;br&gt;
100% |*******************************************************************************************************************|  6746 KB   77.14 KB/s    00:00 ETA&lt;br&gt;
226-File successfully transferred&lt;br&gt;
226 87.699 seconds (measured here), 76.93 Kbytes per second&lt;br&gt;
6908361 bytes sent in 01:27 (76.92 KB/s)&lt;br&gt;
&lt;br&gt;&lt;b&gt;&lt;i&gt;Log out of FTP and disconnect from the server.&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
ftp&amp;gt; &lt;b&gt;bye&lt;/b&gt;&lt;br&gt;
221-Goodbye. You uploaded 6748 and downloaded 0 kbytes.&lt;br&gt;
221 Logout.&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;Yes, it is a bit cryptic and difficult, mostly due to its age. FTP is probably one of the oldest programs still in general use, invented in the late 1960s. Don't let 
it intimidate you. At the end of the day, it is simply a program from copying files from one machine to another. For this example, send sesame (the linux executable),
sunlock (the linux version), s_license2.lic (your license file), and the sample application Customers files - both the .db and the .dat files to your web server, using the approach seen above. You can send
more than one file by re-issuing the "send" command for each file. You can send files using a wildcard by using the "mput" command. For example, "mput *.html" will send
each HTML file in your local directory to the server.
&lt;a&gt;&lt;/a&gt;&lt;h2&gt;Starting a Sesame Server on the Web&lt;/h2&gt;
&lt;p&gt;
After you have Sesame uploaded to the server, the next step is learning how to execute Sesame as a server. Fortunately, most web servers provide their users with a simple
means for launching programs. Unfortunately, because web servers do not, and usually cannot, have a graphical user interface, we'll be spending a bit more time on a 
command line. If you are acquainted with the Windows (DOS) command line, this will not be very different. If you have only used icons and menus, this is may help you 
better understand one of the basic ideas behind any operating system. Whether you are using a graphical user interface (GUI) on Windows or one Linux, you have actually
always been using a command line, the graphics simply hide this from you. Right click on any icon on your desktop and select "Properties" from the menu that appears. This
will launch the "Properties" dialog box for that icon. Dig around a little and you will find fields that tell the operating system what program to launch and in what 
directory ("folder") to launch it. These are exactly the same things you would type on a command line, except the operating system's desktop does the typing for you.
&lt;/p&gt;
&lt;p&gt;
Web servers need to provide capabilities to many users at once and need to send information to hundreds, if not thousands, of users simultaneously. It would be
impractically slow to provide so many users with their own GUI and desktop through the internet. Instead, most web servers provide a command line interface to your
account, files, and directories on the server. Because we are "on the internet," this connection between your computer and the web server for this command line is
usually encrypted. This keeps prying eyes from getting your passwords and other critical information you may not want to share with the internet at large. Almost
all Linux web servers provide a facility called "ssh" for connecting to a command line on your web account. Linux provides ssh as part of the operating system. For
Windows users there are many free ssh utilities. The most prominent of these is PuTTY. If your web server does not provide any means to get to a command line, you
should seriously consider changing web server companies. 
&lt;/p&gt;
&lt;p&gt;
Setting up ssh or PuTTY to work with your web server isn't difficult and there are dozens of examples for each program provided on the internet. Adapting these examples
to your situation is usually just a matter of typing in the name of your web server and the login and password provided when you purchased the web site. Some web 
providers require that you provide additional identification when you apply to get ssh access to your web site. They do this to make sure that no one else is getting
access to your stuff.
&lt;/p&gt;
&lt;p&gt;
Once you have ssh setup, you are ready to log in. You will be asked to provide a user and and password. PuTTY lets you set these up once for each server you plan to access,
so you don't have to type them in each time you connect. After successfully logging in, you will be provided with a command prompt. Because your web server is probably
a Linux box, this command prompt will probably look a bit different from the command line in the command window in Windows. For example it may use "$" or "#" as the prompt
character, instead of the "&amp;gt;" that Windows uses. Some of the commands you can issue on the command line will be the same as those used by "DOS" and some are different. For
example, Linux uses "cd" to change directories, just as DOS does. But, instead of "DIR", Linux uses "ls" to list files and directories. Also, Linux is case sensitive. So,
"ls" is a known Linux command, but "LS" and "Ls" are not. Another difference is that Linux uses the forward slash ("/") to separate directory names, where DOS uses the 
backslash character ("\"). To see the path where you are logged in, type the command "pwd". You should see something like: "/home/YourWebName".
&lt;/p&gt;
&lt;p&gt;
To launch Sesame on the server, you will need to "navigate" to the directory you created using FTP. So issue the command "cd www/Sesame2". Now type "pwd" and you should
see that your current directory is "/home/YourWebName/www/Sesame2". If you type "ls", you should see sesame, sunlock, s_license2.lic, Customers.db and Customers.dat listed. Launching 
Sesame on a web server is very similar to launching it on an ordinary Sesame server. 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;&lt;i&gt;sesame -daemon -server localhost:20000:20001 &amp;amp;&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
The three differences you should immediately notice are that you have used the "-daemon" flag, that the server is called "localhost", and the command line ended with a "&amp;amp;".
 The "-daemon" flag tells Sesame to run without any kind of graphical user interface. If you forget to specify this flag, Sesame will complain that it can't open a 
"display" and exit. We specify "localhost" instead of the server name because we don't want Sesame to be directly accessible to the internet. Huh? What, you ask, 
wasn't that the point? Well, sort of. Most web servers only allow a handful of well known "ports" to be directly accessible to people connecting to that server from the 
outside world. Port 80 is open because that is the port that the web server software uses to talk to web browsers. Port 25 is usually open to provide email services. 
But ports 20000 and 20001 are usually closed on the server's firewall and cannot be opened to the public. So, instead we open those ports on "localhost". The "localhost" 
is a a nickname for the virtual network that is only available to programs running on the very same computer. Since we want Sesame to be available to the web server 
software, usually "Apache", and that software is running on the same computer as the Sesame server software, using "localhost" is the way to go. Apache will be responsible 
for providing access to Sesame to the outside world. The last bit that is different is the ampersand "&amp;amp;" that appears at the end of the command line. This tells Linux
that we want our command line back before the Sesame server has completed executing. By running Sesaame "detached", you get to continue issuing commands to Linux while
Sesame is running, and Sesame will continue running after you log off.
&lt;/p&gt;
If you get an error message "Permission denied" when you try to launch Sesame, that means that FTP did not set the execute permissions on the file when it transfered it
from your computer. Type "chmod +x sesame" to tell Linux that sesame is a executable file. Linux does not use file extensions like ".exe" to determine if a file
is an executable. Instead, it uses permissions that are much the same as the read/write permissions Windows files have. The command chmod ("change mode") is used to
change those permissions.

&lt;a&gt;&lt;/a&gt;&lt;h2&gt;Building a Web Page to Serve Sesame Data&lt;/h2&gt;
&lt;p&gt;
The next steps take place back on your computer, so we need to stop sesame and log off the Linux server. To stop sesame, type "killall sesame". This tells Linux to stop any processes you own (you launched it, so you own it)
named "sesame". Once sesame is terminated, log off of the Linux server by pressing ctrl-d or typing exit. You should now be disconnected from the web server and back on
your own computer.
&lt;/p&gt;
&lt;p&gt;
Sesame has the ability to make a web page from a form. As an example, open the Customers.db sample application, open the only form, enter "Add Mode" so the form is
blank, and select "Save Current Record to HTML" from the menu. Set the filename to "customers.html". HTML is the language of web pages. Basically, you have told Sesame 
to translate the current form into HTML and to save result in a text file with a ".html" extension. Some small modifications to this file will be needed in order to use 
it as a web page for the Sesame API. Using a text editor (&lt;b&gt;not&lt;/b&gt; a word processor), edit the customers.html file. The code you are seeing is the 
"source code" of a web page. In our case it is a HTML form. Most of the lines in the file represent different elements that appeared in the Sesame customer's form. You can
bring this web page up in your web browser by browsing to the directory where you created the file and selecting "customers.html". The web page should resemble the 
original Sesame form. In your text editor, move to the line that says "&amp;lt;FORM&amp;gt;" and change it to read: 

&lt;br&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;pre&gt;&lt;b&gt;&amp;lt;FORM action="main.cgi" method="post"&amp;gt;&lt;/b&gt;&lt;/pre&gt;&lt;b&gt;&lt;/b&gt;

Open a blank line above the line that says, "&amp;lt;/FORM&amp;gt;" and type in the following lines:&lt;br&gt;&lt;br&gt;
&lt;b&gt;
&amp;lt;div style="position:absolute; left:200; top:500px; background:#e5e5e5; color:#000000;"&amp;gt;&lt;br&gt;
&amp;lt;input type="submit" name="mysubmit" value="Search"&amp;gt;&lt;br&gt;
&amp;amp;lt/div&amp;gt;&lt;br&gt;&lt;br&gt;
&lt;/b&gt;
This will create a "Search" button at the bottom of the form. Save the file. The first change to the &amp;lt;FORM&amp;gt; tag tells the web server that the program called "main.cgi"
is to be used when someone submits this form. The second change adds a button that will cause the submit to take place.

&lt;h2&gt;Using the Sesame API&lt;/h2&gt;
&lt;p&gt;
The next step is to write the "main.cgi" file that runs when a user presses the "Search" button. Again, use a text editor to create a file named "main.cgi".
It should contain the following code:
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre&gt;

#!/usr/bin/python2.6

import sesame_python_api
import cgi
import os
import sys

happy = sesame_python_api.SesameConnect("www.YourWebSite.com")
if(happy  t.t 2&amp;gt; t2.t &amp;amp;")
else:
        sesame_python_api.SesameDisconnect()

happy = sesame_python_api.SesameConnect("www.YourWebSite.com")
if(happy &amp;gt; 0):
        search_str = ''
        form = cgi.FieldStorage()
        for field in form.keys():
                if(field != 'mysubmit'):
                        search_str = search_str + '!' + field + '=' + form[field].value + '%'
        search_str = search_str[:-1]
        nn = sesame_python_api.SesameSearch("Customers.db", "Customers", 0, 2, search_str, "", "")
        print 'Content-Type: text/html\n'
        print ''
        print ''
        print ''
        print 'Search Results'
        print ''
        print ''
        if(nn &amp;gt; -1):
                num = sesame_python_api.SesameTotal(nn)
                if(num &amp;gt; 0):
                        sesame_python_api.SesameSort(nn, "Last:-1")
                        print '&lt;/pre&gt;&lt;h1&gt;Search Results&lt;/h1&gt;'
                        print '&lt;p&gt;Your search returned ' + str(num) + ' records:&lt;/p&gt;'
                        print '&lt;p&gt;&lt;a href="%5C%22customers.html%5C%22"&gt;Start a New Search&lt;/a&gt;&lt;/p&gt;'
                        print '
&lt;table border="0"&gt;&lt;tr&gt;&lt;td colspan="7"&gt;&lt;hr&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;' + str(loop) + '&lt;/td&gt;&lt;td valign="top"&gt;' + last + '&lt;/td&gt;&lt;td valign="top"&gt;' + first + '&lt;/td&gt;&lt;td valign="top"&gt;' + company + '&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;'
                else:
                        print '&lt;p&gt;Your search returned no matching records.&lt;/p&gt;'
                        print '&lt;p&gt;&lt;a href="%5C%22customers.html%5C%22"&gt;Start a New Search&lt;/a&gt;&lt;/p&gt;'

                sesame_python_api.SesameClose(nn)
        else:
                print '&lt;p&gt;Error: Search failed.&lt;/p&gt;'
                print '&lt;p&gt;&lt;a href="%5C%22customers.html%5C%22"&gt;Start a New Search&lt;/a&gt;&lt;/p&gt;'
        print ''
        print ''
        sesame_python_api.SesameDisconnect()
else:
        print 'Content-Type: text/html\n'
        print ''
        print ''
        print ''
        print 'Search Results'
        print ''
        print ''
        print '&lt;p&gt;Error: Sesame server cannot be started.&lt;/p&gt;'
        print ''
        print ''


&lt;p&gt;
Of course, replace "YourWebSite" with the actual name of your website. The code is written in the very popular scripting language known as "Python". It is easily
adapted to any of the other scripting languages the Sesame API supports, such as PHP, Perl, Java, or C#. If you know SBasic, then you should recognize a 
number of the commands in the code. For example "sesame_python_api.SesameSearch" is the same command as "XResultSetSearch" in SBasic. Basically, this program knows
how to start a Sesame server, if it is not running, get search values off of the submitting web page ("customers.html"), connect to the Sesame server, perform
a query based on the values from the web page, and return the results in a table on a new web page.
&lt;/p&gt;
&lt;a&gt;&lt;/a&gt;&lt;h2&gt;Putting It All Together&lt;/h2&gt;
&lt;p&gt;
Using FTP, upload the customer.html file, the main.cgi file, and the following files from the free Sesame API package to the same directory (/home/YourWebSite/www/Sesame2) 
where you uploaded sesame, sunlock, and the Customers.db and Customers.dat files:&lt;br&gt;
&lt;br&gt;sesame_python_api.py
&lt;br&gt;sesame_python_api.pyc
&lt;br&gt;_sesame_python_api.so
&lt;/p&gt;
&lt;p&gt;
Log into your server using ssh or PuTTY. Navigate to your directory ("cd www/Sesame2"). If you issue the command "ls" you should see a list of files. You should have the
following files listed:&lt;br&gt;&lt;br&gt;
Customers.dat&lt;br&gt;
Customers.db&lt;br&gt;
customers.html&lt;br&gt;
main.cgi&lt;br&gt;
sesame&lt;br&gt;
sesame_python_api.py&lt;br&gt;
sesame_python_api.pyc&lt;br&gt;
_sesame_python_api.so&lt;br&gt;
s_license2.lic&lt;br&gt;
sunlock&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
To make sure that each of the files are executable, issue the following commands:&lt;br&gt;
&lt;br&gt;chmod +x main.cgi&lt;br&gt;
chmod +x sesame&lt;br&gt;
chmod +x sunlock&lt;br&gt;
chmod +x sesame_python_api.py&lt;br&gt;
chmod +x sesame_python_api.pyc&lt;br&gt;
chmod +x -sesame_python_api.so&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
You can now check out your work. Using a web browser navigate to "http://www.YourWebSite.com/Sesame2/customers.html". You should see the same form you looked at earlier.
Type a Q&amp;amp;A style search spec into the form, for example set "First" to "a.." and press the "Search" button at the buttom. The main.cgi script will be invoked. It will
check if sesame is running. If not it will start it. This may take a short while. It will then return a web page with a table of the results for those people
that have a first name that starts with "a":&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;Your search returned 17 records:&lt;/p&gt;
&lt;table border="0"&gt;
	&lt;tr&gt;&lt;td colspan="7"&gt;&lt;hr&gt;&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;

		&lt;td valign="top"&gt;0&lt;/td&gt;
		&lt;td valign="top"&gt;Black&lt;/td&gt;
		&lt;td valign="top"&gt;Arnold&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;1&lt;/td&gt;

		&lt;td valign="top"&gt;Charles&lt;/td&gt;
		&lt;td valign="top"&gt;Angie&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;2&lt;/td&gt;
		&lt;td valign="top"&gt;Delavina&lt;/td&gt;

		&lt;td valign="top"&gt;Alice&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;3&lt;/td&gt;
		&lt;td valign="top"&gt;Dent&lt;/td&gt;
		&lt;td valign="top"&gt;Anthony&lt;/td&gt;

		&lt;td valign="top"&gt;Dent &amp;amp; Dent&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;4&lt;/td&gt;
		&lt;td valign="top"&gt;Depaulo&lt;/td&gt;
		&lt;td valign="top"&gt;Anthony&lt;/td&gt;

		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;5&lt;/td&gt;
		&lt;td valign="top"&gt;Di Paola&lt;/td&gt;
		&lt;td valign="top"&gt;Ann&lt;/td&gt;
		&lt;td valign="top"&gt;Di Paola Executive Placement Service&lt;/td&gt;

	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;6&lt;/td&gt;
		&lt;td valign="top"&gt;Farquharson&lt;/td&gt;
		&lt;td valign="top"&gt;Aurora &amp;amp; Banny&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td valign="top"&gt;7&lt;/td&gt;
		&lt;td valign="top"&gt;Gemmill&lt;/td&gt;
		&lt;td valign="top"&gt;Amy&lt;/td&gt;
		&lt;td valign="top"&gt;Gemmill &amp;amp; Partners&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td valign="top"&gt;8&lt;/td&gt;
		&lt;td valign="top"&gt;Harper&lt;/td&gt;
		&lt;td valign="top"&gt;Arinn&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;

		&lt;td valign="top"&gt;9&lt;/td&gt;
		&lt;td valign="top"&gt;Hughes&lt;/td&gt;
		&lt;td valign="top"&gt;Ali&lt;/td&gt;
		&lt;td valign="top"&gt;Nationwide Self Storage&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;10&lt;/td&gt;

		&lt;td valign="top"&gt;Liddell&lt;/td&gt;
		&lt;td valign="top"&gt;Alice&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;11&lt;/td&gt;
		&lt;td valign="top"&gt;Serra&lt;/td&gt;

		&lt;td valign="top"&gt;Armando&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;12&lt;/td&gt;
		&lt;td valign="top"&gt;Targan&lt;/td&gt;
		&lt;td valign="top"&gt;Adrian&lt;/td&gt;

		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;13&lt;/td&gt;
		&lt;td valign="top"&gt;Thompson&lt;/td&gt;
		&lt;td valign="top"&gt;Anna&lt;/td&gt;
		&lt;td valign="top"&gt;Hop Skip &amp;amp; Jump Enterprises&lt;/td&gt;

	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td valign="top"&gt;14&lt;/td&gt;
		&lt;td valign="top"&gt;Varnell&lt;/td&gt;
		&lt;td valign="top"&gt;Ann Marie&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td valign="top"&gt;15&lt;/td&gt;
		&lt;td valign="top"&gt;Webb&lt;/td&gt;
		&lt;td valign="top"&gt;Alice&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;

		&lt;td valign="top"&gt;16&lt;/td&gt;
		&lt;td valign="top"&gt;Wise&lt;/td&gt;
		&lt;td valign="top"&gt;Anne &amp;amp; Francis&lt;/td&gt;
		&lt;td valign="top"&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;
If Sesame is already running, searches will take less time because the web server doesn't have to start up the Sesame server. So it is probably a good idea to run the
first search yourself before you let the general public have a go. Of course, if the web server needs to rebooted at any time, the first person to use your page will
see the slight slow down as Sesame is invoked.
&lt;/p&gt;
&lt;h2&gt;A Live Example&lt;/h2&gt;
&lt;p&gt;
To see this very example up and running on a website. Send your browser to &lt;a href="http://www.lantica.com/APIExample" target="_blank" rel="noreferrer noopener"&gt;http://www.lantica.com/APIExample&lt;/a&gt;. I have kept
this example especially plain and simple so that the code would be as uncluttered as possible. But it is not difficult to pretty it up a bit or even completely
change it to post information to a Sesame application, or use multiple applications - some reading others writing. The possibilities are endless. And, because this is a
Sesame application running on web page, it can be accessed from all over the world with nothing more complicated than a web browser.
&lt;/p&gt;
&lt;h2&gt;Accessing Sesame Securely Using the Sesame Client&lt;/h2&gt;
&lt;p&gt;
One question that keeps coming up since Sesame was a new product and has special relevence to running Sesame on the web, is "Can I run Sesame through a secure connection?"
The answer is, and always has been, "yes". Earlier, you set up ssh or PuTTY to access your web server. As I mentioned, this connection is encrypted. The type of
encryption is identical to that used by web sites that need a secure connection for commerce or banking. We can take advantage of the ssh software to use a 
Sesame client/server connection to talk to the Sesame server running up on your website. Just as Apache (the web server) can be used to talk to the outside world for
the Sesame server, the ssh process that is running on your web server can also be used to connect a Sesame client running on your machine to the Sesame server running
on your web server. 
&lt;/p&gt;
&lt;p&gt;
When you set up the Sesame server for your website, you set it to use the default ports 20000 and 20001 on "localhost". These ports are not allowed to be opened to the 
outside world, but other programs running on your web server are allowed to talk to Sesame through these ports on "localhost". If you were allowed to run the Sesame 
client right on your web server, and it could open a graphical user interface window and send it through the internet to your computer, we wouldn't need a "proxy program" 
to run Sesame securely through the net. Unfortunately, almost no web servers provide that kind of interface. Instead, we can set up ssh or PuTTY to act as a proxy between 
Sesame running on localhost ports and the internet, and run Sesame client right on your computer. The ssh program (and PuTTY) both know how to use a technique called "port
forwarding". This is where a program reads all of the data that comes in to localhost on one or more specified private ports and then sends that across the net on its 
own public port. It also listens to its public port and send any data it receives to any number of private localhost ports. If your web server is accessible using ssh
or PuTTY, it is unlikely that you will need to make any changes to it to connect a Sesame client on your computer to a Sesame server on your website.
&lt;/p&gt;
&lt;h2&gt;Using SSH&lt;/h2&gt;
&lt;p&gt;
If you are using ssh, a simple command line is all you need to connect a Sesame client to a Sesame server on a website:&lt;br&gt;
&lt;br&gt;&lt;b&gt;ssh -L 20000:www.YourWebSite.com:20000 -L 20001:YourWebSite.com:20001 YourLogin@YourWebSite.com&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
The "-L" flag tells ssh that you want to forward ports locally and on the server. After it is invoked, it will prompt you for your login password. Once that is typed
in, you will be connected to the server and see the Linux command line. You don't have to type anything on that command line. Simply stay logged in. Now, on your
computer start a Sesame client:&lt;br&gt;
&lt;br&gt;&lt;b&gt;sesame -client localhost:20000:20001&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
Because ssh has set up port forwarding, the "conversation" the Sesame client has on ports 20000 and 20001 will get intercepted on your computer by ssh. Ssh will 
encrypt that conversation and send it across the internet on its own port (usually 22) to the ssh server running on your web server. Because ssh has been told to
forward these ports, the ssh server on your web server will then send the conversation to the Sesame server listening to ports 20000 and 20001 on the localhost 
interface. Once the connection between Sesame client and the Sesame server has been established, you can log off of the remote command line. Ssh will continue to
run and maintain the connection, unless you explicitly stop the process.
&lt;/p&gt;
&lt;a&gt;&lt;/a&gt;&lt;h2&gt;Using PuTTY&lt;/h2&gt;
&lt;p&gt;
PuTTY has a graphical user interface, so set up is a bit different than the command line ssh. After filling your profile for the connection as you would for
any other PuTTY session, select and expand "SSH" on the command tree. Your dialog should appear very similar to the screen shot below. Only two fields here need to
be changed. Type 20000 into the "Source port" field, type "localhost:20000" into the "Destination" field and press the "Add" button. A line for that port will appear
in the "Forwarded ports:" field. Repeat for the second port, 20001. Of course, if you are using port pairs other than 20000 and 20001, use those instead. Go back
to the "Session" screen by selecting "Session". If you have not done so, set your server name, login, and password appropriately for your web server, and save the
changes for your session. 
&lt;/p&gt;
&lt;img src="/images/putty.jpg" alt="PuTTY Configuration" title="PuTTY Configuration"&gt;

&lt;p&gt;
With your session complete, you can now invoke that session in PuTTY. PuTTY will connect to your server and setup a SSH command line for you. It is also forwarding
ports 20000 and 20001 from your localhost virtual network interface to its own port (usually 22) and sending any data that shows up on those ports to the SSH process
on you web server. That SSH process will automatically send any data it receives to the Sesame server running on localhost ports 20000 and 20001 on the web server. Start a
Sesame server running on the web server:&lt;br&gt;&lt;br&gt;
&lt;b&gt;sesame -daemon -server localhost:20000:20001&lt;/b&gt;&lt;br&gt;&lt;br&gt;
then start a Sesame client on your computer:&lt;br&gt;&lt;br&gt;
&lt;b&gt;sesame -client localhost:20000:20001&lt;/b&gt;&lt;br&gt;&lt;br&gt;
and you are now connected to the Sesame server on your web server computer using an encrypted secure connection.
&lt;/p&gt;
&lt;p&gt;
This technique kills two birds with one stone. It allows anyone with ssh or PuTTY and a Sesame client to access Sesame applications hosted on a web server from anywhere in the 
world. It also encrypts their conversation, so prying ears can't listen in. SSH provides password protection, encryption, and port forwarding. This means that you can 
run a Sesame server on a central computer and then any of your employees or customers with a Sesame client can access it with an internet connection. But, because it is 
secured using ssh or PuTTY, unwanted visitors are kept away. And because they are using the same Sesame client ordinarily used to access the Sesame server, all of your 
forms, reports, programming, and customizations are in place and active. For the price of web site hosting, typically less than $10 a month, you can get a Sesame wide area network.
&lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/138</link><pubDate>Tue, 28 Nov 2017 19:38:04 GMT</pubDate><guid isPermaLink="false">9147319bf058a65d3a4662a792f953bd</guid></item><item><title>Moving Sesame to a New Computer</title><description>
&lt;p&gt;It may become necessary, at some point, to move Sesame from one computer to another or to add computers to your existing network. Even more likely, you may need to update your Sesame software. With each new version Sesame provides tools and techniques for making database management easier and more efficient. Because Sesame's developers, technicians and consultants work so closely with Sesame users, suggestions for improvement and fixes are constantly being tested and implemented. These developments are actualized in the form of newer Sesame versions.&lt;/p&gt;

&lt;p&gt;Common concerns for Sesame users during these occasions include whether the installation CD is necessary and what happens to their settings and data.&lt;/p&gt;

&lt;p&gt;If you do not have your Sesame installation CD for any reason, you may visit Lantica.com and choose from a number of options in the "Downloads" section. From here, you can download the newest version of Sesame. &lt;/p&gt;

&lt;p&gt;Following the instructions below will allow your data to transfer seamlessly. Should you run into snags along the way there's always a way to find a solution (&lt;a href="http://lantica.com/support/kb/article/000201"&gt; Where Can I Find More Information, Such as Online Help, with Sesame and Sesame Designer?&lt;/a&gt;) check out some of the other Knowledgebase articles listed below, take a look on the User Forum, or contact &lt;a href="mail%20to%3Acustomer_support@lantica.com"&gt;Technical Support&lt;/a&gt;.&lt;/p&gt; 

&lt;p&gt;Moving Sesame is really quite painless. Because there is more than one configuration possible, however, differences in how to do so exist. Therefore, it may be necessary to make a few minor changes depending on your particular situation.&lt;/p&gt;

&lt;h3&gt;Standalone Single User:&lt;/h3&gt;
&lt;p&gt;With the default install the Sesame program files can be found accordingly: The Sesame program files are in the &lt;i&gt;C:\Sesame2\Program&lt;/i&gt; folder. Data files are in &lt;i&gt;C:\Sesame2\Data&lt;/i&gt;. Documents are in &lt;i&gt;C:\Seame2\Docs&lt;/i&gt;. Settings and configuration files are in &lt;i&gt;C:\Sesame2&lt;/i&gt; folder.  
To move to a new computer follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copy the entire &lt;i&gt;Sesame2&lt;/i&gt; folder from your old computer (either by right-clicking on the folder and choosing &lt;i&gt;Copy&lt;/i&gt;, or clicking on the folder and using the Ctrl-C shortcut). This will copy the contents of the folder, including all of its subfolders. Paste this folder directly onto your new computer's C:\ drive (either by right-clicking and choosing &lt;i&gt;Paste&lt;/i&gt;, or using the Ctrl-V shortcut) if the two computers are connected via a network cable. You can also copy and paste to your new computer via a thumb-drive. There are no hidden or read-only files or folders.&lt;/li&gt;

&lt;li&gt;On your new computer, open &lt;i&gt;Sesame2 -&amp;gt; Program&lt;/i&gt;. Right-click on &lt;i&gt;Sesame&lt;/i&gt; (not SDesigner) and choose &lt;i&gt;Send to Desktop (Create Shortcut)&lt;/i&gt;. This will create the shortcut on your desktop.&lt;br&gt;
Alternatively, you may also right-click on your desktop and choose &lt;i&gt;New Shortcut&lt;/i&gt; from this dropdown menu. In the location line type: &lt;i&gt;C:\Sesame2\Program\Sesame.exe&lt;/i&gt; and click &lt;b&gt;Next&lt;/b&gt;. Sesame will automatically set up the proper icons for your shortcuts.
Name your shortcut Sesame.&lt;/li&gt;

&lt;li&gt;Right-click on the shortcut you've just created and select &lt;i&gt;Properties&lt;/i&gt;. In the &lt;i&gt;Start In:&lt;/i&gt; box, change the words &lt;i&gt;C:\Seseame2\Program&lt;/i&gt; to &lt;i&gt;C:\Sesame2&lt;/i&gt; (essentially, you're just deleting the "\Program"). This is critical, as this will allow Sesame to find its configuration files.&lt;/li&gt;
&lt;li&gt;Repeat steps 2 and 3 of Sesame Designer (substitute &lt;i&gt;sdesigner.exe&lt;/i&gt; for &lt;i&gt;sesame.exe&lt;/i&gt;) and name the shortcut &lt;i&gt;Sesame Designer&lt;/i&gt;.&lt;/li&gt; 
&lt;/ol&gt;
  
&lt;h3&gt;Multi-User Client Server Installation:&lt;/h3&gt;
&lt;p&gt;There are two different processes for this case - one for the server and one for the client computer(s). They are similar to the steps used for standalone systems, with some changes in the shortcuts.&lt;/p&gt; 

&lt;ol&gt;
&lt;li&gt;Copy the entire &lt;i&gt;Sesame2&lt;/i&gt; folder from the old computer (either by right-clicking on the folder and choosing &lt;i&gt;Copy&lt;/i&gt;, or clicking on the folder and using the Ctrl-C shortcut). This will copy the contents of the folder, including all of its subfolders. Paste this folder directly onto your new computer's C:\ drive (either by right-clicking and choosing &lt;i&gt;Paste&lt;/i&gt;, or using the Ctrl-V shortcut) if the two computers are connected via a network cable (for both client and server). You can also copy and paste to your new computer via a thumb-drive. There are no hidden or read-only files or folders.&lt;br&gt;
If you are only installing new clients, just copy the folder from the old to the new clients. If you are only putting in a new server, just copy the folder from the old server to the new server.&lt;/li&gt;
&lt;li&gt;Find the network name of the server by right-clicking on &lt;i&gt;My Computer&lt;/i&gt; on the server machine and finding the line telling you the &lt;i&gt;Computer name&lt;/i&gt; (or by right-clicking on the Sesame shortcut on the &lt;b&gt;old&lt;/b&gt; computer(s) and choosing &lt;i&gt;Properties&lt;/i&gt;).
&lt;/li&gt;
&lt;li&gt;
&lt;i&gt;For a new server installation:&lt;/i&gt; On the new server, create a new Sesame Server shortcut by right-clicking on your desktop and choosing &lt;i&gt;New Shortcut&lt;/i&gt; from the dropdown menu. In the "location" line, type:&lt;br&gt;&lt;br&gt;
&lt;b&gt;C:\Sesame2\Program\Sesame.exe -Server NameOfServer&lt;/b&gt;&lt;br&gt;&lt;br&gt;
(where &lt;i&gt;NameOfServer&lt;/i&gt; is the network &lt;i&gt;Computer Name&lt;/i&gt; of your server) and click &lt;b&gt;Next&lt;/b&gt;. Name your shortcut &lt;i&gt;Sesame Server&lt;/i&gt; and click &lt;b&gt;Finish&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;i&gt;For new client installations:&lt;/i&gt; After copying the old client Sesame2 directory to the C: drive on each new &lt;i&gt;client computer&lt;/i&gt;, create a new shortcut on the desktop by right-clicking and choosing &lt;i&gt;New Shortcut&lt;/i&gt; from the dropdown menu. In the location line type:&lt;br&gt;&lt;br&gt;
&lt;b&gt;C:\Sesame2\Program\Sesame.exe -Client NameOfServer&lt;/b&gt;&lt;br&gt;&lt;br&gt;
(where &lt;i&gt;NameOfServer&lt;/i&gt; is the network &lt;i&gt;Computer Name&lt;/i&gt; of your server) and click &lt;b&gt;Next&lt;/b&gt;. Name your shortcut &lt;i&gt;Sesame Client&lt;/i&gt; and click on &lt;b&gt;Finish&lt;/b&gt;.&lt;/li&gt; 
&lt;li&gt;Right-click on your new shortcut and choose &lt;i&gt;Properties&lt;/i&gt;. Change the path in &lt;i&gt;Start in:&lt;/i&gt; to be &lt;i&gt;C:\Sesame2&lt;/i&gt;, by removing the &lt;i&gt;\program&lt;/i&gt;.&lt;/li&gt; 

&lt;/ol&gt;&lt;p&gt;&lt;b&gt;See these other Knowledgebase article for more information:&lt;/b&gt;&lt;br&gt;
&lt;a href="http://www.lantica.com/support/kb/article/000014" target="_blank" rel="noreferrer noopener"&gt;My machine name has spaces in it. How can I get Sesame to start a server on this machine?&lt;/a&gt;&lt;br&gt; 
&lt;a href="http://www.lantica.com/support/kb/article/000090" target="_blank" rel="noreferrer noopener"&gt;What does Client/Server mean?&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.lantica.com/support/kb/article/000023" target="_blank" rel="noreferrer noopener"&gt;What do I need to let multiple users connect to my database?&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.lantica.com/support/kb/article/000017" target="_blank" rel="noreferrer noopener"&gt;Can I run more than one Sesame server?&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.lantica.com/support/kb/article/000093" target="_blank" rel="noreferrer noopener"&gt;What does the message "Failed to create a local socket: Unknown" mean?&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.lantica.com/support/kb/article/000022" target="_blank" rel="noreferrer noopener"&gt;How many clients can connect to a Sesame server?&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.lantica.com/support/kb/article/000019" target="_blank" rel="noreferrer noopener"&gt;Do I have to buy a separate program to run Client/Server?&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.lantica.com/support/kb/article/000137" target="_blank" rel="noreferrer noopener"&gt;Troubleshooting Client/Server Connection Issues&lt;/a&gt;&lt;br&gt;
&lt;a href="http://lantica.com/support/kb/article/000139"&gt;Reconfiguring Norton Security Suite To Allow Client/Server Connections&lt;/a&gt;&lt;/p&gt;
	

</description><link>https://www.lantica.com/support/kb/article/259</link><pubDate>Tue, 07 Feb 2017 16:08:43 GMT</pubDate><guid isPermaLink="false">b39f32bf90986bdcedbf612b1b7490c5</guid></item><item><title>Can I create merge documents?</title><description>
&lt;p&gt;We are continually asked why Sesame does not 
    include a built-in word processor. The answer is rather simple. One of the 
    two best word processors in the world  Microsoft Word or WordPerfect  is 
    probably already installed on 99% of the computers our users will be sitting 
    in front of. We did not want to compete with these fine products. We wanted 
    to utilize their power and versatility to complement Sesame.&lt;/p&gt;

&lt;p&gt;Almost anyone who works with a database 
    manager needs a way to print merge letters, envelopes or mailing labels 
    using the data in their records. We have already shown that Sesame has three 
    ways of doing this:&lt;/p&gt;
    
&lt;ol&gt;
&lt;li&gt;Free-Form Sesame reports.&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;Printing-related programming commands.&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;Sesame ODBC(Sesame Version 2.5.3 and earlier) with an external word processor.&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All of these methods are powerful and 
    available to Sesame users. They each have their strengths and weaknesses. 
    Your choice depends on your needs and skill levels. Each will require some 
    familiarization and practice.&lt;/p&gt;

&lt;p&gt;It gets even easier&lt;/p&gt;

&lt;p&gt;However, our potential customers have been asking for a really quick and 
    easy way to perform mail merge operations from Sesame. We have it for you. 
    No special functions, no programming, no additional drivers are required. Merge procedure # 4 (our 
    favorite) is a simple delimited ASCII export.&lt;/p&gt;

&lt;p&gt;Built into Sesames export facilities are 
    several features that make this procedure fast, flexible, easy to 
    accomplish, and compatible with both Microsoft Word and WordPerfect  even 
    better, in our opinion, than what you can do in Q&amp;amp;A. These features are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ability to export data, on-the-fly, from a group of selected database 
      records, without leaving those records. (Not possible 
      in Q&amp;amp;A.)&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The ability to include in the export some or all of the fields in those records.&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The ability to automatically include a field name header record in the export file. (Not supported by 
      Q&amp;amp;A.)&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The ability to include blank (empty) fields as true null or blank values. (Q&amp;amp;A does not do this.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What does all this mean? Combining these 
    Sesame export capabilities with the built-in text file merge capabilities of 
    both Word and WordPerfect make creating a merge document from your Sesame 
    database as easy as this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In Sesame, you retrieve and sort the records you want to include in your merge document or mailing 
      labels.&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;a&gt;Export&lt;/a&gt; from the Spec Window in the lower left corner of the screen. Click on the 
      fields you want to include in your letter, or simply click &lt;a&gt;Set All&lt;/a&gt;. 
      Click &lt;a&gt;Run&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;In the ASCII Export options screen that appears, click &lt;a&gt;Field Name Header&lt;/a&gt;, then type in 
      a filename (its best to use a, txt filename extension) and location for 
      the ASCII export file. Leave all the other settings at their defaults 
      (comma separation, delimit strings, and double quote delimiter) and click
      &lt;a&gt;Accept&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;Open Word or WordPerfect and use the programs Wizards or menus to create your merge letter, envelope, or labels, selecting your data source as Text Files (*.txt) and 
      choosing the export file you just created in Sesame. Insert the merge 
      fields in your document from the lists provided, and you are ready to 
      print.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is important to understand that this final step #4 needs to be performed &lt;a&gt;only once&lt;/a&gt; for each combination of merge document/merge data file. Both word processors enable you to associate (link) a merge document (including an envelope or mailing label template) with your data source filename. This way, the next time open the same merge document, it will automatically connect with your Sesame export file, even when the database records 
    included in that file have changed. In other words, you don't have to 
    recreate the merge document each time you want to print the same merge 
    letter, envelope or label. All that is required is that the structure of the 
    associated merge data file  along with its filename and location remain the same.&lt;/p&gt;

&lt;p&gt;Both Word and WordPerfect have very good 
    help and documentation on merging with external data from a text file. We 
    can't go into this in detail because the steps vary somewhat between the two 
    products, between different versions of the same product, and may 
    additionally depend on the operating system you are using. Suffice it to say 
    that the average user should be able to learn how to do a merge printing 
    with a Sesame export file  in either word processor  in just a few 
    minutes.&lt;/p&gt;
    
&lt;p&gt;Its as easy as 1-2-3-4! Okay, we 
    stretched it by one, but it really &lt;a&gt;is&lt;/a&gt; simple and 
    it brings all the power and versatility of the two word processing giants to your Sesame data. Do it 
    just once and you will be amazed at how fast you can create and merge-print 
    your information. If you save your merge document, you will be able to 
    simply retrieve a different set of data, export it to the same filename, and 
    print a new set of merge letters in a flash.&lt;/p&gt;

&lt;p&gt;Our first attempt at a printing a merge letter using this procedure took no more than five minutes and most of 
    that was in typing the body of the letter.&lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/91</link><pubDate>Tue, 21 Apr 2015 20:02:11 GMT</pubDate><guid isPermaLink="false">629fe71819fb99493177cea903cb8265</guid></item><item><title> Does Sesame have an ODBC driver?</title><description>&lt;p&gt;Yes for Sesame Version 2.5.3 and earlier. The Sesame ODBC driver supports both Query and Read.&lt;/p&gt;</description><link>https://www.lantica.com/support/kb/article/49</link><pubDate>Tue, 21 Apr 2015 20:01:13 GMT</pubDate><guid isPermaLink="false">1557327439cbcac3614a1b349540c6a1</guid></item><item><title>Does installing Sesame affect my Registry?</title><description>&lt;p&gt;No. Sesame does not use or make or edit any registry entries. The only part of the Sesame package that affects the registry is the ODBC driver(Sesame Version 2.5.3 and earlier) - which is optional, and not installed by default.&lt;/p&gt;</description><link>https://www.lantica.com/support/kb/article/40</link><pubDate>Tue, 21 Apr 2015 20:00:33 GMT</pubDate><guid isPermaLink="false">b47a056d5b58733ccc600b9376ca5fdc</guid></item><item><title>Does Sesame use any .DLL files?</title><description>
&lt;p&gt;Sesame only uses .DLL files that are part of every Windows operating system. It does not need to "find" any .DLLs, nor does it come with any .DLLs by default.  &lt;/p&gt;
&lt;p&gt;Note: The ODBC driver for Sesame(versions 2.5.3 and earlier) does include some .DLLs that are installed when the optional ODBC driver is installed.  &lt;/p&gt;
&lt;p&gt;Note: The Sesame API for Sesame does include some .DLLs that are installed when the optional Sesame API is installed.&lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/39</link><pubDate>Tue, 21 Apr 2015 20:00:04 GMT</pubDate><guid isPermaLink="false">209484225dbd7d508a603aa36f9a2cfe</guid></item><item><title>Can I use my Sesame database from within Microsoft Office programs (Word, Excel, Access, etc...)</title><description>&lt;p&gt;Yes you can. You will want to use the Sesame API or ODBC(Sesame version 2.5.3 or earlier) to accomplish this. &lt;/p&gt;</description><link>https://www.lantica.com/support/kb/article/48</link><pubDate>Tue, 21 Apr 2015 19:41:45 GMT</pubDate><guid isPermaLink="false">97ec89b03b0ebfc48514008aa0e993da</guid></item><item><title> Is Sesame version 1 compatible with Windows 8?</title><description>&lt;p&gt;While it may compatible, it is not recommended. Version 1 is no longer supported by Lantica Technical Support, there have been countless improvements, fixes, and additions made to Sesame since its first release. Upgrading is simple, contact Sales &amp;amp; Customer Service&lt;/p&gt;</description><link>https://www.lantica.com/support/kb/article/262</link><pubDate>Tue, 25 Mar 2014 13:38:13 GMT</pubDate><guid isPermaLink="false">369651500aa0f4194d0ea94dddd063b4</guid></item><item><title>Change the state of a Checkbox from tri-state, to bi-state</title><description>
&lt;p&gt;Checkbox Layout Elements (LEs), by default, are tri-state: Yes (click to check), No (click to uncheck), and Unknown/Undecided (click to raise box). The following code example makes your checkbox bi-state (Yes/No), with "Active" being the name of your LE:&lt;/p&gt;

&lt;pre&gt;
If @IsBlank(Active) Then
{
	Active = 1
}
&lt;/pre&gt;
</description><link>https://www.lantica.com/support/kb/article/261</link><pubDate>Wed, 25 Apr 2012 15:51:47 GMT</pubDate><guid isPermaLink="false">ebcb502dc058dc173fe519931931c599</guid></item><item><title>Summarize all of the Layout Elements and their properties in an application</title><description>
&lt;p&gt;From the design menu in Sesame Designer, choose "Document Application" under the "Application" folder. Enter or select a filename and click Accept. This will produce an HTML file summarizing all of the elements of your design and their properties. This is a quick way to produce an overall view and is useful when writing X-Commands, for example, as a means to reference the elements in your application.&lt;/p&gt;

&lt;p&gt;The resulting summary is organized into sections. Each section contains information about a different portion of your application.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Application Values - shows application settings such as Name, Unique Number, Image Path and Application Filename&lt;/li&gt;
&lt;li&gt;Start Up Programming &amp;amp; Form - Shows startup form. Indicates whether this application has programming in On Application Open event&lt;/li&gt;
&lt;li&gt;Global Values - Lists Global Values and their current values&lt;/li&gt;
&lt;li&gt;Groups - Lists Security Groups, User IDs in the groups, and if they have passwords&lt;/li&gt;
&lt;li&gt;Databases - Lists databases in your application. Each database shows a list of fields in that database and includes its properties, such as name and data type&lt;/li&gt;
&lt;li&gt;Forms Summary - Lists Forms in your application. Each Form shows its name and database to which it's bound.&lt;/li&gt;
&lt;li&gt;Reports Summary - Lists Reports in your application. Each Report shows its name and database to which it's bound.&lt;/li&gt;
&lt;li&gt;Forms Detail - Detailed documentation for each Report including sections, section properties, elements, element properties, programmed events, attached specs, and security settings.&lt;/li&gt;
&lt;li&gt;Reports Detail - Detailed documentation for each Report including sections, section properties, elements, element properties, programmed events, attached specs, and security settings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of the settings for the summary page's look-and-feel use CSS (cascading style sheets), therefore you can easily change things such as font and color by creating a CSS file and placing it in your current working directory. (See &lt;a href="http://www.lantica.com/support/kb/article/000195" target="_blank" rel="noreferrer noopener"&gt;Create a CSS file to change the look-and-feel of  "Document Application" summary&lt;/a&gt; elsewhere in this section of the Knowledge Base)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Also, see &lt;i&gt;@StringArrayElementList&lt;/i&gt; in the Sesame Programming Guide - this function returns a list of all the elements on your Form. If you need to loop through all of your elements for reasons such as printing your values, or setting all the form elements to be read only, this function gives you everything you need.&lt;/p&gt;
Example:
&lt;pre&gt;
Var vMyStringArray as String
	// vMyStringArray will equal a semicolon separated list
	// of Element names. Ex: "Last;First;Company;Address"
	vMyStringArray = @StringArrayElementList()
&lt;/pre&gt;
</description><link>https://www.lantica.com/support/kb/article/194</link><pubDate>Wed, 18 Apr 2012 16:36:49 GMT</pubDate><guid isPermaLink="false">86b2dda4071b3c074691b7eed3700746</guid></item><item><title>The Anatomy of a Sesame Application: Terminology</title><description>
&lt;p&gt;A Sesame &lt;b&gt;application&lt;/b&gt; consists of one or more &lt;b&gt;databases&lt;/b&gt; that are in some way related - such as a Customer database, an Orders database, and an Inventory database. A database consists of all the records, and all the forms (as well as optional sub-forms) and reports that show these records. For example, an Orders database might consist of all the order records, the order form and the Orders By Month report.&lt;/p&gt;

&lt;p&gt;A &lt;b&gt;layout&lt;/b&gt; is a form or report. Since Sesame is form-based, you will create your databases by building and editing layouts (or forms). It defines how you will look at and use the parts of your information.&lt;/p&gt;

&lt;p&gt;A &lt;b&gt;layout element&lt;/b&gt; is anything you put on a layout or form. Sometimes referred to as an LE, they can be purely cosmetic (such as a line or box), display data from your database records, display the result of a calculation, or let you change information simply by clicking or making a selection from a pick-list. Layout elements are bound to the fields whose information they display.&lt;/p&gt;

&lt;p&gt;A &lt;b&gt;field&lt;/b&gt; is a component of a database and is where Sesame actually stores your data, such as a telephone number. A field is &lt;i&gt;not&lt;/i&gt; unique to a specific form. The same field can be displayed on different forms.&lt;/p&gt;

&lt;p&gt;A &lt;b&gt;record&lt;/b&gt; is a logical collection of fields. A record is displayed in a form. A form displays one record at a time.&lt;/p&gt;


&lt;p&gt;For example, an Orders &lt;b&gt;record&lt;/b&gt; may have &lt;b&gt;fields&lt;/b&gt; for OrderDate, CustomerName, and ShipToAddress. It is rare in Sesame that you will work with an actual field. Normally, you will work with layout elements. A layout element that displays the value (content) of a field is said to be &lt;b&gt;bound&lt;/b&gt; to that field. The only time that you will need to deal with an actual field is if you change its data type or its name.&lt;/p&gt;

&lt;p&gt;For more information on the anatomy of a Sesame application, see &lt;i&gt;Appendix 4: Advanced Concepts&lt;/i&gt; as well as the "Terminology" section under the &lt;i&gt;Designing a Sesame Application&lt;/i&gt; chapter  in the Sesame User Guide.&lt;/p&gt;

&lt;b&gt;Summary:&lt;b&gt;&lt;br&gt;
An application, which consists of two files &#xC3;&#xA2;&#xE2;&#x201A;&#xAC;&#xE2;&#x20AC; application.db and application.dat &#xC3;&#xA2;&#xE2;&#x201A;&#xAC;&#xE2;&#x20AC; is comprised of one or more databases each with one or more forms and optional subforms. Forms and subforms are both comprised of layout elements. Most of those layout elements will be bound to fields.
&lt;/b&gt;&lt;/b&gt;&lt;b&gt;&lt;b&gt;
Data is stored in fields.
Fields are displayed on forms using layout elements, which can be thought of as placeholders for those fields.
A layout element is unique to a specific form, and a form is defined by its elements.
A field is not unique to a specific form. The same field can be displayed on different forms.
Layout elements are bound to the fields whose information they display.

&lt;/b&gt;&lt;/b&gt;
</description><link>https://www.lantica.com/support/kb/article/232</link><pubDate>Tue, 10 Apr 2012 16:34:35 GMT</pubDate><guid isPermaLink="false">87a37c252d57bd45b427f0121a6c1add</guid></item><item><title>Creating Subforms in Your Application</title><description>
&lt;p&gt;Subforms are a way to view Records from a second database while in the Form of a master database - so that you can see Records from both databases at the same time. Therefore, you will need at least two databases in an application before you can create subforms, each based on a different database in the same application. (If you are unclear about the differences between a Sesame "database" and an "application", see &lt;a href="http://lantica.com/support/kb/article/000232"&gt;&lt;b&gt;The Anatomy of a Sesame Application: Terminology&lt;/b&gt;&lt;/a&gt;, elsewhere in this Knowledgebase, or consult your &lt;i&gt;Sesame User Guide&lt;/i&gt;.)&lt;/p&gt;

&lt;p&gt;You don't need to create relationships between databases before using your Subform. Sesame creates these relationships for you when you add a Subform to a Main Form.&lt;/p&gt;

&lt;p&gt;Because Subforms are dynamic, you can edit data, delete records and add records in a Subform.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Step one&lt;/b&gt; is to create a new database for the subform. (If you are not familiar with creating new databases/forms, or just need to brush up, see "Designing a Sesame Application" in the &lt;i&gt;Sesame User Guide&lt;/i&gt;.)&lt;/p&gt;

&lt;p&gt;To add a new Form, select &lt;i&gt;Forms -&amp;gt; Add New Database&lt;/i&gt;. Enter the name for this new database and form (though the name of your form and the name of your database &lt;i&gt;can&lt;/i&gt; be the same, it is not necessary). This opens up a new, blank Form. Use the &lt;em&gt;Layout Element Adder&lt;/em&gt; to add the desired Layout Elements (or LE's). When you are finished, save your work. You now have both a new database and a new form. Close the design tab.&lt;/p&gt;

&lt;p&gt;At this point, your menu tree should show the new database that you have just created and its new form at the same level as the original, existing database. It should be directly beneath the orignial and not indented. This shows that the two databases are independent.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Step two&lt;/b&gt; is to add the form you have just created to the original, existing form in your application as a Subform.&lt;/p&gt;

&lt;p&gt;Open the main form or Parent Record (the original, existing form) in Designer. Click on the form where you want to place your subform. In the &lt;i&gt;Layout Element Adder&lt;/i&gt;, select element type: &lt;b&gt;Subform&lt;/b&gt;. The &lt;i&gt;Bind Element To&lt;/i&gt; must remain Unbound. If you wish to label your subform, do so now with the text of your choice - this will appear above the subform by default, though you can move it if you wish. Click on the &lt;i&gt;Add Element to Form&lt;/i&gt; button.&lt;/p&gt;

&lt;p&gt;Sesame should now be displaying the &lt;i&gt;Subform Settings&lt;/i&gt; dialog window. This consists of 5 sections, which control the way the subform and underlying linking mechanisms are established:&lt;br&gt;
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Select a Form - This dropdown menu lists all the eligible forms in your database. Select the form you wish to use as the subform.&lt;/li&gt;
	&lt;li&gt;Select Subrecord Type - This menu lists the available link types. Here, you will tell Sesame how to decide which records in the database are conidered &lt;i&gt;children&lt;/i&gt; of the parent record. The two choices are &lt;i&gt;Automatic (Natural Links)&lt;/i&gt; or &lt;i&gt;Matching Field Values (Relational Links)&lt;/i&gt;. For more on this, see the Sesame User Guide or the Knowledgebase article listed below.)&lt;/li&gt;
	&lt;li&gt;Select Records to Display - For both Natural and Relational Links you will see three sets of choices.&lt;br&gt;
    &lt;ol&gt;
		&lt;li&gt;
&lt;i&gt;Make Natural Child Record:&lt;/i&gt; This is the most common choice. Records in the subform are automatically linked to corresponding records in the main/parent form. The correct child records will appear in the subform based on your settings. (If &lt;i&gt;Relational Links&lt;/i&gt; is selected, this option changes to &lt;i&gt;Show Related Child Records&lt;/i&gt;, but the same logic applies.) Child records can also be accessed by opening the subform by itself. In this case all the records are shown mixed together.&lt;/li&gt;
		&lt;li&gt;
&lt;i&gt;Show Existing Natural Child Records:&lt;/i&gt; If the main/parent database already has a subrecord database(s) with appropriate linking, they'll be listed in a dropdown menu here. If one of these is selected, Sesame will use a pre-existing relationship, as would occur if another subform had already been created (in other words, the same records from the database will be shown as in the subform that initially created the existing field definition).&lt;/li&gt;
		&lt;li&gt;
&lt;i&gt;Create a New Database with Shared Template:&lt;/i&gt; If this choice is selected it clones the selected form and database, but without any data. This is useful when you need to add a form as a subform, which does not already exist. The records added using this subform won't mix with records added using other subforms, even though the subforms look identical. &lt;i&gt;"Shared Template"&lt;/i&gt; means that all databases/forms that share a template will be kept in synch. So, if you add an LE to one form, all forms will have that element.&lt;/li&gt;
    &lt;/ol&gt;
	&lt;/li&gt;
&lt;li&gt;Set Subform Properties - You must assign a &lt;i&gt;Field Name&lt;/i&gt; to the subform, and, if applicable, pick the matching fields for a Relational Link.&lt;/li&gt;
	&lt;li&gt;Select a View - Here, you will select whether you want to display the records in the subform in &lt;i&gt;Table&lt;/i&gt; or &lt;i&gt;Form&lt;/i&gt; view. (Form view shows LE's arranged on the form just as it was designed, while Table View shows records in a spreadsheet-like view with rows and columns - this is the most common choice for a subform as you can view multiple records at one time in this view).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Click &lt;i&gt;OK&lt;/i&gt; and your subform is now added to the form. You can now resize or reposition the subform on the main form to your liking. Make sure to Save the layout once you've got everything looking the way you want it to look! Reconcile or save your design. (See the Knowledgebase articles: &lt;a href="http://www.lantica.com/support/kb/article/000077" target="_blank" rel="noreferrer noopener"&gt;&lt;b&gt;Reconciling an Application&lt;/b&gt;&lt;/a&gt; and &lt;a href="http://www.lantica.com/support/kb/article/000208" target="_blank" rel="noreferrer noopener"&gt;&lt;b&gt;Reconcile Application Options&lt;/b&gt;&lt;/a&gt; for more info on the Reconcile process.)&lt;/p&gt; 

&lt;p&gt;Looking back at the menu tree, you will see that the newest database is now indented under the original,existing database, rather than being directly underneath it.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;strong&gt;See also:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the &lt;i&gt;Sesame User Guide&lt;/i&gt;:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt; Section 3-Designing a Sesame Application, Section 5-Creating Subforms, Section 7-Navigating Forms, 13-Working with Subforms.&lt;/li&gt; 
&lt;/ul&gt;
&lt;p&gt;From the Sesame &lt;i&gt;Quick-Start Tutorial:&lt;/i&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Building an Application with Subforms (If you do not have these manuals, go to Lantica.com to download them -- See this Knowledgebase article &lt;a href="http://www.lantica.com/support/kb/article/000252" target="_blank" rel="noreferrer noopener"&gt;&lt;b&gt;Download Sesame Documentation (Guides, Manuals, etc.)&lt;/b&gt;&lt;/a&gt; for instructions on how to do so.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other Knowledgebase Articles:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.lantica.com/support/kb/article/000097" target="_blank" rel="noreferrer noopener"&gt;Should I choose Natural or Relational Subforms?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.lantica.com/support/kb/article/000177" target="_blank" rel="noreferrer noopener"&gt;Change the background color of an individual cell in a form/subform&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://lantica.com/support/kb/article/000174"&gt;Can I choose which Layout Elements are displayed on a subform?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://lantica.com/support/kb/article/000158"&gt;Renaming a Subform in Sesame Designer&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.lantica.com/support/kb/article/000256" target="_blank" rel="noreferrer noopener"&gt;Accurately Adjust the Width of a Table-View Subform&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://lantica.com/support/kb/article/000094"&gt;Sum Up Subform Values&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://lantica.com/support/kb/article/000230"&gt;Post a Value From a Parent Form to a Subform&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://lantica.com/support/kb/article/000118"&gt;Universal and Simple Searches in Subforms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description><link>https://www.lantica.com/support/kb/article/260</link><pubDate>Tue, 10 Apr 2012 16:29:44 GMT</pubDate><guid isPermaLink="false">186fe57fb079ba50a96c0643e39887b3</guid></item><item><title>Creating and Using a Lookup Table</title><description>
&lt;p&gt;A fast and easy way to store and retrieve frequently used information during a data entry session.&lt;/p&gt;

&lt;p&gt;A Lookup Table is a table of values stored in memory as an array. It's like having a small database within your database. It can contain information that's frequently needed during a data entry session, such as a state sales tax rates, shipping zones, discounts rates for different order levels, or state or province abbreviations.&lt;/p&gt;

&lt;p&gt;The example below shows one method. In this example, a few state names are stored in the table along with their abbreviations and (imaginary) tax rates.&lt;/p&gt;

&lt;p&gt;Create your Lookup Table array in the &lt;i&gt;Global Code&lt;/i&gt; section of the form as a stat (static) variable. This way, it is available to your form element programs during the entire data entry session:&lt;br&gt;

&lt;/p&gt;
&lt;pre&gt;
/*
Declaring a "Lookup Table" array with 50
rows and 3 columns. The array can store 
50 x 3 or 150 values, populated below. The
table/array goes into the form's Global Code,
while the programs that access it are connected
to form elements and their events.
*/

stat LU1 as array{50, 3] of String

LU1[1, 1] = "AL"; LU1[1, 2] = "Alabama"; LU1{1, 3] = "5.67"
LU1[2, 1] = "AK"; LU1[2, 2] = "Alaska"; LU1[2, 3] = "0.00"
LU1[3, 1] = "AR"; LU1[3, 2] = "Arkansas"; LU1[3, 3] = "6.25"
LU1[4, 1] = "AZ"; LU1[4, 2] = "Arizona"; LU1[4, 3] = "6.50"
// and so forth for the rest of the states
&lt;/pre&gt;

&lt;p&gt;With this array available to the form's elements, you can use programming to retrieve the information you need.&lt;/p&gt;

&lt;p&gt;The following &lt;i&gt;On Element Change&lt;/i&gt; program for the State Abbrev element looks for a match on the state abbreviation. If it finds it in the table, it fills the State Name and Tax Rate. The loop is stopped as soon as a match is found. If no match is found by the time the loop expires, the user is notified, the lookup elements are cleared, and the cursor is returned to State Abbrev:&lt;br&gt;
&lt;/p&gt;
&lt;pre&gt;
Var i as Int
Var foundit as Int
/*
The "Lookup Table" array was created and populated in Global Code. Now run a loop routine in the array until it finds first match on the State Abbrev field and returns the corresponding values to the other fields.
*/

If State Abbrev  "" Then
{
	Foundit = 0
	State Abbrev = ToUpper(State Abbrev)
	i = 1
	While (i 

&lt;/pre&gt;&lt;p&gt;Another way to populate (fill) a Lookup Table is to have your programming read in a delimited external text file, parse the values in it, and distribute those values to the array. This way, when you want to update the information in the table, you simply edit the text file - you don't have to update your programming unless the number of columns and/or rows exceeds the array declaration. See the &lt;a href="http://www.lantica.com/support/kb/article/000248" target="_blank" rel="noreferrer noopener"&gt;&lt;b&gt;Parsing a Delimited File&lt;/b&gt;&lt;/a&gt; and &lt;a href="http://www.lantica.com/support/kb/article/000250" target="_blank" rel="noreferrer noopener"&gt;&lt;b&gt;Importing Records with Programming Only&lt;/b&gt;&lt;/a&gt; examples elsewhere in the Knowledge Base or in Appendix 2 of the Sesame Programming Guide.&lt;/p&gt;

&lt;p&gt;This, and other programming examples, can be found in Appendix 2 of the &lt;i&gt;Sesame Programming Guide.&lt;/i&gt;&lt;/p&gt;

</description><link>https://www.lantica.com/support/kb/article/249</link><pubDate>Tue, 03 Apr 2012 14:49:19 GMT</pubDate><guid isPermaLink="false">6c9afcf27883687fd1a237f0f354f4fc</guid></item><item><title>Importing Records Using Programming Only</title><description>
&lt;p&gt;Automatically add new records to a database by importing them on-the-fly from a delimited ASCII file.&lt;/p&gt;

&lt;p&gt;The following program uses Sesame's &lt;i&gt;CreateNewRecord()&lt;/i&gt; command to automatically add new records to a database. It reads a delimited (ASCII) file and parses and distributes its data to the elements in the new records. It can be launched from a command button on the form as an "On Element Entry" program. This program accommodates any delimiter you choose to specify, as well as a "value" qualifier such as double quote marks. The only requirements are a consistent delimiter and a carriage return separating each record in the text file. See the comments within the program for more details.&lt;/p&gt;

&lt;blockquote&gt;
&lt;strong&gt;Note:&lt;/strong&gt; When using a program like this, be careful to ensure that your programming parameters match the delimited text file you are importing. Otherwise, you could wind up with "garbage" records in the database. Test programs such as this on a copy of the database before being used in the actual database.&lt;/blockquote&gt;

&lt;p&gt;It is recommended that you use Sesame's import/export facilities for the routine importing of delimited text files into a database.  (See the section on importing data in the Sesame User Guide and the &lt;a href="http://www.lantica.com/support/kb/article/000246" target="_blank" rel="noreferrer noopener"&gt;&lt;b&gt;Export/Import programming to/from a file&lt;/b&gt;&lt;/a&gt; article elsewhere in the Knowledge Base for more information.). The program below showcases Sesame's ability to process delimited text files and create new records from them with programming alone, as well as its uses for loops and arrays.&lt;/p&gt;

&lt;p&gt;
/* &lt;br&gt;
Sample delimited text file parser program. Parses a delimited text file and creates new database records from it. Expects text file named C:\Sesame2\addresses.txt. Change to suit. Maximum 30 values per record (change to suit) in format such as:&lt;/p&gt;

&lt;p&gt;"Tim Jones", "123 Main St", "Irvine", "CA", "92566"&lt;br&gt;
 &lt;/p&gt;
&lt;blockquote&gt; -or-&lt;/blockquote&gt;
Tim Jones;123 Main St;Irvine,CA;92566&lt;br&gt;
&lt;br&gt;
This program expects Name, Address, City, State, and Zip fields. Change to suit.&lt;br&gt;
&lt;br&gt;
A consistent field delimiter is required along with 1 record per line in the text file.&lt;br&gt;
*/

&lt;pre&gt;
var t as array[30] of string  //  Change to suit
var vFileHandle as Int
var vLine as String
var counter as Int
var nn as Int

Subroutine parseline()
var i as Int = 1
var vq as String = @Chr(34)  //  value qualifier (")
var fd as String = ", "    //  field delimiter

	// Initialize the Array values for each new record line
	For i = 1 to DimLimit(1, t)
		T[i] = ""
	Next
	// Reset Array Count
	i=1
&lt;/pre&gt;

&lt;p&gt;
/* &lt;br&gt;
If text file does not contain a 'value qualifier' (vq) char such as quote (") then do not specify a value for vq in the above declare.&lt;br&gt;
*/&lt;/p&gt;

&lt;pre&gt;
If vq  "" Then
{
	If @Left(vLine, 1) - vq Then
	{
		vLine = @Replfir(vLine, vq, "")
      }
	If @Right(vLine, 1) = vq Then
	{
		vLine = @Repllas(vLine, vq, "")
	}
}
&lt;/pre&gt;

&lt;p&gt;/*&lt;br&gt;
Use a delimiter unlikely to be part of any value in case actual delimiter is a comma or other character that could be part of value.&lt;br&gt;
*/&lt;/p&gt;

&lt;pre&gt;
vLine = @Replace(vLine, vq + fd + vq, "|")

While @Len(vLine) &amp;gt; 0
{
	T[i] = Split(vLine, "|")
	i = i + 1
}

End Subroutine

//####### MAIN PROGRAM #######

If @AskUser("Import C:\Sesame2\addresses.txt file", "and create new database records?", "") Then
{
	If not FileExists("C\Sesame2\addresses.txt") Then
	{
		@MsgBox("Sorry.", "Couldn't find Addresses.txt file.", "")
	}
	Else
	{
		vFileHandle = fileopen("C:\Sesame2\adresses.txt")
		If vFileHandle &amp;gt;= 0
		{
			FileSeek(vFileHandle, 0)
			While FilePos(vFileHandle)  20 Then
				{
					Parseline()
					nn = @CreateNewRecord()
					Name = t[1]
					Address = t[2]
					City = [3]
					State = t[4]
					Zip = [5]
					Counter = counter + 1
				}
			}
			FileClose(vFileHandle)
			@MsgBox("Imported " + counter + " records.", "", "")
		}
	}
}
Else
{
	@MsgBox("Import operation abandoned.", "", "")
}	
&lt;/pre&gt;

&lt;p&gt;This, and other programming examples, can be found in Appendix 2 of the &lt;i&gt;Sesame Programming Guide&lt;/i&gt;&lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/250</link><pubDate>Tue, 03 Apr 2012 14:48:23 GMT</pubDate><guid isPermaLink="false">b35d180376b2d9b680474d91a7d2c1a9</guid></item><item><title>Parsing a Delimited File</title><description>
&lt;p&gt;The following sample program can be used as a template for programs to parse delimited files, as well as for programs that create a database Lookup Table from the values in a delimited text file. (See the Sesame Programming Guide, or the &lt;a href="http://www.lantica.com/support/kb/article/000249" target="_blank" rel="noreferrer noopener"&gt;&lt;b&gt;Creating and Using a Lookup Table&lt;/b&gt;&lt;/a&gt; article elsewhere in the Knowledge Base.)&lt;/p&gt;

&lt;p&gt;The example below opens a semicolon delimited file (myfile.txt), reads through it, and parses and distributes its values.&lt;/p&gt;

For this example, myfile.txt contains the following data:&lt;br&gt;

&lt;pre&gt;
	Tom;Bill;Jim;Edna
	Janice;Alec;Mark;Cliff
	Fred;Greg;Linda;Joanne;
&lt;/pre&gt;

&lt;p&gt;The main program opens myfile.txt and sets the file position (FileSeek) to 0. A &lt;i&gt;While&lt;/i&gt; loop is then started, its condition being that the file position (FilePos) is less than the length of the file (FileSize).&lt;/p&gt;

&lt;p&gt;With each loop, the FileReadLn command reads the next line in the file, then the &lt;i&gt;parseline&lt;/i&gt; subroutine is called.&lt;/p&gt;

&lt;p&gt;Parseline prints the current line to the WriteLn window, then a &lt;i&gt;For-Next&lt;/i&gt; loop parses the values in the line, distributing them into the six-element array named "t". Each parsed value is then individually written to the WriteLn() window. When finished, the WriteLn window displays the following:&lt;br&gt;

&lt;/p&gt;
&lt;pre&gt;
	Tom;Bill;Jim;Edna
	Tom
	Bill
	Jim
	Edna
	Janice;Alec;Mark;Cliff
	Janice
	Alec
	Mark
	Cliff
	Fred;Greg;Linda;Joanne
	Fred
	Greg
	Linda
	Joanne	
&lt;/pre&gt;

&lt;p&gt;See &lt;a href="http://www.lantica.com/support/kb/article/000250" target="_blank" rel="noreferrer noopener"&gt;&lt;b&gt;Importing Records with Programming Only&lt;/b&gt;&lt;/a&gt;  (elsewhere in the Knowledge Base, or Appendix 2 of the Sesame Programming Guide) for a program that processes a delimited file and creates new records from it for the database.&lt;/p&gt;

&lt;pre&gt;
/*
Delimited text file parser sample program.
Parses a semicolon-delimited text file named myfile.txt.
Each line in the file expected to contain six values,
in a format similar to any of these:

Jim;Tom;Edna;Jane
Jim,Tom,Edna,Jane
Jim Tom Edna Jane
Jim|Tom|Edna|Jane

Set vDelim variable below to appropriate delimiter
*/

Subroutine parseline()
var I as Int =1
	
	WriteLn(vLine)
	While @Len(vLine) &amp;gt; 0
	{
		t[i] = Split(vLine, vDelim)
		WriteLn(t[i])
		i = i + 1
	}
End Subroutine

	vFileHandle = FileOpen("C:\Sesame\myfile.txt")
	If vFileHandle &amp;gt;= 0
	{
		FileSeek(vFileHandle, 0)
		While FilePos(vFileHandle)  "" Then
		{
			Parseline()
		}
	}
	FileClose(vFileHandle)
}
Else
{
	WriteLn("Open failed: " + @Str(vFileHandle))
}
&lt;/pre&gt;

&lt;p&gt;This, and other programming examples, can be found in Appendix 2 of the &lt;i&gt;Sesame Programming Guide&lt;/i&gt;&lt;/p&gt;









</description><link>https://www.lantica.com/support/kb/article/248</link><pubDate>Tue, 03 Apr 2012 14:46:44 GMT</pubDate><guid isPermaLink="false">375c9775f467c3ee90f92f56a8f2eb12</guid></item><item><title>Creating a Follow-Up Scheduler</title><description>
&lt;p&gt;&lt;big&gt;&lt;strong&gt;Uses:&lt;/strong&gt;&lt;/big&gt;&lt;/p&gt;
&lt;ul&gt; 
   &lt;li&gt; Program a form to display a follow-up menu on demand (making the need to manually type in a follow-up date unnecessary).&lt;/li&gt;
   &lt;li&gt; Learn how to do "arithmetic" with data values.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This sample program displays a pop-up selection list with the following callback intervals (change to suit):&lt;/p&gt;

&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;code&gt;
Today, Tomorrow, Next Weekday, 5 days, 10 days, 15 days, 20 days, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, User-entered date
&lt;/code&gt;&lt;/blockquote&gt;&lt;code&gt;&lt;/code&gt;

&lt;p&gt;Because the @PopupMenu() function displays the list in alphabetical order, the days of the week selections follow a  &lt;i&gt;A-Monday, B-Tuesday...&lt;/i&gt; format, to keep them together and in proper sequence.&lt;/p&gt;

&lt;p&gt;When you make a selection (other than &lt;i&gt;User-entered date&lt;/i&gt;), Sesame automatically fills the CallbackDate field with the date that corresponds to it, then moves you to the next element on the form.&lt;/p&gt;

&lt;p&gt;The program can be attached to a Command Button's &lt;i&gt;On Element Entry&lt;/i&gt; event.&lt;/p&gt;

&lt;pre&gt;
var CallbackTemp as string

CallbackTemp = @PopupMenu("User-entered date;Today;Tomorrow;Next Weekday;5 Days;10 Days;14 Days;20 Days;A-Monday;B-Tuesday;C-Wednesday;D-Thursday;E-Friday;F-Saturday;G-Sunday", "SELECT A CALL BACK DATE");

If @Instr(CallbackTemp, "-") = 3 Then
{
	CallbackTemp = @Del(CallbackTemp, 1, 4);
	If @Dow$(@Date + 1) = CallbackTemp Then CallbackDate = @Date + 1
	Else if @Dow$(@Date + 2) = CallbackTemp Then CallbackDate = @Date + 2
	Else if @Dow$(@Date + 3) = CallbackTemp Then CallbackDate = @Date + 3
	Else if @Dow$(@Date + 4) = CallbackTemp Then CallbackDate = @Date + 4
	Else if @Dow$(@Date + 5) = CallbackTemp Then CallbackDate = @Date + 5
	Else if @Dow$(@Date + 6) = CallbackTemp Then CallbackDate = @Date + 6
	Else if @Dow$(@Date + 7) = CallbackTemp Then CallbackDate = @Date + 7
	CNext
}

If CallbackTemp = "User-entered date" Then
{
	@Msg("Type in the Callback Date and press Enter")
	Clear(CallbackDate)
	Goto CallbackDate
}

If CallbackTemp = "Today" Then
{
	CallbackDate = @Date
	CNext
}

If CallbackTemp = "Tomorrow" Then
{
	CallbackDate = @Date + 1;
	CNext
}

If CallbackTemp = "Next Weekday" Then
{
	If @Dow$(@Date) = "Friday" Then CallbackDate = @Date + 3
	Else If @Dow$(@Date) = "Saturday" Then CallbackDate = @Date + 2
	Else CallbackDate = @Date + 1
	CNext
}

If CallbackTemp = "" Then
{
	ThrowFocus(CallbackDate)
}
Else
{
	CallbackDate = @Date + Tn(@Num(CallbackTemp))
}
&lt;/pre&gt;

&lt;p&gt;&lt;i&gt;&lt;b&gt;By placing the following optional program in the "On Element Change" event for CallbackDate, you'll be alerted if you accidently enter a date that's in the past, or too far in the future:&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;

&lt;pre&gt;
If CallbackDate &amp;gt; @Date + 30 Then
{
        If @AskUser("Follow-up date is more than 30 days away!", "Do you really want to leave it that way?", "") Then
	{
		CNext
	}
}
Else
{
	ThrowFocus(CallbackDate)
}

If CallbackDate  "" Then
{
	If CallbackDate 

&lt;/pre&gt;&lt;p&gt;This, and other programming examples, can be found in "Appendix 2: Advanced Programming Examples" in the &lt;i&gt;Sesame Programming Guide&lt;/i&gt;&lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/255</link><pubDate>Tue, 03 Apr 2012 14:45:14 GMT</pubDate><guid isPermaLink="false">76afb7ed8078c34f8be198aa0687a545</guid></item><item><title>Setting Up The Sesame ODBC (Open Database Connectivity) drive on Windows 7 (64-bit)</title><description>
&lt;p&gt;&lt;b&gt;&lt;i&gt;"How can I set up the Sesame ODBC  drive on Windows 7, 64-bits? I am using a 32 bit program Crystal Report that I want to connect to Sesame with ODBC driver."&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Be very careful in following these steps:&lt;/p&gt;

&lt;ol&gt;
        &lt;li&gt;Copy sesodbc.dll from the Setup32 directory to C:\Windows\SysWOW64&lt;/li&gt;
	&lt;li&gt;Open the Windows Registry Editor&lt;/li&gt;
	&lt;li&gt;Make a backup of every key before you change it just in case&lt;/li&gt;
	&lt;li&gt;Browse to HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers&lt;/li&gt;
	&lt;li&gt;Right click on ODBC Drivers and choose New-&amp;gt;String Value&lt;/li&gt;
	&lt;li&gt;Name the new string value "Sesame ODBC Driver", without the quotes.&lt;/li&gt;
	&lt;li&gt;Set the value data of that new string value to "Installed", without the quotes.&lt;/li&gt;
	&lt;li&gt;Browse to HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI&lt;/li&gt;
	&lt;li&gt;Right click on ODBCINST.INI and choose New-&amp;gt;Key&lt;/li&gt;
	&lt;li&gt;Name the new key "Sesame ODBC Driver", without the quotes.&lt;/li&gt;
	&lt;li&gt;Right Click on Sesame ODBC Driver and choose New-&amp;gt;String Value&lt;/li&gt;
	&lt;li&gt;Name the new string value "Driver", without the quotes.&lt;/li&gt;
	&lt;li&gt;Set the value data of Driver to "C:\Windows\SysWOW64\sesodbc.dll", without the quotes.&lt;/li&gt;
	&lt;li&gt;Right Click on Sesame ODBC Driver and choose New-&amp;gt;String Value&lt;/li&gt;
	&lt;li&gt;Name the new string value "Setup", without the quotes.&lt;/li&gt;
	&lt;li&gt;Set the value data of Driver to "C:\Windows\SysWOW64\sesodbc.dll", without the quotes.&lt;/li&gt;
	&lt;li&gt;Right Click on Sesame ODBC Driver and choose New-&amp;gt;String Value&lt;/li&gt;
	&lt;li&gt;Name the new string value "CPTimeout", without the quotes.&lt;/li&gt;
	&lt;li&gt;Set the value data of Driver to "", without the quotes.
&lt;/li&gt;
	&lt;li&gt;Close the windows Registry Editor&lt;/li&gt;
	&lt;li&gt;Open a command line and browse to C:\Windows\SysWOW64\&lt;/li&gt;
	&lt;li&gt;Type "odbcconf REGSVR C:\Windows\SysWOW64\sesodbc.dll"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At this point, you should see the Sesame under the Drivers tab when you execute C:\Windows\SysWOW64\odbcad32.exe&lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/257</link><pubDate>Tue, 03 Apr 2012 14:37:20 GMT</pubDate><guid isPermaLink="false">f554a0780e9cc2fe168708d10988eb28</guid></item><item><title>Accurately Adjust the Width of a Table-View Subform</title><description>
&lt;p&gt;A Table-View Subform shows subrecords arranged in a table or spreadsheet-like view. There are scroll-bars to view other parts of the subform if it cannot be seen. A good example of this is the &lt;i&gt;Cities&lt;/i&gt; subform within the &lt;i&gt;Countries&lt;/i&gt; sample database provided with Sesame.  &lt;/p&gt;

&lt;p&gt;To correctly adjust the width of the subform table follow this simple formula:&lt;br&gt;
&lt;code&gt;Table row header width + Combined widths of subform LEs + Vertical scrollbar width&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The &lt;b&gt;Table row header width&lt;/b&gt; can be set using the sesame.ini file (see &lt;i&gt;Appendix 7&lt;/i&gt; of the&lt;i&gt; Sesame User Guide&lt;/i&gt; for more information on all the possible .ini file entries):&lt;/p&gt;
&lt;p&gt;&lt;font face="verdana"&gt;
TABLE ROW HEADER WIDTH: Sets the width in pixels of the record number column appearing in Table View and Table View Subforms.&lt;br&gt;	
Example: TABLE ROW HEADER WIDTH: 50&lt;br&gt;
Default: 70
&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The &lt;b&gt;Combined widths of subform LEs&lt;/b&gt; (layout elements) can be found by opening the form in SDesigner. Using the Countries.db as an example, you would open this database, and then open the "Cities" subform. There are two LEs in this subform: "City" and "Population". Under the Look/Position tab in the Property Viewer window, you will find each of the element's widths. Adding these measurements together gives you the combined widths of the subform LEs (City=&lt;b&gt;140&lt;/b&gt; + Population=&lt;b&gt;80&lt;/b&gt; = &lt;b&gt;220&lt;/b&gt;).&lt;/p&gt;

&lt;p&gt;The &lt;b&gt;Verticle scrollbar width&lt;/b&gt; on a table subform is 19.&lt;/p&gt;

&lt;p&gt;Therefore, your formula, using the Countries.db as an example would be:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;70 + 220 + 19 = 309&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Thus, the &lt;i&gt;Cities&lt;i&gt; table-view subform will need to be at least 309 pixels long. (Almost every measurement in Sesame refers to the number of pixels, not including some widths in Reports and the PrintString command.)&lt;/i&gt;&lt;/i&gt;&lt;/p&gt;
</description><link>https://www.lantica.com/support/kb/article/256</link><pubDate>Tue, 03 Apr 2012 14:27:04 GMT</pubDate><guid isPermaLink="false">c20c50661150775d9a1fb0965911db5d</guid></item></channel></rss>
