Conexion Activa SQL en VFP 7

15/11/2005 - 16:30 por Jose Valverde | Informe spam
Buenas amigos de potal fox, gracias a sus consejos he podido seguir
adelante con mi proyecto de crear una DLL en FOX utilizando ADO, pero
tengo un problema. al trabajar con ADO no puedo mantener la conexion
activa,por ej:
la declaro
PUBLIC VG_SQLCONN AS ADODB.CONNECTION
despues la seteo
VG_SQLCONN = createobject("ADODB.CONNECTION")

pero despues de hacer el VG_SQLCONN.OPEN(cadenaconexion) y ulilizarla para
realizar un select o ejecutar un sp se pierde esta conexion.

Esto lo he realizado en VISUAL BASIC y la conexion no se a perdido.
agradeceria mucho sus consejos
gracias de antemano






-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
 

Leer las respuestas

#1 Mauricio Pulla
16/12/2005 - 23:03 | Informe spam
Hola Jose.
Porque tener la connexcion siempre abierta...?
Yo la abro solo cuando necesito traer datos, esta dll esta hecha en VFP 8.0,
si quiere probarla en VFP 7.0 quita el TRY CATCH ENTRY, cambia el
CursorAdapter por CURSORTOXML( ).

Espero te sirva.

Saludos.
Mauricio Pulla.
Cuenca-Ecuador

Ej.
DEFINE CLASS LayerMain AS Session
PROTECTED cCnnString
PROTECTED cFileIniName
PROTECTED oCnn
cCnnString = ""
cFileIniName = ""
oCnn = NULL
oCmd = Null
Name = "LayerMain"

PROCEDURE FileIniRead &&Ler archivo ini
LPARAMETER tcFileName As String, tcSection As String, tcEntry As String
HELPSTRING "Lee archivos ini si no existe el archivo, la sección o la
entrada, retorna .NULL."
LOCAL lcIniValue, lnResult, lnBufferSize
DECLARE INTEGER GetPrivateProfileString IN WIN32API ;
STRING cSection, STRING cEntry, STRING cDefault, STRING @cRetVal,
INTEGER nSize, STRING cFileName
lnBufferSize = 255
lcIniValue = SPACE(lnBufferSize)
lnResult = GetPrivateProfileString(tcSection, tcEntry, "*NULL*",
@lcIniValue, lnBufferSize, tcFileName)
lcIniValue = SUBSTR(lcIniValue,1,lnResult)
IF lcIniValue="*NULL*"
lcIniValue=.NULL.
ENDIF
RETURN lcIniValue
ENDPROC

PROCEDURE cCnnStringGet As String HelpString"Devuelve la cadena de
conexción"
RETURN This.cCnnString + ";[" + This.cFileIniName + "]"
ENDPROC

*-- Crea un Ado connection
PROTECTED PROCEDURE cnncreate
LOCAL lAnswer As Logical
WITH This
.oCnn = CREATEOBJECT("adodb.Connection")
lAnswer = VARTYPE(.oCnn) = 'O'
IF lAnswer
.oCnn.ConnectionString = .cCnnString
ENDIF
ENDWITH
RETURN lAnswer
ENDPROC
*-- Crea un Record Set
PROTECTED PROCEDURE RecordSetCreate
LOCAL loRs As Object
loRs = CREATEOBJECT("adodb.RecordSet")
STORE 3 To loRs.CursorLocation, loRs.LockType
RETURN loRs
ENDPROC
*-- Crea un Ado Command
PROTECTED PROCEDURE CmdCreate
LOCAL lAnswer As Logical
This.oCmd = CREATEOBJECT("adodb.Command")
lAnswer = VARTYPE(This.oCmd) = 'O'
RETURN lAnswer
ENDPROC

FUNCTION MaquinaTreeLoad(tcAlias As String) As String HelpString"Return XML
con Maquina"
LOCAL loCad As cadado OF "c:\vfp\work\toolset\libs\adapter.vcx",;
loXmlAdpt As xmladpt OF "c:\vfp\work\toolset\libs\adapter.vcx",;
lcXml As String
WITH This
TRY
loCad = CREATEOBJECT('CadAdo')
loCad.CadSet(tcAlias, .RecordSetCreate(), '', MaquinaTreeLoadSql(), '',
'', '')
.oCnn.Open()
loCad.DataSource.ActiveConnection = .oCnn
loCad.CursorFill()
CATCH TO loException
.Errorregistra(loException)
FINALLY
IF .oCnn.State > 0
.oCnn.Close()
ENDIF
ENDTRY
ENDWITH
lcXml = ''
loXmlAdpt = CREATEOBJECT("XmlAdpt")
loXmlAdpt.AddTableSchema(tcAlias, .F., STRCONV(tcAlias, 12, 1033),
STRCONV("", 12, 1033), STRCONV("", 12, 1034))
loXmlAdpt.ToXML('lcXml', '', .F.)
RETURN lcXml
ENDFUNC

PROCEDURE Init
LOCAL lcDirectory As String, lnErrFile As Number, llError As Boolean
TRY
DataSession = 2
SET CLASSLIB TO "C:\Vfp\work\ToolSet\libs\Adapter.vcx"
SET MULTILOCKS ON
SET DELETED ON
SET CENTURY ON
SET HOURS TO 24
SET DATE TO YMD
lcDirectory = ADDBS(JUSTPATH(SYS(16,1)))
lcDirectory = SUBSTR(lcDirectory, AT('\', lcDirectory)-2)
SET PATH TO (lcDirectory)
WITH This
.cFileIniName = lcDirectory + "cnndataserver.ini"
.cCnnString = "Provider=SQLOLEDB.1;Data Source=" +
.FileIniRead(.cFileIniName, [CnnDataServer], [Name]) + ;
";Initial Catalog=" + .FileIniRead(.cFileIniName, [CnnDataServer],
[Catalog]) + ;
";User Id=" + .FileIniRead(.cFileIniName, [CnnDataServer],
[UserSql]) + ;
";Password=" + .FileIniRead(.cFileIniName, [CnnDataServer],
[PasswordSql])
llError = .Cnncreate()
ENDWITH
CATCH TO loException
.Errorregistra(loException)
ENDTRY
RETURN llError
ENDPROC

PROCEDURE Destroy
This.ocnn = Null
ENDPROC
ENDDEFINE




"Jose Valverde" escribió en el mensaje
news:u$
Buenas amigos de potal fox, gracias a sus consejos he podido seguir
adelante con mi proyecto de crear una DLL en FOX utilizando ADO, pero
tengo un problema. al trabajar con ADO no puedo mantener la conexion
activa,por ej:
la declaro
PUBLIC VG_SQLCONN AS ADODB.CONNECTION
despues la seteo
VG_SQLCONN = createobject("ADODB.CONNECTION")

pero despues de hacer el VG_SQLCONN.OPEN(cadenaconexion) y ulilizarla para
realizar un select o ejecutar un sp se pierde esta conexion.

Esto lo he realizado en VISUAL BASIC y la conexion no se a perdido.
agradeceria mucho sus consejos
gracias de antemano







PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway

Preguntas similares