Jun 21
richardNotebooks
For notebook snobs like myself, there is nothing like the Moleskine. Or is there? While I like the “Moley” and use it everyday, all day, I found myself looking at the other side of the aisle on a recent trip to Border’s.
It was the Sale aisle.
—————————————————————
Replenishing my small stock of Moleskines is one of my favorite tasks whenever a 33% off coupon from Border’s arrives in my Inbox. It reduces the astronomically priced 5×8 Moley from almost $18 down to a still-frightful $12. I saw the Piccadilly’s on the sale rack at $4.95 and figured why not give it a try. Actually, with my coupon, it was less than four clams, including the tax.
Price – Piccadilly wins. You could buy three and still have money for coffee before you got to what the Moleskine costs.
Elastic band – my first disappointment: the band seemed somewhat loose. The Moleskine’s elastic band still snaps tightly despite nearly 10 months of daily use. The Piccadilly’s band is good enough to keep the book closed, but don’t count on it securely holding a pen or pencil in place. Moleskine wins.
Binding – Pretty close on both. I would say that the Moleskine was probably a little more polished, the cover was just slightly crimped on the rounded corners of the Piccadilly.
The End-paper and pocket on the Moleskine are of a slightly heavier weight paper than the Picadilly. However, I was very impressed with the stitching on the spine on the Piccadilly. It actually seemed a little more durable than the Moleskine. I’m not a bookbinder or an expert in those things, but it did seem well-constructed. A tie.
Paper – nice feel, and sufficient weight on both. I was afraid that the much lower-priced Piccadilly would translate into a lighter-weight paper which would bleed ink like toilet paper, but the paper on both seemed to be identical. The grid that is printed on the Moleskine is lighter than the Piccadilly, so much so, that when I first opened the Piccadilly, the grid was immediately distracting.
Pencil and Ink Test – I typically use a 0.7mm mechanical pencil with an HB lead. It is my favorite writing instrument whether it is a PaperMate Mega Lead or an Ohto Super ProMecha. The darker grid on the Piccadilly made reading pencil lines a tiny bit more difficult than on the Moleskine. Gridlines and pencil lines seemed to melt together a little more. On the Moleskine, pencil lines stand out much more. When I switched to a Dixon Ticonderoga HB #2, I got slightly better results because the graphite seemed a little darker. I may have to lay some of the blame on the cheapo HB leads that come with the Mega Lead pencils.
For the ink test, I used a Uniball Signo 0.7mm gel pen, a Pilot EasyTouch Fine ball point pen, and a Pilot G-2 1.0mm pen. All three performed similarly on the Moleskine and Piccadilly. I particularly pressed the Uniball and the G-2 by filling in a grid square with ink and bolding some words on the page to see if I could get it to bleed. In both cases I had to lay down a lot of ink in order to get the pages to bleed. A tie on this one for pen users, a slight nod to the Moleskine for pencil users like me.
Verdict: I’m going to replace the standard pencil leads in my mechanical pencil with the HB or B Pentel leads I bought last year and see how that goes. The only thing that concerns me at this point is the Piccadilly’s relatively dark grid lines. If they took that down a notch, this would be a Moleskine killer. I say: try it.
TO SUM UP….
Composition book (Wal-Mart)
Price: $1 Binding: 4 Paper: 4 Pencil/Ink Test: 6
Piccadilly 5×8 grid (Border’s)
Price: $5 Binding: 5 Paper: 8 Pencil/Ink Test: 7
Moleskine 5×8 grid (Border’s)
Price: $17 Binding: 7 Paper: 8 Pencil/Ink Test: 8
May 19
richardUncategorized
Resetting the iPod by holding down the Menu and center buttons simultaneously did not resolve the issue. It appeared that a few of the songs were corrupted.
And to make matters worse when I plugged it into the iMac, iTunes started but reported that the iPod could not be synced and quit before I could get to the convenient Restore iPod button. Plugging it into another laptop did not work because it said that the laptop first needed a higher version of iTunes, but this was an old G3 iBook and I couldn’t install that version of iTunes. I appeared to be stuck.
This page really helped. I started at Step 8 and by the end of Step 11, I was happy.
Apr 22
richardSharePoint
ISSUE:
MOSS 2007 user wants to be able to view a SharePoint calendar in their Outlook 2003 client, but when the user clicks on the Actions menu, the Connect to Outlook option (see screenshot below) is missing.

IMPORTANT NOTE: The user’s PC has Office XP (Office 10) Standard or Professional installed with Outlook 2003 (part of Office 11)
CAUSE:
OWSSUPP.DLL from Office XP (Office 10) was registered, preventing the same DLL from Office 2003 (Office 11) from registering when Outlook 2003 was installed. User needs the version of this DLL that comes with Office 11 in order for the “Connect To Outlook” menu in SharePoint to work.
RESOLUTION:
1. Search local drives for OWSSUPP.DLL. A search should find owssupp.dll in C:\Program Files\Microsoft Office\Office10 but may also possibly find it in C:\Program Files\Microsoft Office\Office11*. NOTE: a copy of OWSSUPP.DLL may be located in c:\apps\ofcxpstd\FILES\PFILES\MSOFFICE\OFFICE10, you may safely ignore this dll
2. Open a command prompt and execute the following:
a. regsvr32 /u C:\Program Files\Microsoft Office\Office10\OWSSUPP.DLL
b. rename C:\Program Files\Microsoft Office\Office10\OWSSUPP.DLL to OWSSUPP.DLL.OLD
3. Open the Add or Remove Programs application in the Control Panel
4. Install SPSupport Services under Microsoft Office XP Professional Edition 2003
a. Select Change
b. Click “Add or Remove Features” , click Next.
c. In the next screen, note that only Outlook 2003 is selected, you will need to check the box below the listing of the Office applications that reads “Choose advanced customization of applications.” Click Next.
d. Expand the Office Tools node (last item in the tree)
e. Click on the icon for Windows SharePoint Services Support and select “Run All from My Computer”
f. Back in Add or Remove Programs select Change again for Repair Microsoft Office XP Professional Edition 2003
g. Select radio button to “Reinstall or Repair”, click Next
h. Check “Detect and Repair errors in my Office installation”, click Install
5. Test that the Connect To Outlook menu item now shows up in SharePoint calendars
*If OWSSUPP.DLL is found in BOTH the Office10 and Office 11 folders, it means that Windows SharePoint Services Support was probably installed at some point, but the OWSSUPP.DLL in the Office11 folder was not successfully registered.
About OWSSUPP.DLL
The file owssupp.dll is part of the Microsoft Office 2003 and 2007 suites being housed by the application Microsoft SharePoint 2007. The module is described as Microsoft SharePoint Client Support which allows the Microsoft Office SharePoint Server 2007 to function in the operating system.
The owssupp.dll module contains functions and protocols that synchronize the housing program with compatible applications in the system, like Internet Explorer, Microsoft Word, Excel and so on. It will be allocated around 90Kb of RAM and virtual memory resources during the initialization process. It is known to be placed under the location C:/ Program Files/ Microsoft Office/ Office 12/. The owssupp.dll module is known to have a file size of 72,248 bytes.
Microsoft Office SharePoint Server 2007 is an application which is composed of varied server capabilities for information sharing within the network of an organization. The software provides comprehensive content management and indexed search functions which speeds up information dissemination.
The housing program also supports intranet, extranet and web-based applications running on Microsoft Windows operating system; integrating all these into one basic platform and interface.
There may be instances wherein the system will report an error regarding the owssupp.dll module. This involves Internet Explorer 6 and 7 crashes when a Microsoft Office documents on Excel and Word are opened using SharePoint.
Mar 30
richardOther
People occasionally ask me what PC they should buy. Here’s my thoughts about 5 different computers and two smartphones:
Non-gaming/Budget PC
Gateway SX2840-01. Small, stylish, and easy on the power consumption but don’t be fooled… this PC has enough power to tackle the household chores. It comes with a whopping 6GB of RAM and a roomy 1TB hard drive for only $560. What a deal!
A nice, detailed review here: http://reviews.cnet.com/desktops/gateway-sx2840-01/4505-3118_7-33963397.html
Product Website: http://www.gateway.com/systems/product/529668383.php
Runner up: Apple’s Mac Mini. You’d think with a third of the RAM and less than a third of the hard drive space, that I’d be crazy to recommend the Mac mini. But the huge bundle of included software almost makes up for that. Plus, the Mac mini has wireless networking, you have to use a cable to connect the Gateway.
Overall Family PC
Apple iMac. Sure, you can buy a lot of other PCs for less than the 1200 to 2000 clams you’ll shell out for an iMac. But the iMac comes with a generous amount of full-version software that you’d have to pay for on other PCs. Your kids will be making videos and composing music within minutes. Your wife will make homemade DVDs from vacation videos. Your Mom will hook up a digital camera and it will just work. Geeks will appreciate the BSD Unix under the hood. This PC works hard at my house… day-in and day-out, it is the one we always go to first… it’s in constant use from after-school until bedtime.
Game PC
Let’s get this straight: Gamer PC’s are expensive! Gamers don’t care, because they know that they are only as good as their hardware. So bleeding edge game machines have to have the very latest technology and that usually costs a lot. We’re talking 3, 4, 5 THOUSAND dollars and up. If you are planning on buying a gaming PC for someone as a birthday or Christmas gift, you would be right to freak out. This is why I like iBuyPower’s Chimera 2-F so much. It’s not BLEEDING edge, but it’s pretty close. And you know what else? It starts at $1,300. It’ll make your kid happy and allow you to save thousands for the car he’ll need later.
Notebook/Laptop
Apple iBook. Why do I keep recommending Apple? Each one comes with a nice bundle of included software that you’d have to pay hundreds more for if you buy a PC. We’re talking video editing software, DVD creation software, and Garage Band just to throw out three easy examples. Other PC’s usually come bundled with trial versions of software that you’d eventually have to pay full-price to continue to use. And with some exceptions, software made for the Mac seems better designed and easier to use than PC counterparts. Yes, I am biased. But I bought my first Mac in 1993 because I didn’t want my wife and kids constantly bugging me about fixing or maintaining the PC, cleaning off viruses, installing drivers… instead they used the Mac and figured out everything on their own. $1000 for the iBook, but it stacks up against PC laptops that cost hundreds less. Count the full cost first, my friends.
If you are dead-set on a PC laptop, the quality of HP has been rising in recent years. Check out the HP Compaq 6730b (about $900 on the street) or the Dell Inspiron 14 (about $600)
Netbook
MSI U160-006US. The cutest little thing $430 can buy! Get it with the 6-cell battery and you’ll be good to go for 15-hours. FIFTEEN HOURS!!! That is a miracle! Get one to take notes in class or at the library, then go home and work on a full-sized keyboard and large monitor on your Gateway SX2840-01.
Runner up: Apple iPad (but only if typing is not that big of a deal for you). But for goodness sake’s, do NOT get the expensive 3G data plan with it. Use the included Wi-Fi.
Smartphone
iPhone. There really isn’t another choice. The Android phones still need some polish. Yes, the monthly data plan hurts real bad. But you will use this phone constantly, and not for talking to people either. Shoot, I find myself sitting on the couch doing Facebook on my iPhone instead of walking fifteen feet over to my computer. Using applications and surfing the web on other phones is something that you do out of necessary convenience… it’s a compromise. Doing the same on an iPhone is fun.
Remember, don’t compare the cost of your crappy phone that you use to connect to the internet once a month with the iPhone. Compare smartphones to smartphones. iPhone to Blackberry, iPhone to Droid. These really are more then cell phones.
The Palm Pixi Plus is interesting, but only because Verizon will allow you to turn the phone into a mobile wi-fi hotspot for up to four other devices. I thought that this alone would be an iPhone killer until I discovered that it costs extra to do this. If it didn’t, I’d get a Pixi in a heartbeat and use it to connect my iPad or MSI netbook to the internet.
Mar 18
richardInfoPath
Problem / Issue:
If you followed the plan in part one of this article, you were probably initially gratified… and a little excited about the prospects for using InfoPath. Your mind was, perhaps, a whirling vapor of cosmic invention. But then your users started to complain about how sloooooooow the form was. Users: they will turn on you like a pit bull, won’t they? Okay, well you take a look and it turns out that waiting 3 to 7 seconds for a field on the form to update DOES seem like a long time.
Time to spring into action and make some improvements! And we won’t even have to ditch InfoPath for ASP.NET forms in the process.
Set up:
Astute readers will recall that in the last example we created a form that included a ClientNumber field so that when you entered a client number a data connection would lookup that Client Number in a SQL database and return the Client Name and write it to the ClientName field. Technically, everything worked. It just didn’t work efficiently.
Solution:
The problem for us seems to be in the way InfoPath natively filters SQL data. InfoPath is working as designed… it’s not a bug or even a design flaw. It’s just the way it works. Sometimes, the tool you are using is not the exact tool you need… but you have to make it work. In this case, we’re using a phillips head screwdriver when what we really need is one of those 18 volt electric drills with a phillips head bit on the front, but I digress.
In this particular case, we want to query a table of client names using a client number. When we enter the Client Number the rule kicks off and it first queries the database table. In other words, it downloads the table. THEN, in the second step of the rule, it filters the data according to the Client Number value and returns a single Client Name.
Experienced SQL people already have a big problem with this. It screams “inefficiency.” Let me just say this in InfoPath’s defense: we were able to create a form that queried a SQL database and we did not have to write one line of code or create an ASP.NET page. That, is impressive.
Having said that, let’s now do the right thing. And by “the right thing” I mean: coding a solution because our table is just too big for InfoPath to download and filter. We want code that will go to the SQL table and say “here’s my client number, just give me the name that goes with it and nothing else.”
1. If you are still using the same form that you used to follow along in Part 1, just open the text box properties for the ClientNumber field and delete the rules you set up. Deleting the ClientDataLookup data connection is not necessary, but we will not need it anymore.
2. If you are starting from scratch for this example, just create a new InfoPath form template and create two textfields on the form: ClientNumber and ClientName
3. We want the ClientName to be looked up and populated whenever a user enters a ClientNumber, so right-click on the ClientNumber field and select Programming… from the pop-up menu, then Changed Event… (NOT “Changing Event…”!).

Did you get this alert window instead of launching Visual Tools for Applications? If so, refer the the end of this article for some advice on installing VSTA.

4. Now, for the 10% of y’all who already have VSTA installed, a window will come up with some code in it. If you have done any development in Visual Studio, this looks really familiar. If you are not, welcome to the world of software development: you are now a programmer.
5. Look at the tab at the top of the form. It will say something like “FormCode.vb” or “FormCode.cs” either way, hopefully this is in your preferred language. In my example here, it is Visual Basic. You should be able to change your preferred language by going into Tools > Form Options then the Programming tab. I tried to change mine to C#, but it seems to insist on staying with Visual Basic. Possibly because this is a web-enabled form? Who knows? I’m okay with either language because I’m not yet fully proficient in C#.
6. In the Project Explorer pane on the right, right-click on the top item, the name of your InfoPath form and select Add Reference from the pop-up menu:

7. Add the System reference from the .NET tab:

You might also need to add System.Data, Microsoft.mshtml, and System.Windows.Forms
8. Notice all of the Import statements at the top:
Imports Microsoft.Office.InfoPath
Imports System
Imports System.Windows.Forms
Imports System.Xml
Imports System.Xml.XPath
Imports mshtml
9. Type in these additional Import statements below them:
Imports System.Data
Imports System.Data.Common
Imports System.Data.Common.DbCommand
Imports System.Data.Common.DbDataReader
Imports System.Data.SqlClient
10. Next, scroll down and look for a Sub titled “Public Sub ClientNumber_Changed(ByVal sender As Object, ByVal e As XmlEventArgs)” If you named your text field something other than ClientNumber, then the sub will be called <yourFieldName>_Changed.
11. Add the following code after the Sub title and before the “End Sub”
Public Sub ClientNumber_Changed(ByVal sender As Object, ByVal e As XmlEventArgs)
Dim conn As New SqlConnection("data source=your-sql-server-name;initial catalog=your-database-name;User ID='sql-user-name';Password='sql-server-password';")
Dim nav As XPathNavigator = CreateNavigator()
Dim theClientNumber As String
theClientNumber = nav.SelectSingleNode("/my:myFields/my:ClientNumber", NamespaceManager).Value
Dim cmdQuery As New SqlCommand("SELECT DISTINCT clname1 from client where clnum = '" + theClientNumber + "'", conn)
Dim dr As SqlDataReader
Try
conn.Open()
dr = cmdQuery.ExecuteReader()
If dr.HasRows = False Then
Else
Do While dr.Read()
nav.SelectSingleNode("/my:myFields/my:ClientName", NamespaceManager).SetValue(dr("clname1"))
Loop
End If
Catch ex As Exception
Finally
dr.Close()
conn.Close()
End Try
End Sub
You can almost read this. Here’s the breakdown line-by-line:
Line 1: create a SQL Connection called conn. You need to provide the same info here as you would if you were setting up a new data connection in InfoPath.
Line 2: create a navigator so you can read and write to your InfoPath form.
Lines 3 and 4: create a variable to hold the client number and assign it the value of the client number in the ClientNumber field on the InfoPath form. If I develop this further, I’ll add a test to be sure that the client number is not null and that it is in the proper format, i.e. 6 numeric digits.
Line 5: create a SQL Command Query. Here’s where the ability to create a very specific SQL query pays off.
Line 6: create a data reader to process the rows of data that get returned from the query
Line 7: start a Try block
Line 8: open a connection to the SQL database
Line 9: execute the SQL query and assign the results to the data reader
Line 10+: start an If statement to check if any data is returned
Line 12: Loop through the data rows that were returned from the query. Yeah, I used “DISTINCT” in my query in line 5, so I should only get a single row returned each time.
Line 13: use the navigator to set the ClientName field on the InfoPath form to the clname1 value returned to the data reader, i.e. grab the returned client name and plug it into the ClientName field.
Line 16: catch errors
Line 17: the finally line gets executed
Line 18: close the data reader
Line 19: close the SQL connection
12. File > Save the code you just typed in.
13. File > Exit VSTA
14. One last thing… since we added custom code, we have to change the security level of our form to Full Trust. Go to Tools > Form Options, Security and Trust tab and change the Security level to Full Trust from Automatically determine security level (recommended). You have to uncheck the box so you can then choose Full Trust:

If you do not set this to Full Trust, you will get this error when you try to execute your code:

15. Try the form in InfoPath with Preview.
Installing Visual Studio Tools for Applications (VSTA)
You are here because you got the following alert message when trying to add custom code to your InfoPath form

In full, it reads:
InfoPath cannot add the event handler.
To work with Visual Basic or C# code, Microsoft Visual Studio Tools for Applications (VSTA) is required. The Microsoft .NET framework 2.0 and Microsoft Core XML Services 6.0 must be installed prior to installing VSTA. To install VSTA, open Add or Remove Programs, locate your 2007 Microsoft Office system installation, then click Change.
1. Download Microsoft Core XML Services 6.0 from here http://www.microsoft.com/downloads/details.aspx?FamilyID=993C0BCF-3BCF-4009-BE21-27E85E1857B1&displaylang=en and try to install it. If you have a later version than this you will be warned and you can abort the install. Keep the newer version if you have it.
2. Go to Control Panel > Add or Remove Programs and look for “Microsoft .Net Framework 2.0” you probably have “Microsoft .Net Framework 2.0 Service Pack 2” along with “Microsoft .Net Framework 1.1” and “Microsoft .Net Framework 3.0 Service Pack 2” and possibly “Microsoft .Net Framework 3.5 SP1” Whatever, as long as you have some kind of “Microsoft .Net Framework 2.0” you are ok. If you don’t have it, download it here: a href=”http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=5b2c0358-915b-4eb5-9b1d-10e506da9d0f”>http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=5b2c0358-915b-4eb5-9b1d-10e506da9d0f
3. Go to Control Panel > Add or Remove Programs and look for your Microsoft Office 2007 program. The name might differ, for example mine is titled “Microsoft Office Enterprise 2007.” Select it and click the Change button….
a. Choose “Add or Remove Features” and click Continue
b. Drill down under the Microsoft Office InfoPath node until you get to “.NET Programmability Support for .NET Framework version 2.0”

c. Set it to “Run from My Computer” and click Continue.
4. After it installs, reopen your InfoPath form. You should (should*) now be able to use VSTA.
*Hopefully. I have two PCs, a desktop and a laptop… both seem to be configured identically with respect to InfoPath, Office 2007, .NET Frameworks, etc. even Visual Studio. I performed the same set up steps on each. VSTA now runs on my laptop but I cannot get it to run on my desktop. Go figure. I’m still researching this.
Mar 17
richardInfoPath
Problem / Issue:
This comes up all the time. You have one field which the user will input data and you want to use this value to perform a SQL Query and return some data to the second field. Perhaps you want the user to enter a customer id and return the customer name. Or, the user enters an employee number and the name of that employee gets returned.
Ideally, you’d like not to have to do any coding.
Set up:
In my example (I work at a law firm), I have a client number field on my InfoPath form named ClientNumber. The user will type in the client number and when they are done, the form will query a SQL Server database and return the client’s name to the ClientName field on the InfoPath form. This not only saves the users from having to type in the client name, but also serves to provide immediate validation that they entered the correct client number.
Here’s the applicable section of my form

Solution:
1. Create a Data Connection to your SQL source database
a. Tools > Data Connections…
b. Click Add
c. Check “Create a new connection to:”
d. Check “Receive Data”
e. Click Next
f. Check “Database (Microsoft SQL Server only)”
g. Click Next
h. Click Select Database…
i. Choose an existing Data Source or set up a new source***
ii. Click Open
i. Click Yes to acknowledge that the selected database connection saves passwords in a plain text file. I assume that your SharePoint farm is behind a firewall of some kind and cannot be accessed by the general internet public. Furthermore, this SQL Server username and password only allows users to read data from this specific database table.
j. Uncheck any fields/columns that you do not need (or even Edit the SQL if you prefer). A fast way to uncheck many boxes is to just write your own SQl statement then, when you go back to this screen only the columns in your SQL statement are checked. Pretty nifty.
k. Click Next
l. Do not store a copy of the data in the form template
m. Give your data connection a name. Like “ClientDataLookup”
n. Uncheck “Automatically retrieve data when form is opened.”
o. Click Finish
p. Click Close to close the Data Connections window
*** Setting up a new data source
• Select Microsoft SQL Server
• Click Next
• Type in the domain name of your SQL Server
• Type in the Username and Password given to you by the SQL Database Administrator. This account allows you to authenticate to the server so you can read data
• Click Next
• Select the database you want to use
• Select the table you want to use
• Click Next
• Optional: provide a description and a friendly name
• Click Finish
2. Configure the fields on the InfoPath form
a. Double-click on the ClientNumber field (the one that users will key the data into that will be used for the query). This will open the Text Box Properties window for the field.
b. Click Rules
c. Click Add…
d. Give your rule a name. I used “LookupClientName”
e. Do NOT click the Set Condition button! If the condition remains at the default, “None – This rule always applies” then the rule will trigger when the value in the client number field changes AND you make the cursor leave the field (either by pressing the Tab key or clicking somewhere else on the form)
f. Click Add Action…
g. Change the Action field to “Query using a data connection”
h. Change/set the Data Connection field to “ClientDataLookup” (i.e. the data connection that you just set up in step 1)
i. Click OK
j. Click Add Action… again
k. Leave the Action field set to “Set a field’s value”
l. Click the button to the right of the Field field and select the ClientName field from the Main Data source
m. Click OK
n. Click the function button to the right of the Value field
o. Click Insert Field or Group
p. Change the Data Source to the “ClientDataLookup” source you created earlier
q. Click on the little + buttons to expand tree nodes until you see the SQL field/column that you want to return to the ClientName field (In my database this column in SQL is titled “clname1”)
r. Click the Filter Data… button
i. Click Add to Specify the Filter Conditions
s. There are three fields to set here:
i. first field: set to the ClientNumber field on the InfoPath form (i.e. in the Main data source)
ii. second field: set the choice to “is equal to”
iii. third field: set to the clnum column from your SQL database table (i.e. in the ClientDataLookup data source)
t. Click the OK buttons over and over until you get back to the Insert Formula window. Verify your formula
u. Click OK (Insert Formula window)
v. Click OK (Action window)
w. Click OK (Rule window)
x. Click OK (Rules window) <- not a typo!
y. Click OK (Text Box Properties window)
z. Preview your form to test. Bueno? Reward yourself with a delicious beverage
3. If everything works well, publish it to a SharePoint list and test it again
a. This time you need to test performance over the web
b. Also, test the form with users to be sure that you got everything right
Caveats, provisos, addendums, quid pro quos:
Q: What happens if your query on the client number returns more than one record?
A: You might want to google the SQL keyword “DISTINCT” for help.
Also, if your table is big, you users might experience a few seconds of “hourglassing.” The table in this example had over 46,000 records and it took a good 5 to 6 seconds to return the client name. My users are lawyers and legal secretaries who are missing the gland that secretes patience, so I asked my DBA some questions about his database table. He said to me: “Why don’t you change your SQL statement so that it leaves out the closed clients?” I added a WHERE clause to the ClientDataLookup data connections (Edit SQL…) and now the table has less than 24,000 records and takes about 3 seconds. I bought my DBA a chocolate doughnut for his tip. Your tip: keep your DBA happy because he can help you. See Part 2 of this article for more on this topic (i.e. what do you do when you’ve optimized your SQL statement and the form is still slow).