Página 1 de 1

Error DBCMD Código de error: 2001 tratando de usar ADS

Publicado: Vie Jul 25, 2014 10:03 pm
por Gabo
Hola Equipo Xailer
Tengo un diccionario de datos ADS que conecto con el siguiente codigo

WITH OBJECT AppData:oADSdsMain := TAdsDataSource():New()
:cConnect := cRootDrive + cIpFija + cPortFijo + cDictionary
:cPassword := "*******"
:cUser := "******"
:lAbortOnErrors := .T.
:lAdsLocking := .T.
:lConnected := .F.
:lDisplayErrors := .T.
:lOptimize := .T.
:lRightsCheck := .T.
:lUseDictionary := .T.
:nCharType := acANSI
:nConnectionFlags:= 0
:nFileType := afADT
:nServerType := asREMOTE
:nTimeOut := 5
:Create()
END WITH

Hast aqui todo funciona bien despues creo una dataset para manejar una tabla del diccionario

WITH OBJECT AppData:oDbfUsuarios:= TDbfDataSet():Create( Self )
:cName := "USUARIOS.ADT"
:oDataSource := AppData:oADSdsMain
:lShared := .T.
:lDisplayErrors := .T.
:lNew := .T.
if !:Open()
::lEntrar:= .F.
return .F.
endif
END WITH

Para usar la tabla del dataset, hago lo siguiente

AppData:oDbfUsuarios:Open()
AppData:oDbfUsuarios:OrdSetFocus("USUARIO1")
AppData:oDbfUsuarios:DbGoTop()

DO WHILE ! AppData:oDbfUsuarios:EOF()
AAdd( ::oDBCbxUser:aItems, {AppData:oDbfUsuarios:NOMBRE} )
AAdd( ::oDBCbxUser:aItemsBound, {AppData:oDbfUsuarios:USUARIO} )
AppData:oDbfUsuarios:Skip()
ENDDO

Y aqui en este codigo obtengo el siguiente error,
Subsistema: DBCMD
Código de error: 2001
Estado: .F.
Descripción: Area de trabajo no usada
Operación: ORDSETFOCUS
Argumentos:
Fichero:
Código error SO: 0
Pila de llamadas:
ORDSETFOCUS (0)
TDBFDATASET:ORDSETFOCUS (1210)
TFORMACCESO:FORMINITIALIZE (44)
En que parte estoy haciendo mal las cosas en el uso de ADS..? alguien que me pueda ayudar ?
Saludos

Error DBCMD Código de error: 2001 tratando de usar ADS

Publicado: Dom Jul 27, 2014 10:22 pm
por hgarciaj
Hola Gabo:
Por lo que se observa en tu código estás usando un servidor remoto, si no tienes una licencia de servidor remoto aunque sea de prueba y/o no está corriendo no podrás conectarte a tu diccionario y en consecuencia no podrás acceder a tus BD, por otro lado la definición de acceso al diccionario se hace a través del ads.ini y tu conectas al alias definido en el ads.ini desde tu programa porque puedes acceder desde una iplocal o a través de una ip remota.
Si no tienes la licencia del servidor remoto, entonces cambia a servidor local y la conexión la estableces de la forma servidorcarpetadiccionario.add y con eso podrás acceder a tus base de datos