Error ADSADT/5005 Error 5005

Post Reply
User avatar
Vikthor.Thomas
Posts: 144
Joined: Thu Jan 02, 2014 1:49 pm

Error ADSADT/5005 Error 5005

Post by Vikthor.Thomas »

Buen día a tod@s

Estoy realizando una consulta usando Advantage Database versión 10, Harbour 3.2 dev 64 Bits , FWH64.1311

Y obtengo el siguiente mensaje de error :

Error ADSADT/5005 Error 5005: The supplied buffer was insufficient for the information returned. The data may have been truncated.
Le ha sucedido a alguien más ?

La misma consulta usando el ARC finaliza sin presentar problema.

Saludos
User avatar
RenOmaS
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Re: Error ADSADT/5005 Error 5005

Post by RenOmaS »

Hola

Esperimentastes configurar, la data

:CacheSize := 100
Saludos/regards
RenOmaS

skype: americo.balboa
User avatar
Vikthor.Thomas
Posts: 144
Joined: Thu Jan 02, 2014 1:49 pm

Re: Error ADSADT/5005 Error 5005

Post by Vikthor.Thomas »

En que Objeto está esa data ?
User avatar
RenOmaS
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Re: Error ADSADT/5005 Error 5005

Post by RenOmaS »

Buenas.
en el recordset, antes del open

vea como utiliza fivewin wn adofuncs.prg

Code: Select all | Expand

   WITH OBJECT oRs      if ! Empty( oCn )         :ActiveConnection    := oCn      endif      :Source              := cSql      :LockType            := nLockType      :CursorLocation      := 3            // adUseClient      :CacheSize           := 100      :CursorType          := nCursorType  // adOpenDynamic      if nMaxRecords != nil         :MaxRecords       := nMaxRecords      endif      //      TRY#ifdef __XHARBOUR__         if nOpt == nil            :Open()         else            :Open( OleDefaultArg(), OleDefaultArg(), OleDefaultArg(), OleDefaultArg(), nOpt )         endif#else         if nOpt == nil .or. Empty( oCn )            :Open()         else            :Open( :Source, :ActiveConnection, :CursorType, :LockType, nOpt )         endif#endif      CATCH         if ! Empty( oCn )            FW_ShowAdoError( oCn )         endif         oRs   := nil      END   END
Saludos/regards
RenOmaS

skype: americo.balboa
User avatar
Vikthor.Thomas
Posts: 144
Joined: Thu Jan 02, 2014 1:49 pm

Re: Error ADSADT/5005 Error 5005

Post by Vikthor.Thomas »

Gracias por la respuesta

Alguna otra sugerencia, yo no estoy usando ADO

Code: Select all | Expand

cQuery:=alltrim(cQuery)AdsConnect( cPath )hAds := AdsConnection()If hAds == 0   MsgInfo( "La Sesion SQL no pudo ser iniciada, desconectando...")   return nilEndifADSCreateSQLStatement( cTable , 2 , hAds )lSucces := ADSExecuteSQLDirect( cQuery ) 
RSalazarU
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia
Contact:

Re: Error ADSADT/5005 Error 5005

Post by RSalazarU »

Vikthor:

Yo uso ADS en forma extensa, y hasta ahora no e tenido ese mensaje de error (espero no tenerlo nunca).

Por lo que entiendo del mensaje, la cadena/string cQuery es muy grande.

Por que no pruebas dividiéndola.

Otra alternativa seria crear procedimientos almacenados, para que realicen la mayor parte de la tarea.

Aca te dejo una funciones que a mi me ayudan en el trabajo:

Code: Select all | Expand

STATIC lErrorSTATIC nErrorSTATIC cError//--------------------------//Function SQL_Error()   return lError//--------------------------//Function SQL_nError()   return nError//--------------------------//Function SQL_cError()   return cError//--------------------------//Function SQL_nErrorSubCode()   return if(nError=0,0,Val(SubStr(cError,At("NativeError",cError)+14,4)))//--------------------------////Ejecuta una comando SQL: INSERT, UPDATE, etc..., al final cierra el areaFunction SQL_Command(cSql, nConnect)local nAreaAnterior := Select()local lOk := .F.   lError := .F.   nError := 0   cError := ""   DBSelectArea( 0 )   if ADSCreateSQLStatement('SQL_Command', AdsSetFileType(), nConnect)// 1=ADS_NTX, 2=ADS_CDX, 3=ADS_ADT      if ADSExecuteSQLDirect( cSql )         lOk := .T.      else         lError  := .T.         nError := AdsGetLastError(@cError)         LogFile( ".\sqlerror.log", { "SQL_Command()", "ADSExecuteSQLDirect: "+cError, cSql} )         if SQL_nErrorSubCode()=2102//Data truncated            lOk := .T.         endif      endif      DbCloseArea()      //AdsCloseSQLStatement()   else      lError  := .T.      nError := AdsGetLastError(@cError)      LogFile( ".\sqlerror.log", { "SQL_Command()", "AdsCreateSqlStatement: "+cError} )   endif   DBSelectArea( nAreaAnterior )   Return lOk//--------------------------////Devuelve una consulta/cursor/tabla SQL: Select * from... , no cierra el area al final Function SQL_Cursor(cSql, cAlias, nConnect)local lOk := .F.   DEFAULT cAlias := cSAUROGetNewAlias( "SQL" )   if Valtype(cAlias)="N" //el parametro pasado es una area NO un alias      if cAlias > 0         DBSELECTAREA( cAlias ) //Seleccionamos el area especificada         if Used()            cAlias:=Alias(cAlias)            DbCloseArea()         //antes de volverla a abrir la cerramos; porque si la dejamos abierta se produce un error         else            cAlias:=cSAUROGetNewAlias( "SQL" )         endif      else         DBSELECTAREA( 0 )         cAlias:=cSAUROGetNewAlias( "SQL" )      endif   else      DBSELECTAREA( Select(cAlias) ) //Si "cAlias" ya esta abierta en un area, la volveremos a abrir en la misma area.                                     //Si el alias no esta abierta, Select(cAlias) devuelve 0 y seleccionamos el area 0      if Used()         DbCloseArea()         //antes de volverla a abrir la cerramos; porque si la dejamos abierta se produce un error      endif   endif   lError := .F.   nError := 0   cError := ""   if ADSCreateSQLStatement(cAlias, AdsSetFileType(), nConnect)// 1=ADS_NTX, 2=ADS_CDX, 3=ADS_ADT      if ADSExecuteSQLDirect( cSql )         lOk := .T.      else         lError  := .T.         nError := AdsGetLastError(@cError)         LogFile( ".\sqlerror.log", { "SQL_Cursor()", "ADSExecuteSQLDirect: "+cError, cSql} )         DbCloseArea()         //AdsCloseSQLStatement()      endif   else      lError  := .T.      nError := AdsGetLastError(@cError)      LogFile( ".\sqlerror.log", { "SQL_Cursor()", "AdsCreateSqlStatement: "+cError} )   endif   Return lOk 


Atentamente,

Rolando
Cochabamba, Bolivia
User avatar
Vikthor.Thomas
Posts: 144
Joined: Thu Jan 02, 2014 1:49 pm

Re: Error ADSADT/5005 Error 5005

Post by Vikthor.Thomas »

Gracias por responder

La consulta que hago es compleja y ADS la resuelve, el error se produce cuando quiero leer el cursor.
La estructura de datos que genera el cursor tiene un campo tipo "Q" longitud 32, decimals 0.
Usando la clase xBrowse, la información que contiene ese campo no se muestra, en cambio usando las clases xBrowse y/o sBrowse obtengo el error descrito.

Alguna sugerencia ?
User avatar
karinha
Posts: 8041
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 8 times
Contact:

Re: Error ADSADT/5005 Error 5005

Post by karinha »

5005 AE_INSUFFICIENT_BUFFER

O buffer fornecido é insuficiente para a informação retornada. Os dados podem ter sido truncado.

El tampón suministrado es insuficiente para la información devuelta. Los datos pueden haber sido truncado.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
Vikthor.Thomas
Posts: 144
Joined: Thu Jan 02, 2014 1:49 pm

Re: Error ADSADT/5005 Error 5005

Post by Vikthor.Thomas »

Gracias a todos por su ayuda.
El error lo he resuelto de la siguiente forma :

Code: Select all | Expand

Select cast('2016-01-17' as SQL_DATE) as Fecha, Cast('Inicial' as SQL_CHAR) as Movimiento


Haciendo la declaración de la columna como tipo Caracter, de lo contrario el curso crea un tipo de dato VARCHARFOX

Listo el pollo !!!!
Saludos
User avatar
Vikthor.Thomas
Posts: 144
Joined: Thu Jan 02, 2014 1:49 pm

Re: Error ADSADT/5005 Error 5005

Post by Vikthor.Thomas »

Gracias a todos por su ayuda.
El error lo he resuelto de la siguiente forma :

Code: Select all | Expand

Select cast('2016-01-17' as SQL_DATE) as Fecha, Cast('Inicial' as SQL_CHAR) as Movimiento


Haciendo la declaración de la columna como tipo Caracter, de lo contrario el curso crea un tipo de dato VARCHARFOX

Listo el pollo !!!!
Saludos
Post Reply