#define adOpenForwardOnly 0 #define adOpenKeyset 1 #define adOpenDynamic 2 #define adOpenStatic 3 #define adLockReadOnly 1 #define adLockPessimistic 2 #define adLockOptimistic 3 #define adLockBatchOptimistic 4 #define adUseNone 1 #define adUseServer 2 #define adUseClient 3 #define adStateClose #xtranslate TEXT SQL TO => #pragma __text|+=%s;:="" /* Definições da busca genérica */ PROCEDURE Main LOCAL oRs , oCn, cSql LOCAL cString := "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + PathBase() + "/scott.mdb" LOCAL hReg LOCAL hGet := AP_GetPairs() LOCAL aReg := {} LOCAL hResult oCn := win_oleCreateObject( "ADODB.Connection" ) oCn:ConnectionString := cString oCn:Open() oRs := win_oleCreateObject( "ADODB.Recordset" ) oRs:CursorLocation = adUseClient IF hb_HHasKey( hGet , "word" ) ELSE hResult["Result"] := "ERRO" hResult["Message"] := "O termo não foi informado" ?? hb_JsonEncode( hResult ) RETURN ENDIF /*************************/ TEXT SQL TO cSQL SELECT dname FROM dept WHERE dname LIKE '%:word%' ORDER BY dname ASC ENDTEXT cSql := StrTran( cSql , ":word" , hGet["word"] ) oRs:Open( cSQL , oCn , adOpenDynamic, adLockOptimistic ) if oRs:recordcount > 0 oRs:Movefirst() IF !oRs:eof() do while !oRs:eof() hReg := {=>} FOR x := 1 TO oRs:Fields:Count hReg[ "valueList" ] := oRs:Fields( x - 1 ):value NEXT aadd( aReg , hReg ) oRs:movenext() enddo ENDIF endif oRs:Close() /* Agora vou preparar o retorno no formato JSON. Primeiro o Hash hResult vai acumular os valores */ hResult := { => } hResult[ "Result" ] := "OK" hResult[ "Rows" ] := aReg /* Depois de concluído o processo, converto hResult em Json */ //AP_SetContentType( "application/json" ) ?? hb_JsonEncode( hResult ) RETURN /*************/