'===========================================================================
' Subject: OPEN & READ AN ACCESS TABLE        Date: 04-08-00 (01:59)       
'  Author: Ralph Berger                       Code: PBDLL                  
'  Origin: rb@bergertime.de                 Packet: PBDLL.ABC
'===========================================================================
'below is a pbdll ODBC sample. The include files are missing. But they are
'all on pb's ftp server.

'Best rgds
'Ralph

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' file : access.bas
' open and read a access table
' sql32.inc & sqlext32.inc are from pb's ftp server (file: odbc30.zip)

$COMPILE EXE
$DIM ALL
$INCLUDE  "WIN32API.INC"
$INCLUDE  "SQL32.INC"
$INCLUDE  "SQLEXT32.INC"


FUNCTION PBMAIN()
    '' ODBC Session
    LOCAL a_hEnv AS DWORD
    LOCAL a_hDBC AS DWORD
    LOCAL hstmt  AS DWORD
    LOCAL ret AS LONG
    
    '' Data Fields
    LOCAL field1   AS ASCIIZ * 7
    LOCAL field2   AS ASCIIZ * 26
    LOCAL cbValue1 AS LONG
    LOCAL cbValue2 AS LONG

' Variables that hold the length of the parameters
    cbValue1 = %SQL_NTS
    cbValue2 = %SQL_NTS

' Connect via ODBC
    Ret = SQLAllocEnv(a_hEnv)                      ' Allocates the SQL environment
    Ret = SQLAllocConnect(a_hEnv, a_hDBC)          ' Allocates connection
    Ret = SQLConnect(a_hDBC, "ATIME", %SQL_NTS, "Admin", %SQL_NTS, "", %SQL_NTS)

' Create a statement to select data
    Ret = SQLAllocStmt(a_hDBC, hstmt)
    ret = SQLExecDirect(hstmt, "Select Nr, Name FROM abteilung" , %SQL_NTS)
    IF ret = %SQL_ERROR OR _
       ret = %SQL_SUCCESS_WITH_INFO THEN MSGBOX STR$(hstmt),0,"Error in SQLExecDirect"
    
' Bind the parameters for the select query
    Ret = SQLBindCol(hstmt, 1, %SQL_C_CHAR, field1, SIZEOF(field1), cbValue1)
    Ret = SQLBindCol(hstmt, 2, %SQL_C_CHAR, field2, SIZEOF(field2), cbValue2)
    IF ret = %SQL_ERROR OR _
       ret = %SQL_SUCCESS_WITH_INFO THEN MSGBOX STR$(Ret),0,"Error in SQLBindCol"
 

' Read a record and set bookmark to next one
    Ret = SQLFetch(hstmt)
    IF ret = %SQL_ERROR OR ret = %SQL_SUCCESS_WITH_INFO THEN
        MSGBOX STR$(Ret),0,"Error in SQLFetch"
    ELSE
        MSGBOX "Field 1 : " & field1 & $CRLF & _
               "Field 2 : " & field2, _
               0, "SQLFetch got data"
    END IF

' Free the ODBC resources
    Ret = SQLFreeStmt(hstmt, %SQL_DROP)
    Ret = SQLDisconnect(a_hDBC)        ' Disconnecting and deallocating.
    Ret = SQLFreeConnect(a_hDBC)
    Ret = SQLFreeEnv(a_hEnv)

END FUNCTION
