No me deja crear un index en ADS via Internet.

No me deja crear un index en ADS via Internet.

Postby Alex.Salas » Mon Aug 18, 2014 4:41 pm

Buen día a todos.

Estoy realizando unas pruebas don ADS pero tengo un problema al crear un indice sobre un query cuando trabajo con una conexión remota, ejemplo, si la conexión la hacemos en una red local no tengo ningun problema, puedo crear un query y puedo crear un indice a ese resultado, pero cuando cambio la conexión para que sea atravez de internet, el query lo genera sin problema, pero al crear un indice me manda el error Error ADSADT/5004 Create error: temp39965.

REQUEST ADS, ADSKeyCount, ADSKeyNo, OrdKeyCount, OrdKeyNo
RddRegister("ADS",1)
RddSetDefault("ADS")
AdsRightsCheck(.F.)
AdsSetServerType(4)
AdsSetFileType(2)

cRuta := "\\187.xxx.xxx.xxx:2000\Base\cs.add"
AdsConnect60(cRuta,4,"demo","demo01")

Esta es la configuración y conexión que hacemos.

De antemando gracias por su atención y reciban un cordial saludo.
Alex.Salas
 
Posts: 5
Joined: Thu Mar 15, 2012 5:09 pm

Re: No me deja crear un index en ADS via Internet.

Postby Giovany Vecchi » Mon Aug 18, 2014 5:25 pm

Posta os comandos query aqui para analize.
User avatar
Giovany Vecchi
 
Posts: 209
Joined: Mon Jun 05, 2006 9:39 pm
Location: Brasil

Re: No me deja crear un index en ADS via Internet.

Postby Alex.Salas » Mon Aug 18, 2014 5:40 pm

Este es el codigo que genero para mi Query:

cAlias := "CONSIG"
DbSelectArea( 0 )
AdsCreateSQLStatement(cAlias,2)
cQuery := "SELECT PROD_CON.ID_PROD, PROD_CON.REFEREN, PROD_CON.STATUS, CAT_PROD.NOM_PROD From PROD_CON, CAT_PROD WHERE CAT_PROD.ID_PROD = PROD_CON.ID_PROD"
AdsExecuteSqlDirect(cQuery)
Index On STRZERO(ID_PROD,5) TAG "ID" TO (cAlias)
Select(cAlias)
(cAlias)->(OrdSetFocus("ID"))
(cAlias)->(dbGoTop())

Repito, en una conexion de area Local, sin problemas, pero via Internet en el Index On me genera el error.
Alex.Salas
 
Posts: 5
Joined: Thu Mar 15, 2012 5:09 pm

Re: No me deja crear un index en ADS via Internet.

Postby Giovany Vecchi » Mon Aug 18, 2014 6:10 pm

Alex.Salas wrote:Este es el codigo que genero para mi Query:

cAlias := "CONSIG"
DbSelectArea( 0 )
AdsCreateSQLStatement(cAlias,2)
cQuery := "SELECT PROD_CON.ID_PROD, PROD_CON.REFEREN, PROD_CON.STATUS, CAT_PROD.NOM_PROD From PROD_CON, CAT_PROD WHERE CAT_PROD.ID_PROD = PROD_CON.ID_PROD"
AdsExecuteSqlDirect(cQuery)
Index On STRZERO(ID_PROD,5) TAG "ID" TO (cAlias)
Select(cAlias)
(cAlias)->(OrdSetFocus("ID"))
(cAlias)->(dbGoTop())

Repito, en una conexion de area Local, sin problemas, pero via Internet en el Index On me genera el error.


Tenta assim
EXECUTE PROCEDURE sp_CreateIndex( "PROD_CON","PROD_CON.cdx"," STRZERO(ID_PROD,5)","ID_PROD","",2,512,"") ;

Não vejo a nescessidade de criar indices quando aplicado comandos SQL nas tabelas.
se voce quer um temporario voce pode definir # no from ex: from #MyTemp
Em logica voce pode definir a ordem com ORDER BY ID_PROD

Em tAds voce poderia colocar assim

oDb_Consig := tAds():DsNew(1)
oDb_Consig:cQrySql := "SELECT PROD_CON.ID_PROD, PROD_CON.REFEREN, PROD_CON.STATUS, CAT_PROD.NOM_PROD From PROD_CON, CAT_PROD WHERE CAT_PROD.ID_PROD = PROD_CON.ID_PROD"
oDb_Consig:lDsCursorToTemp := .T. /// Cria um temporario na maquina cliente
oDb_Consig:aFieldsTempIndex := {"ID_PROD"} // Criara o indice na tabela temporaria do campo ID_PROD
oDb_Consig:DsExecute()

Para melhorar a performace usa a clausa {STATIC}, que ADS criara uma tabela estatica sem vinculos com os Indices anexos

cQuery := "SELECT {STATIC} PROD_CON.ID_PROD, PROD_CON.REFEREN, PROD_CON.STATUS, CAT_PROD.NOM_PROD From PROD_CON, CAT_PROD WHERE CAT_PROD.ID_PROD = PROD_CON.ID_PROD"
User avatar
Giovany Vecchi
 
Posts: 209
Joined: Mon Jun 05, 2006 9:39 pm
Location: Brasil

Re: No me deja crear un index en ADS via Internet.

Postby Alex.Salas » Tue Aug 19, 2014 9:12 pm

Giovany Vecchi

Muchas gracias por tu respuesta ya intente con las opciones que mencionas, pero sigo teniendo el problema cuando es atravez de una conexión por Internet, todo marcha bien hasta que tengo que crear el indice, se que con las sentencias SQL se pueden dejar a un lado pero los utilizo para hacer las busquedas con la clase TSeekInc().

De antemano gracias.
Alex.Salas
 
Posts: 5
Joined: Thu Mar 15, 2012 5:09 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 27 guests