TRDD / TRDDODBC

Fonte: source/classes/trdd.prg, source/classes/trddodbc.prg

TRDD is a standalone base class. TRDDODBC inherits from: TRDD

TRDD is a virtual RDD (Replaceable Database Driver) base class that delegates RDD operations to code blocks. TRDDODBC extends TRDD to provide an ODBC-backed RDD, allowing standard USE, SKIP, APPEND, SEEK, and field access commands against ODBC data sources. It registers as the "ODBC" RDD via RddRegister.

Key DATA Members (TRDD)

DATATypeDescription
bAddFieldBlockCode block for adding a field definition
bAppendBlockCode block for appending a blank record
bGetValueBlockCode block for reading a field value
bPutValueBlockCode block for writing a field value
bSkipBlockCode block for moving the record cursor
bOpenBlockCode block for opening a table
bCloseAreaBlockCode block for closing a work area
bBofBlockCode block for beginning-of-file check
bEofBlockCode block for end-of-file check
bRecCountBlockCode block for record count
bRecNoBlockCode block for current record number
bGoTopBlockCode block for GoTop

TRDD Methods

MethodDescription
New()Create the virtual RDD with default code blocks
SetRdd()Register this instance as the active virtual RDD
AddField( nArea, nField )Add a field via bAddField code block
AddFields( pArea, aFields )Add multiple fields using RddSetFieldExtent / RddAddField
Open( pArea, nArea, cFileName, cAliasName, lShared, lReadOnly )Open a table via bOpen
Skip( pArea, nArea, nRecs )Skip records via bSkip
CloseArea( nArea )Close a work area via bCloseArea

TRDDODBC

DATATypeDescription
oOdbcObject (CLASSDATA)Shared TOdbc connection instance
aDbOdbcArray[255]Array of open TDbOdbc objects indexed by work area
MethodDescription
New( cDSN, cUserName, cPassword )Create ODBC connection and register as virtual RDD
End()Close all open work areas and disconnect ODBC
Open( pArea, nArea, cFileName, cAliasName, lShared, lReadOnly )Open an ODBC table; creates TDbOdbc and registers fields
CloseArea( nArea )Close a specific work area
GetValue( pArea, nArea, nField )Read a field value via FieldGet
PutValue( pArea, nArea, nField, cType, uValue )Write a field value via PutValue
Append( nArea )Append a blank record
Delete( pArea, nArea )Delete the current record
Seek( pArea, nArea, cExpSearch, lSoftSeek )Seek for a value
Skip( pArea, nArea, nRecs )Move the record cursor
GoTop / GoBottom / GoToIdCursor navigation
FieldInfo( pArea, nArea, nField, nInfoType )Get field metadata
OrdCreate / OrdInfo / OrdListAdd / OrdListClear / OrdListFocusOrder management (delegated to TDbOdbc)

Example: USE Table via ODBC RDD

#include "FiveWin.ch"

function Main()

   local oRdd := TRDDODBC():New( "MyDSN", "user", "pass" )

   REQUEST ODBC

   USE customers VIA "ODBC" ALIAS CUST

   DO WHILE ! CUST->( Eof() )
      ? CUST->Name, CUST->City
      CUST->( Skip() )
   ENDDO

   CUST->( dbCloseArea() )
   oRdd:End()

return nil

Notes

Veja Também