FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Mostrar base .MDB
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Mostrar base .MDB
Posted: Thu Aug 19, 2010 12:13 PM
Hola a todos

Necesito mostrar el contenido de un base .MDB, en el foro he encontrado un ejemplo de Patricio, pero me sale error en la ejecución:
Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "xBrowse.ch"
*
FUNCTION Main()
 LOCAL oWnd,oRSet, oBrw

TRY
 oConnection := CreateObject( "ADODB.Connection" )
 CATCH oError
   MsgStop( "No se ha podido crear el 'ADODB.Connection' "+ oError:Description )
   RETURN
END

sConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\SISTEMAS\DATA\RELOJ.MDB; Persist Security Info=False"

TRY
 oConnection:Open( sConnectionString )
CATCH oError
   MsgStop( "No se ha podido conectar con la base "+ oError:Description )
   RETURN
END

TRY
    oRSet := CreateObject( "ADODB.RecordSet" )
CATCH oError
   MsgStop( "No se ha podido crear el RECORDSET"+ oError:Description )
   RETURN
END

oRSet:CursorLocation   := adUseClient  //Error en ejecucion
oRSet:LockType         := adLockReadOnly //Error en ejecucion
oRSet:CursorType       := adOpenForwardOnly //Error en ejecucion
oRSet:ActiveConnection( oConnection )

sSQLQuery := "SELECT * FROM TABLA"
  
TRY
    oRSet:Open( sSQLQuery, oConnection )
CATCH oError
   MsgStop( "No se ha podido crear el consulta SQL "+ oError:Description )
   RETURN
END

oRSet:MoveFirst()
DO WHILE !oRSet:EOF
    if oRSet:Fields(0):Value = "xxx"
        //BLA..
    endif
   oRSet:MoveNext()
ENDDO
oRSet:Close()

Return Nil

Descargar la base desde: http://200.58.169.10/files/reloj.rar

Gracias por la aydua

Saludos

Adhemar
Saludos,



Adhemar C.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Mostrar base .MDB
Posted: Thu Aug 19, 2010 12:16 PM

Adhemar

Cual error?

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Mostrar base .MDB
Posted: Thu Aug 19, 2010 12:19 PM

Gracias Daniel por contestar

Sale el siguiente error: No existe la variable: adUseClient

Saludos

Adhemar

Saludos,



Adhemar C.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Mostrar base .MDB
Posted: Thu Aug 19, 2010 12:48 PM

Adhemar

Te falta el include de ado

include "ado.ch"

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Mostrar base .MDB
Posted: Thu Aug 19, 2010 12:52 PM

Gracias Daniel

Ahora sale otro error:

No se ha podido crear el consulta SQL DISP_E_UNKNOWNNAME

Saludos

Adhemar

Saludos,



Adhemar C.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Mostrar base .MDB
Posted: Thu Aug 19, 2010 01:01 PM

Adhemar

Al paracer TABLA no existe.. verificaste el nombre de tabla en el .MDB ??

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Mostrar base .MDB
Posted: Thu Aug 19, 2010 01:06 PM

Daniel

En realidad, no se que nombre tengan las tablas. No se como ver la estructura

Saludos

Adhemar

Saludos,



Adhemar C.
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Mostrar base .MDB
Posted: Thu Aug 19, 2010 01:17 PM

Adhemar

abre el archivo que publicaste... alli te aparecen todas las tablas

Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Mostrar base .MDB
Posted: Thu Aug 19, 2010 01:30 PM
Hola

Si es el sistema de Horas BiaCaptor, esto te puede servir

Code (fw): Select all Collapse
sSQLQuery := "SELECT * FROM ATTPARAM"
TRY
    oRecordSet:Open( sSQLQuery, oConnection )
CATCH oError
   MsgStop( "No se ha podido crear el RECORDSET"+ oError:Description )
   RETURN
END

oRecordSet:MoveFirst()            // probably redundant
DO WHILE !oRecordSet:EOF
    if oRecordSet:Fields(0):Value = "MinsOutOverTime"
        nMinsOutOverTime := Val(oRecordSet:Fields(2):Value)
        exit
    endif
   oRecordSet:MoveNext()
ENDDO
oRecordSet:Close()


sSQLQuery := "SELECT * FROM USERINFO"
TRY
    oRecordSet:Open( sSQLQuery, oConnection )
CATCH oError
   MsgStop( "No se ha podido crear el RECORDSET"+ oError:Description )
   RETURN
END

dbCreate( "usrpaso", {{ "cod", "c", 5, 0 },;
                             { "nom", "c", 20,0 },;
                             { "dep", "n", 5, 0 },;
                             { "uid", "n", 5, 0 }            }, "DBFCDX" )

USE usrPaso ALIAS "USR" NEW VIA "DBFCDX"
INDEX ON field->cod TAG "COD" TO usrpaso
INDEX ON field->DEP TAG "DEP" TO usrpaso
set index to usrpaso

// navigate through recordset
oRecordSet:MoveFirst()            // probably redundant
DO WHILE !oRecordSet:EOF
    if oRecordSet:Fields(19):Value = 0

        if cCodUsr = NIL .or. cCodUsr = oRecordSet:Fields(1):Value
            Usr->( dbAppend() )
            Usr->Uid := oRecordSet:Fields(0):Value
            Usr->cod := oRecordSet:Fields(1):Value
            Usr->nom := oRecordSet:Fields(3):Value
            Usr->dep := oRecordSet:Fields(16):Value
        endif

    endif
   oRecordSet:MoveNext()
ENDDO

oRecordSet:Close()

sSQLQuery := "SELECT * FROM DEPARTMENTS"
TRY
    oRecordSet:Open( sSQLQuery, oConnection )
CATCH oError
   MsgStop( "No se ha podido crear el RECORDSET DEPARTMENTS"+ oError:Description )
   RETURN
END

dbCreate( "deppaso", {{ "depid",  "C", 5, 0 },;
                             { "depnom", "c", 30,0 },;
                             { "depsup", "n", 5, 0 }     }, "DBFCDX" )

USE depPaso ALIAS "DEP" NEW VIA "DBFCDX"

oRecordSet:MoveFirst()
DO WHILE !oRecordSet:EOF
    dep->( dbAppend() )
    dep->depid :=  STR(oRecordSet:Fields(0):Value,5)
    dep->depnom := oRecordSet:Fields(1):Value
    dep->depsup := oRecordSet:Fields(2):Value
   oRecordSet:MoveNext()
ENDDO

oRecordSet:Close()
dbCreate( "detpaso", {{ "userid", "N", 5, 0 },;
                             { "Nombre", "C",20,0 },;
                             { "fecha", "d", 8,0 },;
                             { "Entra1", "c", 5, 0},;
                             { "entrada1", "c", 5,0 },;
                             { "Sale1", "c", 5, 0},;
                             { "salida1", "c", 5,0 },;
                             { "Entra2", "c", 5, 0},;
                             { "entrada2", "c", 5,0 },;
                             { "Sale2", "c", 5, 0},;
                             { "salida2", "c", 5,0 },;
                             { "Extra", "c", 5,0 }                           }, "DBFCDX" )

USE detPaso ALIAS "detalle" NEW VIA "DBFCDX"
INDEX ON str(field->userid,5) + DTOS(FIELD->FECHA) TAG "PASO" TO detpaso
set index to detpaso





Uploaded with ImageShack.us
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Mostrar base .MDB
Posted: Thu Aug 19, 2010 03:41 PM

Patricio

Efectivamente es de un sistema de Reloj pero no del que me indicas, se trata del sistema V2008 SDK Version
Para Reloj biométrico.

Gracias por la ayuda

Saludos

Adhemar

Saludos,



Adhemar C.
Posts: 115
Joined: Sat Mar 07, 2009 09:36 PM
Re: Mostrar base .MDB
Posted: Tue Aug 24, 2010 01:40 AM
Code (fw): Select all Collapse
//--------------------------------------------------------------------------//
// Modulo de Creacion de Base de Datos y Tablas
// Autor Bellucci Juan Carlos Mat 35.450 Escobar Buenos Aires 
//--------------------------------------------------------------------------//

  #Include "Fivewin.ch"
  #Include "xbrowse.ch"
  #Include "Ado.ch"
  //--> Var
  Static x
  Static m1     := {}
  Static aArray := {}


//--------------------------------------------------------------------------//
  Function Main()
           Local oCone
//-------------------------------------------------------------------//
            oCone:=tOleAuto():new("ADODB.connection")
            oCone:open("Provider= MicroSoft.Jet.OLEDB.4.0;Data Source=.\Bases\Archivo.mdb;")
           //--------------------------------------------------------------//
            If Empty(oCone)
               MsgAlert(" No se Pudo Establecer la Conexion Con La Base De Datos..","Atencion")
               Return(Nil)
            EndIf
          //--------------------------------------------------------------//
           Articulo( oCone )
   Return( Nil )
//--------------------------------------------------------------------------//
  Function Articulo( oCone )
           Local oForma
           Local oFont1
           Local oBrw
           Local nFor := 0
           Local oCol
           Local aCols := {}
           Local oBar
           Local oStLista
           Local oStModi
           
           PRIVATE m1[6] //--> Matriz para los Gets.
           //PRIVATE aArray := { { ( m1[1] := Space(08)), (m1[2] := Space(20)), ;
           //                      ( m1[3] := Space(30)), (m1[4] := Space(10)), ;
           //                      ( m1[5] := Space(20)),( m1[6] := Space(10)) } }

           //--
             MENU oStLista POPUP 2007
                  MENUITEM "Listado &General de Precios " ;
                           RESOURCE "Impre16"             ;
                           MESSAGE " Listado Genenral de Precios "  
                  //--
                    Separator
                  //--
                  MENUITEM "Listado &Parcial de Precios"
                  //--        
                    Separator 
                  //--       
                   MENUITEM "Listado de Precios Por &Rubro"
                  //--                                     
                    Separator                               
                  //--
                  MENUITEM "Listado de Existencias de Stock"
                  //--                                     
                    Separator                               
                  //-- 
                  MENUITEM "Listado de Faltantes de Stock"
                   //--    
             ENDMENU   
           //--
               MENU oStModi POPUP 2007
                  MENUITEM "Modificacion &General de Precios "
                  //--
                    Separator
                  //--
                   MENUITEM "Modificar Precios Por &Rubro"
                  //--                                     
                    Separator                               
                  //--
                  MENUITEM "Modificar Ganancias Por Fuera de Estacion "
             ENDMENU         
           //--         
           CargaStock(oCone)

               DEFINE FONT oFont1 NAME GetSysFont() SIZE 0,-14
               DEFINE WINDOW oForma FROM 97,12 TO 702,1014 PIXEL TITLE "Archivo Maestro de Articulos"
                     //--
                       oForma:SetFont(oFont1)
                       Set Message to ("") Of oForma 2007 FONT oFont1
                     //--
                       DEFINE BUTTONBAR oBar _3D SIZE 60,40 OF oForma 2007
                     //--
                       DEFINE BUTTON RESOURCE "SaleA","SaleB" OF oBar  ;
                              TOOLTIP " Salir "                        ;
                              NOBORDER MESSAGE "Salir de Stock"        ;
                              ACTION oForma:End()
                     //--
                       DEFINE BUTTON RESOURCE "Nuevo"    OF oBar       ;
                              TOOLTIP " Actualizar "                   ;
                              NOBORDER MESSAGE "Actualizar Archivo de Stock"        ;
                              ACTION ( ActuStock(oCone,;
                                       aArray[ oBrw:nArrayAt,2 ] ),;
                                       CargaStock(oCone),;
                                       oBrw:Refresh()   ,;
                                       oForma:Refresh()   ,;
                                       oForma:UpDate() )
                     //--
                      DEFINE BUTTON RESOURCE "Editar" OF oBar GROUP             ;
                              TOOLTIP " Modificaciones de Precios "             ;
                              NOBORDER MESSAGE "Modificaciones de Precios"      ;
                              MENU oStModi
                     //--
                       DEFINE BUTTON RESOURCE "Impre" OF oBar GROUP             ;
                              TOOLTIP " Listados y Reportes "                   ;
                              NOBORDER MESSAGE "Listados y Reportes de Stock"   ;
                              MENU oStLista
                              
                     //--
                       oBrw := TXBrowse():New( oForma )
                       oBrw:nTop     :=  1
                       oBrw:nLeft    :=  1
                       oBrw:nBottom  := 546
                       oBrw:nRight   := 995

                       oBrw:nColDividerStyle    := LINESTYLE_BLACK
                       oBrw:nRowDividerStyle    := LINESTYLE_BLACK
                       oBrw:lFooter             := .t.
                       oBrw:nFooterLines        := 1
                       oBrw:nHeaderLines        := 2
                       oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLROW //---// Estilo de Barra de Seleccion
                       oBrw:bClrSelFocus        := {|| { CLR_WHITE, nRGB( 000, 100, 255 ) } }  //--> color de la barra de selecion.
                       oBrw:nRowHeight := 20  //--> Altura de las Lineas del xBrowse.
                       oBrw:lHScroll := .T.   //--> Scroll Horizontal.
                       oBrw:lVScroll := .T.   //--> Scroll Horizontal.
                     **--------**
                       oBrw:SetArray( aArray, .T. )
                     **--------**
                      // oBrw:CreateFromResource( 161 )
                       oBrw:CreateFromCode()
                    **--------**
                    // oBrw:={|nKey| IIF(nKey=VK_RETURN, ( Carga( oBrw, aArray )),.t. ) }
                    // oBrw:={|nKey| IIF(nKey=VK_RETURN, ( MsgAlert( aArray[oBrw:nArrayAt,1 ] )),.t. ) }
                    //  oBrw:bLDblClick := { || ( CarregaGets(), vTarefa:= "A", lAtvBtn := .T., oBrw:Disable(), oForma:UpDate() ) }
                    *****--- Columnas ---*****
                    //--
                      oBrw:aCols[ 1 ]:cHeader := "Ide Art"
                      oBrw:aCols[ 1 ]:nDataStrAlign := AL_CENTER
                      oBrw:aCols[ 1 ]:nHeadStrAlign := AL_CENTER
                    //--
                      oBrw:aCols[ 2 ]:cHeader := "Codigo"
                      oBrw:aCols[ 2 ]:nDataStrAlign := AL_LEFT
                      oBrw:aCols[ 2 ]:nHeadStrAlign := AL_LEFT
                    //--
                      oBrw:aCols[ 3 ]:cHeader := "Detalle"
                      oBrw:aCols[ 3 ]:nDataStrAlign := AL_LEFT
                      oBrw:aCols[ 3 ]:nHeadStrAlign := AL_LEFT
                    //--
                      oBrw:aCols[ 4 ]:cHeader := "Existencia"
                      oBrw:aCols[ 4 ]:nDataStrAlign := AL_RIGHT
                      oBrw:aCols[ 4 ]:nHeadStrAlign := AL_RIGHT
                    //--
                      oBrw:aCols[ 5 ]:cHeader := "Rubro"
                      oBrw:aCols[ 5 ]:nDataStrAlign := AL_LEFT
                      oBrw:aCols[ 5 ]:nHeadStrAlign := AL_LEFT
                    //--
                      oBrw:aCols[ 6 ]:cHeader := "Precio"
                      oBrw:aCols[ 6 ]:nDataStrAlign := AL_RIGHT
                      oBrw:aCols[ 6 ]:nHeadStrAlign := AL_RIGHT
                    //--
                      FOR nFor := 1 to Len( aCols )
                          oBrw:aCols[ nFor ]:lAllowSizing := .T.
                          oBrw:aCols[ nFor ]:bRClickHeader = { || nil }
                      NEXT
                    //--

                       oForma:oClient := oBrw
                     //--
               ACTIVATE WINDOW oForma VALID Salir()
               oFont1:End()


  Return( Nil )
//--------------------------------------------------------------------------//
// Salir de Stock
//--------------------------------------------------------------------------//
  Static Function Salir()
         Local nConta := Len(aArray)
         Local I
         For I := 1 To nConta
             ADEL(aArray , I )
             aSize(aArray, Len(aArray) - 1 )
         Next I
         GlobalFree()
         ResAllFree()
         Release All

  Return( .t. )
//--------------------------------------------------------------------------//
  Static Function CargaStock(oCone)
         Local oError
         Local Data1
         Local nRegi  := 0
         Local A      := 0
         Local xNume  := ""
         Local nConta := Len(aArray)
         Local I
         For I := 1 To nConta
             ADEL(aArray , I )
             aSize(aArray, Len(aArray) - 1 )
         Next I


           //--------------------------------------------------------------//
             Data1:=tOleAuto():New("ADODB.RecordSet")
             Data1:CursorLocation   := adUseClient
             Data1:CursorType       := adOpenDynamic
             Data1:LockType         := adLockOptimistic
             Data1:ActiveConnection := oCone
             Data1:Source           := "SELECT * FROM STOCK"
           //--------------------------------------------------------------//
             TRY
               Data1:Open()
               CATCH oError
               MsgStop( "No se ha podido abrir la Tabla de Stock !"," Atencion  ")
               Return(Nil)
             END
           //--------------------------------------------------------------//
             If Data1:RecordCount > 0
                nRegi := Data1:RecordCount
                Data1:MoveFirst()
                For A := 1 To nRegi
                   m1[1] := StrZero(Data1:Fields("Numero"):Value,8)
                   m1[2] := SubStr(Data1:Fields("Codigo"):Value+Space(20),1,20)
                   m1[3] := SubStr(Data1:Fields("Detalle"):Value+Space(30),1,30)
                   m1[4] := Str(Data1:Fields("Actual"):Value,10,2)
                   m1[5] := SubStr(Data1:Fields("Rubro"):Value+Space(20),1,20)
                   m1[6] := Str(Data1:Fields("Venta"):Value,10,2)
                   AADD( aArray, { m1[1], m1[2], m1[3], m1[4], m1[5], m1[6] } )
                   Data1:MoveNext()

               Next A
               Data1:Close()
               aSort(aArray,,,{|x,y| x[1] < y[1]})
           Else
               m1[1] := Space(08)
               m1[2] := Space(20)
               m1[3] := Space(30)
               m1[4] := Space(10)
               m1[5] := Space(20)
               m1[6] := Space(10)
               AADD( aArray, { m1[1], m1[2], m1[3], m1[4], m1[5], m1[6] } )
               aSort(aArray,,,{|x,y| x[1] < y[1]})
           EndIf
         //--
  Return( Nil )
//--------------------------------------------------------------------------//


este codigo funciona bien Probalo
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Mostrar base .MDB
Posted: Tue Aug 24, 2010 11:41 AM

Gracias a todos por la ayuda

Se puede modificar o eliminar registro de la base .MDB?
Cómo llegar a un registro que cumpla con una condición?

Saludos

Adhemar

Saludos,



Adhemar C.
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: Mostrar base .MDB
Posted: Tue Aug 24, 2010 07:20 PM

una base de datos de acces acepta instrucciones basicas de sql, como ,
insert,update,delete, etc.
no le veo problema para darle mantenimiento a sus registros.
saludos..

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 1076
Joined: Fri Oct 07, 2005 10:41 PM
Re: Mostrar base .MDB
Posted: Tue Aug 24, 2010 07:41 PM

LA manera de adicionar, eliminar, modificar una fila en una tabla de access (MDB) es con las instrucciones de SQL

INSERT INTO <tabla> (field1, field2, field2) (dato1, dato2, dato3)
UPDATE <tabla> (field1, field2, field2) (dato1, dato2, dato3) WHERE field1 = 1234
DELETE <tabla> WHERE field1 = 1234

William, Morales

Saludos



méxico.sureste
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Mostrar base .MDB
Posted: Tue Aug 24, 2010 08:29 PM

Gracias William

Haré pruebas

Saludos

Adhemar

Saludos,



Adhemar C.

Continue the discussion