Tuesday, February 26, 2013

SQL Delphi Data Components


I am going to tell you briefly of a fabulous product from Devart.com: their Data Access Components for MySQL (MyDac): http://www.devart.com/mydac/
I was working in a language called Pascal in an IDE called Delphi. Not widely used, however, quite powerful. I created a point-of-sale system and because we were rushed to market, who isn’t these days, I did not look around for any database components. I figured the components Delphi had were fine.
The problem arose soon after we went live – Memorial Day weekend. 100+ terminals all banging away at MySQL and my POS system. Response to/from the DB was very slow. June went by without a solution. July went by – a little better with some tweaks to code, but not by much.
Finally, on August 1st I found MyDac from Devart. I downloaded their trial version of the MyDac components. They installed without issue and I ran some basic tests in only a few minutes. It was completely user-friendly to use. Their help file is detailed and organized but I did not find this out until months later when I used MyDac to do other, more complicated tasks.
I had built my database classes in such a manner where I only had to replace the units/libraries from Delphi’s to Devart’s. Then, I cast my components as MyDac: TDatabase to TMyDatabase and TTable as TMyTable for example.
I compiled and it ran!
I had to make ZERO changes to my code.
I ran some tests locally with success. Then, contacting the client indicated I wanted to put this test onto one or two terminals. Eagerly, they agreed. Moments after it was installed, they called back and asked if something was wrong? I asked them to explain and they stated it was running so fast, they thought nothing was being saved or updated in the database. I assured them through reports, indeed the data was there – it was just amazingly fast now.
Did I tell the client it was Devart who I have to thank for this great performance improvement over the standard Delphi components? Of course I didn’t. They think I just found the magic solution and thought very highly of me and were very happy.
I was happy too.
Devart, you saved my butt back then and probably the product and client.
I am looking to purchase their products as they are clearly well done and superior to the standard components.
Thank you Devart.

Monday, May 14, 2012

Cisco EA3500 Router Purchase

The router we currently had - not sure of the make/model - was apparently about to die. I did some quick searches on-line for routers and found a clump from Cisco, Linksys and D-Link, as was expected. I was more interested in the price than the brand as these were the brands I would stick with anyway.

Being the patient person, I did not order on-line I went down to Office Depot because we had a gift card from a previous purchase/return.

We purchased the Cicso EA3500 for the following reasons:
1) Dual band
2) Four-ports
3) USB port

Several models had the first two but only models above $100 had the USB port.

FYI: Office Depot took our $10 off a $50 purchase we received from Office Max. Thank you Office Depot.

Setup: Well, this is where I was surprised. I had my 13-year old son do it and all I did was take it out of the box and watch.

1) Start the setup program with the provided CD.
2) Plug the router in and make all the connections (I told him to watch what cord was the WAN cord from the previous router)
3) Press continue on the installation program
4) Provide a password for the wireless
5) Reboot router
Done!

Thank you for a pleasant installation, Cisco!

Tuesday, April 17, 2012

Freeing Delphi Dynamic Arrays

This post is about freeing dynamic arrays in, Delphi.

In, Delphi, as in others, dynamic arrays useful in many instances. Here is a good link on a basic understanding
http://delphi.about.com/od/beginners/a/arrays.htm This is not what this post is about.

Let's declare a dynamic array and we will use the same variables as the link above so to make it easier to understand


var
  Students : array of string; 
  nCounter: integer;
begin
  // set the length to something
  SetLength(Students,5); // this will hold six students
  // loop through and load the array with some data
  for nCounter := Low(Students) to High(Students) do
  begin
    Students[nCounter] := 'My student #: ' + inttostr(nCounter);
  end;

  // do something
  // way one to free array
  Students := nil;
  // way two to free array
  SetLength(Students,0);
  // way three to free array
  Finalize(Students);
end;


There you go!

Wednesday, April 4, 2012

Enter ASCII Characters

Several ways to accomplish entering ® or © into text. In Word® you can select it from the fonts. You can also use the Character Map in Windows and find your character and hit copy.

The cool way is to hold down the ALT key and then, using the keypad, type the appropriate ASCII number. For example:
® = ALT + 0174
© = ALT + 0169

You can use this for any of the ASCII characters.

Happy typing.

Tuesday, November 29, 2011

TSQL Delete All Data

So you want to delete all the contents of the tables in your MS SQL database. You could drop and create the database. You could also drop and create the tables within the database. Then, you could iterate through all the tables in the INFORMATION_SCHEMA and delete all the rows with a TSQL script.

Here is the script I used:

USE [YourDatabase];
GO
SET NOCOUNT ON;
DECLARE @MyTableName varchar(100);

DECLARE MyCursor CURSOR
  FOR SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
  WHERE TABLE_CATALOG = 'YourDatabase' AND TABLE_SCHEMA = 'dbo';
OPEN MyCursor;
FETCH NEXT FROM MyCursor INTO @MyTableName;

WHILE @@FETCH_STATUS = 0
BEGIN
  EXEC ('DELETE FROM ' + @MyTableName);
  FETCH NEXT FROM MyCursor INTO @MyTableName;
END;
CLOSE MyCursor;
DEALLOCATE MyCursor;

Tuesday, August 23, 2011

SQL Server Full-Text Searching

Sometimes, a blog will contain information you wrote on a topic. Other times, a blog will be a posting about what others have already put together.

This post is the latter.

Recently, the opportunity arose to research how to search binary data in a database. The constraints were the document was stored in the table and it needed to work with SQL Server or Oracle. This post will, focus mostly on SQL Server.

This article shows in great detail how to setup the full-text indexing and provides great explanation as to many of the options within the syntax.

The article uses the Adventure Works database. If you need the Adventure Works database.

Then, after this was tested out, this article was found on Google type searching within a SQL Server.

And finally, some information on Google searching.

All these links were last tested: 23 Aug 2011.