Hola a todos.
El otro dia bajé del sitio de Patrick ( fivewin.info creo ) una clase para crear ODBC desde la aplicacion ( TDSN ), necesitaba hacerlo para una base en ACCESS, pero desafortunadamente no funcionó.
Existe una clase mejorada para hacer esta tarea, o se debe hace de otra forma.
De antemano agradezco su ayuda.
Saludos
PD. Por error meti este post en el foro ingles....disculpas !!
TDsn y TMyDsn ( crear ODBC desde aplicacion )
TDsn y TMyDsn ( crear ODBC desde aplicacion )
Julio Gonzalez V.
RANDOM S.A.
SISTEMICA S.A.
RANDOM S.A.
SISTEMICA S.A.
Amigo
No te preocupes
Usteds podes tentar mi bilbioteca
Mira la explicacion em:
Explicacion en Portugues
E baja la lib en:
http://www.shoppmarketing.com/forum/hbado.zip
Tiene exemplo de uso con mysql, sql-server, access, xml, firebird sem uso de ODBC, és praticamente nativo.
No te preocupes
Usteds podes tentar mi bilbioteca
Mira la explicacion em:
Explicacion en Portugues
E baja la lib en:
http://www.shoppmarketing.com/forum/hbado.zip
Tiene exemplo de uso con mysql, sql-server, access, xml, firebird sem uso de ODBC, és praticamente nativo.
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Puedes hacerlo utilizando la funcion SQLConfigDataSource de ODBCCP32.dll
cDriver es el nombre del driver por ejemplo "SQL Server", etc
Los atributos varian dependiendo del controlador ODBC, los tipicos son DSN,SERVER, DESCRIPTION, DATABASE, ...
Code: Select all
#include "Fivewin.ch"
FUNCTION CfgOdbc()
LOCAL nRet,cDriver,cAttribute
cDriver :="Client Access ODBC Driver (32-bit)"
cAttribute:="DSN=BIEL"+Chr(0)+"DESCRIPTION=descipcion"+Chr(0)+"SERVER=192.168.101.1"
nRet:=CrtDtaSrc(0,1,cDriver, cAttribute )
//nRet->0 no se ha creado, 1 creado ok
RETURN NIL
DLL32 FUNCTION CrtDtaSrc(hWnd AS LONG, nRequest AS LONG, @cDriver as STRING , @cAttributes as STRING) ;
AS _INT PASCAL FROM "SQLConfigDataSource" LIB "ODBCCP32"
Los atributos varian dependiendo del controlador ODBC, los tipicos son DSN,SERVER, DESCRIPTION, DATABASE, ...
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
julio, aki dejo el ejemplo, ojala a alguien mas le sea de utilidad.
como no supe como subir el archivo pues aki lo dejo, se que no es lo mejor.
#include "FiveWin.CH"
#include "Ado.CH"
// aDato := "MiDatabase.MDB"
STAT FUNC Importa(aDato)
LOCAL oConexionAdo := TOLEAUTO():New("adodb.connection")
LOCAL oRS := TOLEAUTO():New("adodb.recordset")
LOCAL oOpen, Rec:=0, cFile := Alltrim(aDato[1]),;
aFields:={}, cCod:=""
oOpen := "Provider= MicroSoft.Jet.OLEDB.4.0;Data Source="+cFile+";"
AADD(aFields,{"Color", "C_Grade"})
AADD(aFields,{"SCI", "SCI" })
AADD(aFields,{"Length", "LEN" })
oConexionAdo:Open(oOpen)
oRS:LockType := adLockOptimistic
oRS:CursorType := adOpenKeyset
oRS:ActiveConnection(oConexionAdo)
oRS:Source := "Select * from hvidata" // tu query aqui
oRS:Open()
oRS:MoveFirst()
DO WHILE !oRS:eof()
cCod := oRS:Fields("Bale ID"):Value // tomamos valor de la tabla de access del campo Bale ID
FOR x := 1 TO LEN(aFields)
(oDBF)->&(aFields[x,2]):=oRS:Fields(aFields[x,1]):Value // tomo los valores de access de _ y los pongo en la dbf de acuerdo al nombre en el arreglo
NEXT
oRS:MoveNext()
ENDDO
oRS:Close()
oConexionAdo:Close()
RETURN NIL
salu2
paco
como no supe como subir el archivo pues aki lo dejo, se que no es lo mejor.
#include "FiveWin.CH"
#include "Ado.CH"
// aDato := "MiDatabase.MDB"
STAT FUNC Importa(aDato)
LOCAL oConexionAdo := TOLEAUTO():New("adodb.connection")
LOCAL oRS := TOLEAUTO():New("adodb.recordset")
LOCAL oOpen, Rec:=0, cFile := Alltrim(aDato[1]),;
aFields:={}, cCod:=""
oOpen := "Provider= MicroSoft.Jet.OLEDB.4.0;Data Source="+cFile+";"
AADD(aFields,{"Color", "C_Grade"})
AADD(aFields,{"SCI", "SCI" })
AADD(aFields,{"Length", "LEN" })
oConexionAdo:Open(oOpen)
oRS:LockType := adLockOptimistic
oRS:CursorType := adOpenKeyset
oRS:ActiveConnection(oConexionAdo)
oRS:Source := "Select * from hvidata" // tu query aqui
oRS:Open()
oRS:MoveFirst()
DO WHILE !oRS:eof()
cCod := oRS:Fields("Bale ID"):Value // tomamos valor de la tabla de access del campo Bale ID
FOR x := 1 TO LEN(aFields)
(oDBF)->&(aFields[x,2]):=oRS:Fields(aFields[x,1]):Value // tomo los valores de access de _ y los pongo en la dbf de acuerdo al nombre en el arreglo
NEXT
oRS:MoveNext()
ENDDO
oRS:Close()
oConexionAdo:Close()
RETURN NIL
salu2
paco