FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ADO: Revisando las tablas de una base de datos
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
ADO: Revisando las tablas de una base de datos
Posted: Thu May 02, 2013 10:15 PM
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "xbrowse.ch"
#include "xhb.ch"

function Main()

   local oCon := TOleAuto():New( "ADODB.Connection" )
   local oCat := TOleAuto():New( "ADOX.Catalog" )
   local oRs  := TOleAuto():New( "ADODB.Recordset" )
   local aTables := {}, cTable, oError

   try
      oCon:Open( "Provider='Microsoft.Jet.OLEDB.4.0'; Data Source='xbrtest.mdb';" )
   catch oError
      MsgInfo( oError:Description )
   end   

   oCat:ActiveConnection = oCon
   oRs = oCon:OpenSchema( 20 ) // adSchemaTables
   
   while ! oRs:Eof()
      AAdd( aTables, oRs:Fields:Item( "Table_Name" ):Value )
      oRs:MoveNext()
   end   
   
   XBROWSER aTables SELECT cTable := aTables[ oBrw:nArrayAt ]

   oRs:Close()
   oRs:CursorType     = 1        // opendkeyset
   oRs:CursorLocation = 3        // local cache
   oRs:LockType       = 3        // lockoportunistic

   if ! Empty( cTable )
      try
         oRs:Open( "SELECT * FROM " + cTable, oCon ) // Password="abc" )
      catch oError
         MsgInfo( oError:Description )
      end   

      XBrowser( oRS )
   endif
   
return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: ADO: Revisando las tablas de una base de datos
Posted: Fri May 03, 2013 09:12 AM
Esta es una versión alternativa usando las funciones más recientes implementadas en FWH:

Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "xbrowse.ch"

function Main()

   local oCn, oRs, cTable

   oCn   := FW_OpenAdoConnection( "Provider='Microsoft.Jet.OLEDB.4.0'; Data Source='xbrtest.mdb';" )

   if oCn != nil
      oRs   := oCn:OpenSchema( 20 )

      #ifdef __XHARBOUR__
         oRs:cClassName := "RECORDSET"  // due to a bug in xbrowse.prg. Fixed in FWH13.05
      #endif

      XBROWSER oRs TITLE "Select a table" ;
         COLUMNS { "TABLE_NAME" } SELECT ( cTable := oBrw:aCols[ 1 ]:Value )
         
      oRs:Close()
      
      if ! Empty( cTable )
         if ' ' $ cTable
            cTable   := '[' + cTable + ']'
         endif
         if ( oRs := FW_OpenRecordSet( oCn, cTable ) ) != nil
            XBROWSER oRs AUTOSORT
            oRs:Close()
         else
            ? "Failed to open " + cTable
         endif
      endif
      oCn:Close()
   else
      ? "Connection Fail"
   endif

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion