CLI Reference Guide
Using ODBCLink/SE With ODBC Applications ODBCLink/SE Reference Manual
ODBCLink/SE
48 ©M.B. Foster Associates Limited 1995-2000
Using Visual Basic (4.0 or higher)
You can use ODBCLink/SE either with VB Database controls or with Database and dynaset variables. In addition, of
course, you may call ODBC functions directly from the DLL.
To use VB database controls, define a data control and assign it a Connect property of the form
"DSN=HP3000;UID=users;PWD=password" and a RecordSource property of the form "SELECT * FROM
TableName". If you want to create a SnapShot (no update) set the Options property to 64 (SQL_PASSTHROUGH).
You may then place text controls on the screen, set the DataSource property to the name of the data control, and set
the DataField property to the name of the column in the Select statement. When the application is run, it will
download all records qualified by the Select statement (or all primary key values, depending on the
SQL_PASSTHROUGH option) and display the first record on the screen. You may scroll through the records by
using the "Up", "Down", "Top", "Bottom" buttons on the data control.
A second option is to use dynaset variables which gives the program more control, such as for loading a grid with
data. Define a database object, assign it Connect and Options properties as above, and open it with an OpenDatabase
call, as in SET DBVar=OpenDatabase(...). Then define a dynaset variable (DIM DSVar as DYNASET) and open it
with a statement of the form "Set DSVar=DBVar.OpenDynaset (SQLstatement)." If SQL Statement is a Select
statement, you can read the results from "DSVar.FieldName" and move to the next record with "DSVar.MoveNext".
If SQLStatement is an Insert or Update statement, no results are returned. You can update records with the Update
method, and you can get the selection count by calling SQLRowCount or with a query of the form "Select COUNT(*)
From Table Where Conditions". To update the table, you will of course need a primary key defined and you will need
to disable the SnapShot only button.
A third option is to call ODBC functions directly. Generally you will do an SQLAllocEnv, SQLAllocConnect and
SQLDriverConnect to open the database, followed by SQLExecDirect, followed by multiple SQLFetch and
SQLGetData calls. If you plan to use SQLBindCol to bind fetch results to local variables you must use the following
procedure:
A) Declare strings variables as: Dim mystr as String
B) Initialize your string variables before use: mystr=String(255,0)
C) Use the ByVal keyword when passing the variable to the ODBC driver.
Do not use the ByVal keyword in the
AlpbBuf@ parameter except for
character data, as the goal is to pass the address of the parameter, not the
value. Declare SQLBindCol as follows:
Declare Function SQLFindCol Lib
Aodbc.dll@ (ByVal hstmt AS long, ByVal col As Integer, By Val wConvType As
Integer, lpdBuf As Any, ByVal dwbuflen As Long, lpcbout As Long) As Integer.