kbmMemTable is known for being a very feature rich and fast memory
table.
It's a memory storage of row/field oriented data.
kbmMemTable contains lots of features for searching, filtering,
sorting and grouping the data contained in it, just like a database
like Oracle, MSSQL etc. However apart from the fact that a
kbmMemTable holds one single table, a big difference between
Oracle/MSSQL etc and kbmMemTable is that Oracle/MSSQL
supports (actually primarily uses) the SQL language for searching
and manipulating data in the tables. For years, kbmMemTable
was not able to understand proper SQL syntax, but we
introduced a free, bundled add-on for kbmMemTable Standard
Edition and kbmMemTable Professional Edition that we named
kbmSQL. kbmSQL enables support for a large subset of the
SQL language for any number of kbmMemTables you have.
Over time kbmSQL is expected to evolve to support an even
larger subset of the current SQL standard.
After having downloaded and installed kbmMemTable and
kbmSQL, you will find several components in the
kbmMemTable section.
What’s a memory table?
So how to use it then?
As usual you will find TkbmMemTable,
TkbmBinaryStreamFormat,
TkbmCSVStreamFormatter and
TkbmThreadDataset (which is
) components. And then as something
new - TkbmMemSQL.
available for backwards
compatibility and rarely used
TkbmMemSQL is in it self a memory
table, that is based on TkbmMemTable, and will be the
container for any results coming from a SQL statement.
Those results can thus be further manipulated or presented in
the same way as a regular TkbmMemTable instance by using it
as a source of data for some other procedure or connect it to
data aware controls. To make TkbmMemSQL tick, we need to
give it two things to work with… data and a SQL statement. The
raw data is provided for it via other datasets. Currently
kbmMemTable is supported as a data provider, but kbmSQL
has been designed with extesibility in mind, since other data
providers may be added later on.
So let's start with a sample application.
I have added a kbmMemTable (for the raw data), a kbmMemSQL
component for doing our SQL, and a couple of grids to show
the raw and result data, and finally a button that we will click to
execute the SQL.
I’ll make it simple and just put the code we need into the
Execute SQL button.
kbmSQL – Structured Query Language for your memory table
You may already have used kbmMemTable in your
applications. If not, then its certainly about time to try it
out. You can download kbmMemTable CodeGear Edition
for free from after registering, but please
notice that only latest version of Delphi is supported with
kbmMemTable CodeGear Edition.
If you would like to use kbmMemTable for other versions
of Delphi, C++Builder or FPC, you need to get
kbmMemTable Standard Edition from
. Its only US $30 and
includes source and kbmSQL, which this article is about.
www.myc4d.com
www.components4developers.com
uses
procedure
begin
50
50
120 10.10
15 20.10
10 10.10
33 10.10
12 10.10
99 20.10
19 10.10
143 20.10
199 10.10
end
// Make sure to include this unit to have support for kbmMemTable registered in kbmSQL.
// Prepare some raw data to work on.
// Register kbmMemTable1 as source for kbmMemSQL1.
// Notice that we have given kbmMemTable1 a name that identifies it in SQL (table1).
// Prepare some simple SQL.
;
. ( : );
. ;
. .
( , , );
. .
( , , );
. .
( , );
. .
( , );
. ;
. ;
.
([ , , , ]);
.
([ , , , ]);
.
([ , , , ]);
.
([ , , , ]);
.
([ , , , ]);
.
([ , , , ]);
.
([ , , , ]);
.
([ , , , ]);
.
([ , , , ]);
. . ;
. . ( , );
. ( );
;
kbmSQLMemTableAPI
TForm1 Button1Click Sender TObject
kbmMemTable1 Reset
kbmMemTable1 FieldDefs Add
ftString
kbmMemTable1 FieldDefs Add
ftString
kbmMemTable1 FieldDefs Add
ftFloat
kbmMemTable1 FieldDefs Add
ftFloat
kbmMemTable1 CreateTable
kbmMemTable1 Open
kbmMemTable1 AppendRecord
kbmMemTable1 AppendRecord
kbmMemTable1 AppendRecord
kbmMemTable1 AppendRecord
kbmMemTable1 AppendRecord
kbmMemTable1 AppendRecord
kbmMemTable1 AppendRecord
kbmMemTable1 AppendRecord
kbmMemTable1 AppendRecord
kbmMemSQL1 Tables Clear
kbmMemSQL1 Tables Add kbmMemTable1
kbmMemSQL1 ExecSQL
'StringField1'
'StringField2'
'NumberField1'
'NumberField2'
'String 1' 'AnotherString 1'
'String 2' 'AnotherString 1'
'String 3' 'AnotherString 1'
'String 4' 'AnotherString 2'
'String 5' 'AnotherString 2'
'String 6' 'AnotherString 2'
'String 7' 'AnotherString 3'
'String 8' 'AnotherString 3'
'String 9' 'AnotherString 3'
'table1'
'select * from table1'
The following samples are based on kbmSQL v. 1.01.00
Figure 1.
Figure 2.
expert
starter
DELPHI 7 and above (Win32)
LAZARUS
72
COMPONENTS
DEVELOPERS
4
SEPTEMBER 2011 BLAISE PASCAL MAGAZINE 18