Main Menu

KB#00313-Program samples demonstrating ODBC access from Visual Basic 4, 5 and 6

Title:

Program samples demonstrating ODBC access from Visual Basic 4, 5 and 6

Description:

================================================================= 
Example 1: 

Doesn't use a Data Access Object. Note the SQLPassThrough flag on the OpenRecordset command. This will produce the highest level of optimization possible. Also note that this example assumes that "myds" is a valid datasource as defined in the ODBC administrator, and that that "table" and "field1" refer to a valid table within the datasource and a valid field within the table. 

Dim db As Database 
Dim ws As Workspace 
Dim rs As Recordset 

rem set the first string to "" and the second to "ODBC;" to have the user select a datasource from the ODBC administrator during run-time. Set db = Workspaces(0).OpenDatabase("myds", False, False, "ODBC;Database=myds") SQL$ = "SELECT field1 FROM table WHERE field1 BETWEEN 'A' and 'B' ORDER BY field1" Set rs = db.OpenRecordset(SQL$, dbOpenDynaset, dbSQLPassThrough) 

Do Until rs.EOF 
List1.AddItem rs("field1") 
rs.MoveNext 
Loop 

Changes the window's title to indicate how many records were selected Form1.Caption = "Records Found: " + Str(rs.RecordCount) db.Close 

================================================================= 
Example 2: 

Using a Data Access Object to connect to the datasource. Note that there is no code, just the data object and potentially other data-aware controls. Again, assume that "myds" is a valid datasource 

1) Include a Data object with these properties 
Connect: ODBC;DSN=myds 
DatabaseName: can be blank if Connect references a valid ODBC datasource 
RecordSource: This can either be a table, or a valid SQL statement to produce a resultant table 

2) Include data-aware controls (we'll use a textbox for this example) 
Datafield: select a valid field from the RecordSource 
Datasource: select the data object from step 1 

================================================================= 
Example 3: 

This examples uses a RDO resultset in VB5 to get the information. Ensure that you've added the 'Microsoft Remote Data Object 2.0' to the project via the Project/References menu option.

Dim rs As rdoResultset 
Dim cn As New rdoConnection 
Dim cl As rdoColumn 
Dim SQL As String 


cn.Connect = "DRIVER=BASIS ODBC Driver 32-BIT;Bus14=No;FastConnect=Yes;ReadOnly=Yes;UserID=qatest;Config=f:\vb5_projects\Call_log_stats\Config.tpm"
cn.CursorDriver = rdUseOdbc 
cn.EstablishConnection rdDriverNoPrompt 

SQL = "select * from customer where last_name in ('JONES','SMITH')" 

Set rs = cn.OpenResultset(SQL, rdOpenKeyset, rdConcurReadOnly, rdAsyncEnable + rdExecDirect) 

Debug.Print "Executing "; 
While rs.StillExecuting 
Debug.Print "."; 
DoEvents 
Wend 

Do 
Debug.Print String(50, "-") _ 
& "Processing Result Set " & String(50, "-") 

For Each cl In rs.rdoColumns 
Debug.Print cl.Name, 
Next 
Debug.Print 

Do Until rs.EOF 
For Each cl In rs.rdoColumns 
Debug.Print cl.Value, 
Next 
rs.MoveNext 
Debug.Print 
Loop 
Debug.Print "Row count="; rs.RowCount 

Loop Until rs.EOF 

================================================================= 
Example 4: 

This example uses RDO in VB5 to update an ODBC record. Because version 1.1 of our ODBC driver does not support cursors, it is not possible to update the data using the Recordset object; updates can only be done using SQL. Ensure that you've added the 'Microsoft Remote Data Object 2.0' to the project via the Project/References menu option. 

Private Sub Command1_Click() 
Dim cn As New rdoConnection 
Dim rs As rdoResultset 
Dim qy As New rdoQuery 
cn.CursorDriver = rdUseOdbc 
cn.Connect = "driver={BASIS ODBC Driver 32-BIT};dsn=�chile�;FastConnect=Yes;ReadOnly=No;Config=d:\chile\config.tpm" 
cn.EstablishConnection 

' s$ = "UPDATE CUSTOMER SET FIRST_NAME='John' where CUST_NUM='000001'" 
' rdotest.Execute s$, rdExecDirect 
' rtnval = MsgBox("update complete", vbInformation) 

With qy 
.Name = "TestQuery" 
.SQL = "Select * from Customer" 
.RowsetSize = 1 
Set .ActiveConnection = cn 
Set rs = .OpenResultset(rdOpenKeyset, rdConcurRowVer) 
Debug.Print rs.Updatable 
End With 

rs.MoveFirst 
Do Until rs.EOF 
'rs.Edit 
'rs!First = rs!First + " 2" 
'rs.rdoColumns.Item("FIRST").Value = rs.rdoColumns.Item("FIRST").Value & " 2" 
s$ = "update customer set first_name = '1' where first_name='" + rs!First + "'" 
cn.Execute s$, rdExecDirect 
'rs.Update 
rs.MoveNext 
Loop 
End 

rs.MoveFirst 
Do Until rs.EOF 
Debug.Print rs.rdoColumns.Item("FIRST").Value 
rs.MoveNext 
Loop 

rs.Close 
qy.Close 
cn.Close 

End Sub 


================================================================= 
Example 5: 

This example uses ADO in VB6 to display all of the records in the BASIS Chile Company demo database that shipes with the 2.0x version of the BASIS ODBC Driver. Ensure that you've added the Microsoft ActiveX Data Objects to the project via the Project/References menu option. Note that you can also create a fully functioning example with ADO via Visual Basic's VB Application Wizard. 

Dim db As Connection 
Set db = New Connection 
db.CursorLocation = adUseClient 
db.Open "PROVIDER=MSDASQL;dsn=BASIS Chile Company Database;uid=;pwd=;" 

Set adoRS = New Recordset 
adoRS.Open "select * from CUSTOMER Order by CUST_NUM", db, adOpenStatic, adLockOptimistic 

Do Until adoRS.EOF = True 
Debug.Print Trim$(adoRS!Cust_Num) + " " + Trim$(adoRS!First_Name) + " " + Trim$(adoRS!Last_Name) 
adoRS.MoveNext 
Loop 
adoRS.Close 
db.Close



Last Modified: 12/09/1998 Product: BASIS ODBC Driver Operating System: Windows

BASIS structures five components of their technology into the BBx Generations.

  Google+ View BASIS LinkedIN Profile Visit our Twitter Feed Check out our Facebook Public Profile Click to View the BASIS youTube channel