Contribución al foro experiencia sobre Bases.mdb

Post Reply
juan carlos bellucci
Posts: 115
Joined: Sat Mar 07, 2009 9:36 pm
Location: Argentina
Contact:

Contribución al foro experiencia sobre Bases.mdb

Post by juan carlos bellucci »

////////////////////////////////////////////////////////////////////////////
// //
// Modulo_____: Principal //
// Autor______: Ing.Bellucci Juan Carlos //
// Bases______: Acces xxx.mdb //
// Tipo_______: Orientado a Objetos //
// //
////////////////////////////////////////////////////////////////////////////

#Include "Fivewin.ch"
#Include "Ado.ch"
#include 'FILEIO.CH'



Static oCone

//////////////////////////////////////////////////////////////////
// Ejemplo de uso
//////////////////////////////////////////////////////////////////

// xBase = nombre de su base de datos que elija

// CreaBases("xBase") // se creara una base.mdb de datos en la carpeta data

// Si se trata de una base que tiene pasword

//
// oCone = Conexion tipo dsn para la base
// AbreBase funcion de 2 parametros
// 1 = nombre de la base
// 2 = clave de no existir colocar ""

// oCone := AbreBase("Caja","rm1952" )
// Una vez abierta la base se crean todas las tablas que desee pero
// en forma individual obvio

// CreaArticulos( oCone ) // creamos la tabla de articulos

// Esta funcion ademas permite abrir una base existente y agregar o
// borrar tablas. solo hay que colocar la base en la carpeta data.

// agregar al su sistema el modulo funci.c de libre distribucion.


//--------------------------------------------------------------------------//
// Method Principal( )
//--------------------------------------------------------------------------//
Function Main()
Local Clave := "su_clave"
Local cBase := "Archivo"

Local Data1


/////////////////////////////////////////////////////////
// Primer paso Crear la Base
/////////////////////////////////////////////////////////

CrearLaBase(cBase) // esta funcion crea la base si no existe

/////////////////////////////////////////////////////////
// Segundo paso Abrir la Base para su uso
/////////////////////////////////////////////////////////

oCone := AbreBase(cBase,Clave )

If Empty( oCone )
MsgAlert(" No se Pudo Abrir la Base de Datos..."," Error ")
Return( Nil )
EndIf

/////////////////////////////////////////////////////////
// Tercer Crear las tablas para su uso
/////////////////////////////////////////////////////////

CreaArticulos( oCone ) // aqui puede poner todas tablas
// que desea crear.

/////////////////////////////////////////////////////////
// Cuarto paso Abrir la tabla para su uso
/////////////////////////////////////////////////////////

Data1 := Usar(oCone,"Select * from Articulos where "+;
"Borrado <> 'S' Order by Articulo ;"

If !Empty( Data1 )
xBrowse( Data1 )
Data1:Close()
EndIf
/////////////////////////////////////////////////////////
// Quinto Cierre la Conexion
/////////////////////////////////////////////////////////

oCone:Close() // al finalizar el programa

/////////////////////////////////////////////////////////

Return( Nil )
//--------------------------------------------------------------------------//
//--------------------------------------------------------------------------//
// Method CreaArticulos( oCone )
//--------------------------------------------------------------------------//
Static Function CreaArticulos( oCone )
Local Data1
Local oError
Data1:=tOleAuto():New("ADODB.RecordSet")
Data1:CursorLocation := adUseClient
Data1:CursorType := adOpenDynamic
Data1:LockType := adLockOptimistic
Data1:ActiveConnection := oCone
Data1:Source := "CREATE TABLE ARTICULOS(" + ;
" Registro COUNTER, " + ;
" Articulo TEXT(100), " + ;
" Fecha DATE, " + ;
" Descripcion TEXT(100)," + ;
" Marca TEXT(50), " + ;
" Color TEXT(50), " + ;
" Cantidad SINGLE, " + ;
" Bajas SINGLE, " + ;
" Valor SINGLE, " + ;
" Proveedor TEXT(100), " + ;
" Rubro TEXT(30), " + ;
" Borrado TEXT(1), " + ;
" Operador TEXT(30), " + ;
" OFecha DATE, " + ;
" OHora TEXT(5) )"
TRY
Data1:Open()

CATCH oError
Return( "" ) // Solo si Hay error
END
//-------------------//
Return( Nil )
//--------------------------------------------------------------------------//
// Esta Informacion esta a disposicion del foro de Fivewin.
// en agradecimiento a la gente de Fivetech que tanto hace por nosotros.
// Desde Argentina Buenos Aires Ciudad de Escobar Juan Carlos.
//--------------------------------------------------------------------------//



/////////////////////////////////////////////////////////////////////////////////////////////////////////
// este es el modulo funci.prg que debe ser compilado por separado.
/////////////////////////////////////////////////////////////////////////////////////////////////////////






////////////////////////////////////////////////////////////////////////////
// //
// Modulo_____: Funci.prg //
// Autor______: Bellucci Juan Carlos //
// Bases______: Acces xxx.mdb //
// Tipo_______: Orientado a Objetos //
// //
////////////////////////////////////////////////////////////////////////////

#Include "Fivewin.ch"
#Include "Ado.ch"
#include 'FILEIO.CH'
//--------------------------------------------------------------------------//
// Este Modulo debe compilarse tal como esta he incluir en el proyecto
//--------------------------------------------------------------------------//
//--------------------------------------------------------------------------//
//--------------------------------------------------------------------------//
// Crea Base de Datos
//--------------------------------------------------------------------------//
Function CreaBases(cBase)
Local oCatalog
Local oTable
Local oColumn
Local oKey
cBase := Alltrim(cBase)+".mdb"
lMKDir("Data")
If !File(".\Data\"+cBase)
oCataLog := CreateObject("ADOX.Catalog")
oCataLog:Create("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type = 4 ;Data Source=.\Data\"+cBase)
EndIf

Return( nil )
//--------------------------------------------------------------------------//
// Method Abre base de datos
//--------------------------------------------------------------------------//
Function AbreBase( cBase, cPass )
Local oBase
Local oErr
cBase := ".\Data\"+Alltrim(cBase)+".mdb"

If !File(cBase)
MsgStop("Ha Ocurrido Un Error...No Se Esta La Base de Datos..."," Error " )
Return(Nil)
EndIf

Try
oBase := CreateObject( "ADODB.Connection" )
oBase:ConnectionString := "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="+cBase+";Pwd=" + cPass
oBase:Open()
CATCH oErr
MsgAlert(" No se Pudo Establecer la Conexion Con La Base De Datos..","Atencion")
Return(Nil)
END

Return( oBase )
//--------------------------------------------------------------------------//
// Method AbreTabla()
//--------------------------------------------------------------------------//
Function Usar(oCone,Consulta)
Local xData,oError
//--------------------------------------------------------------//
xData:=tOleAuto():New("ADODB.RecordSet")
xData:CursorLocation := adUseClient
xData:CursorType := adOpenDynamic
xData:LockType := adLockPessimistic
xData:ActiveConnection := oCone
xData:Source := Consulta
//--------------------------------------------------------------//
TRY
xData:Open()
CATCH oError
Return(Nil)
END
//--------------------------------------------------------------//
Return( xData )
//--------------------------------------------------------------------------//
//Method Ir Al Primer Registro
//--------------------------------------------------------------------------//
Function Primero(oData)
If oData:RecordCount > 0
oData:MoveFirst()
EndIf
Return( oData )
//--------------------------------------------------------------------------//
// Method Ir Al Registro Anterior
//--------------------------------------------------------------------------//
Function Anterior(oData)
If oData:RecordCount > 0
oData:MovePrevious()
If oData:Bof()
oData:MoveFirst()
EndIf
EndIf
Return( oData )
//--------------------------------------------------------------------------//
// Method Ir Al Registro Siguiente
//--------------------------------------------------------------------------//
Function Siguiente(oData)
If oData:RecordCount > 0
oData:MoveNext()
If oData:Eof()
oData:MoveLast()
EndIf
EndIf
Return( oData )
//--------------------------------------------------------------------------//
// Method Ir Al Ultimo Registro
//--------------------------------------------------------------------------//
Function Ultimo(oData)
If oData:RecordCount > 0
oData:MoveLast()
EndIf
Return( oData )
//--------------------------------------------------------------------------//
User avatar
Sistem
Posts: 224
Joined: Sun May 13, 2012 7:52 am

Re: Contribución al foro experiencia sobre Bases.mdb

Post by Sistem »

ola juan carlos

pregunta tonta...
microsoft access necesita tener instalado?
es más rápido que los DBFs?

gracias
FWH2008 | xHarbour | BCC74 | SQLRDD
juan carlos bellucci
Posts: 115
Joined: Sat Mar 07, 2009 9:36 pm
Location: Argentina
Contact:

Re: Contribución al foro experiencia sobre Bases.mdb

Post by juan carlos bellucci »

No es necesario tener instalado acces... si es necesario tener instalado ODBC Normalmente esta instalado con el paquete windows.

el tema de velocidad depende de la maquina y o el tipo de redes donde corra de todas maneras ado en mas rapido.
juan carlos bellucci
Posts: 115
Joined: Sat Mar 07, 2009 9:36 pm
Location: Argentina
Contact:

Re: Contribución al foro experiencia sobre Bases.mdb

Post by juan carlos bellucci »

En la próxima entrega : agregar - borrar - modificar y trabajar con xbrowse de manera segura usando un arreglo de memoria.
carlos moc
Posts: 3
Joined: Mon Oct 23, 2017 1:47 pm

Re: Contribución al foro experiencia sobre Bases.mdb

Post by carlos moc »

No teste que fiz aqui eu consigo conectar com o BD mas o "select * from table" sempre retorna vazio sendo que tenho 44332 registros o que pode ser ??
Post Reply