Wednesday, October 26, 2011

SWFox Begins

SWFox_2011_BoothSWFox 2011 begins tonight with the keynote followed by a reception. This is my fifth year attending/exhibiting at this conference. As I mentioned in a previous post we will be doing two sessions on Extending Your FoxPro data to other applications.
One of the demos is a JQueryMobile website that displays the class information for SWFox. This data is stored in VFP9 dbf files and is also used by the Kokopelli scheduling application.

The demo was written using JQueryMobile and accessing the data via the Advantage Web Platform. The example will work in virtually every browser and will automatically resize for various devices such as smartphones and tablets. The data is all read-only, however, data can be modified using simple methods if desired.


You can view the demo here.

Wednesday, October 12, 2011

Southwest Fox 2011

We will once again be attending SWFox in Phoenix Arizona which starts on October 26th. I always look forward to this conference because of the great FoxPro community, it always feels like a gathering of friends. I am always impressed with the variety of training offered and the diversity of applications that are using FoxPro.

This year we will be focusing on Extending FoxPro applications. Advantage provides easy access to FoxPro data without any conversion and allows for concurrent access ensuring that current applications will continue to run without any code changes.

I will be presenting a session titled “Mobile Access to your VFP” on Thursday October 27th at 2PM. Here is the class description.

Need to extend your current VFP application to mobile devices or another technology? We will show you how without changing you current VFP application. See how to share your VFP data with your desktop application and mobile devices at the same time, along with getting other client/server benefits. In our session we will demonstrate concurrent data access with an iPad, iPhone, Android, and a mobile web application. Your current data can now be accessed by mobile workers without having to change the application currently used by the office workers. Your VFP application's life span can grow... we can show you how to do it.

If you are going to be attending SWFox this year please come to the session. Feel free to stop by our booth we will have an amazing giveaway as always. See you in Phoenix.

Monday, September 26, 2011

Advantage Technical Summit

We had another very successful technical summit in Boise last week. We focused on mobile development and our Advantage Web Api. The best feature of the Web Api is that it uses oData and JSON to transfer data which can be consumed by virtually any client. No specific Advantage client is required to send and receive data through the Web Api.

I taught classes on Mobile Web Development using JQueryMobile with oData. There is an excellent screencast done by Daniel Ryan which demonstrates our example Web Application. I also did a class on developing oData applications for iOS which includes iPods, iPhone and iPad devices. JD Mullin did a series of screencasts on using oData with iOS as well. Jed Thomet did a class on using oData from Android devices.

We also had our usual classes on using our other Advantage technologies and clients. We added a panel discussion session which gave attendees the opportunity to ask our development team general questions about Advantage and our development process.

The greatest benefit of our technical summits is the networking that goes on between Advantage users and our staff here. It is always great to hear about how you are using Advantage with your products. I hope we will see you at our next conference.

Monday, September 19, 2011

Delphi Live 2011

IMG_0764We had the opportunity to attend Delphi Live! in San Jose California again this year. We always get to see and talk to many Delphi users that are also Advantage customers.

This year we were able to talk more about our Advantage Web Platform which provides oData and JSON access to Advantage data through the Web. This allows access from virtually any device, such as iPhones, iPads, Android phones and tablets. We have an example mobile website where you can see this technology in action.

There were many sessions on the latest release of Delphi, Delphi XE 2 at the conference. This release includes 64-bit support and Fire Monkey which is a cross-platform development mechanism. We will be updating the Advantage Delphi Components to work with this release and to include support for 64-bit applications. We are still investigating Fire Monkey support.

Monday, March 28, 2011

Limiting Users for a Database

Advantage counts users based on the machine name that is connecting. This means that a single machine can have multiple connections to Advantage while only consuming a single license.  There are times when you may wish to limit the number of users to a particular database. For example you may be hosting data for multiple customers at your site or in the cloud. You may need a way to limit each customer to a specific number of concurrent users. If each customer has a specific database you can accomplish this by using the sp_mgGetTableUsers system procedure when your application starts up.

The sp_mgGetTableUsers procedure takes one parameter which is the full qualified path to the table. You can provide a path to a data dictionary instead of a table to get a list of all the users connected to the database. See the example below


As you can see this list returns all connections to the specified file. You will need to count the results based on the type of users you wish to track. If you are using a traditional client/server solution where each user has their own machine name ( as shown in the example ) you need to count the number of unique UserName values. If you are hosting the application on a terminal server then you will need to count the unique TSAddress values.

If you are using Advantage version 10 or newer you can use SQL to count the connections. The example below demonstrates different types of counts.


By running a script like the one above when your application starts you can get an accurate count of the total number of users connected to the specified database. You could then compare this to the number of licenses for that database. The number of licenses could be stored encrypted in the registry, in a license file or some other method.

There are a few limitations to this approach. This technique will not prevent third party applications since the check is done by your application and not by the server. This technique will also not work for a web based application since all users will be connecting through one or more web servers.

Monday, March 14, 2011

Advantage Training

The next Advantage Technical Summit has been scheduled for 18 – 20 May at the Bridgewater Mariott in New Jersey. The training will be co-located with the Sybase LPGA Match Play Championship which is held at the Hamilton Farm Golf Club. Attendees will get a wealth of information about Advantage and have an opportunity to attend the golf tournament as well.

You can get all the details here. The schedule overview is below and you can get details about all of the sessions using this link.

Wednesday, May 18th:
2pm – 5:00pm: Sessions
5:30pm – Hosted Dinner at Hamilton Golf Club with LPGA professionals

Thursday, May 19th:
8am – 2:30: Sessions
2:30 – 5:00: Sybase Match Play Championship Event
6:30 – Hosted Dinner and networking event

Friday, May 20th:
8am – Noon: Sessions
Noon – 1:30pm: Hosted Lunch at Hamilton Golf Club
1:30 – 5:00: Sybase Match Play Championship Event

I look forward to seeing you there.

Wednesday, March 2, 2011

Advantage in the Real World

Cary Jensen wrote an article about how he has been using Advantage with one of his customers. He focuses on several server-side features including replication, triggers and notifications. It provides some examples on how these features can be used to enhance an existing application. You can read the article here.

Monday, January 3, 2011

FAQs–December 2010

Programmatically Getting the Type of Server

Several of the connection components ( i.e. tAdsConnection, AdsConnect ) have properties for server type and server version. However, there are times when you may need to know what type ( i.e. Windows, Linux ) of server you are connected to.  The easiest way to get this information is to use sp_mgGetServerType as it returns text description as well as an enum value which represents the type of server. Beginning with version 9 two new enums were added; Windows NT 64-Bit (7) and Linux 64-bit (8). An example of the output is shown below.


You can also use the AdsMgGetServerType API call to retrieve the type of server you are connected to.

7209 Errors

The 7209 "SQL query aborted by user" error may become more common now that a SQL Timeout error has been added for all clients. This is typically seen if you give your users the ability to cancel a query through the use of a callback function. An SQL Timeout property has been a part of the OLE DB and .NET Data providers for some time. These properties are used automatically by the client to cancel a query. The default timeout is generally 30 seconds.

The default SQL Timeout property for version 10.x clients is 0, meaning no timeout. If you specify a value, in seconds, the query will be canceled if the timeout expires and you will receive a 7209 error.

Windows Installer Errors

WinInstaller_ErrorThe latest version of the Advantage .NET Data Provider requires version 4.5 of the Windows Installer. If you have an earlier version of Windows Installer you will get the error pictured. This error may occur on Windows XP machines. Windows Vista ships with version 4.0 and 4.5 is included in SP2. The latest Win7 and Windows Server 2008 R2 include version 5.0.

You can check the version of Windows Installer by typing "msiexec /?" in the run dialog or from a command prompt. You can get  version 4.5 of the Windows Installer from MSDN.

Which Clients work with Enhanced Encryption

With the 10.1 release of Advantage only the ACE API and Advantage Components for Delphi include support for enhanced encryption. Additional clients will be released as they are available. Announcements will be made as additional clients are updated for enhanced security.