quarta-feira, 28 de janeiro de 2015

Windev 137 - Implementando Groupware em um Banco PostgreSql - Pedrosão

Windev 137 - Implementando Groupware em um Banco PostgreSql - Pedrosão




Utf8ToAnsi - Funcao - Converte Utf8 em Ansi

Utf8ToAnsi - Funcao - Converte Utf8 em Ansi
-----------------------------------------------------------------------------------------------------------------------
Blog Relacionado com Assunto - http://windevdesenvolvimento.blogspot.com.br/2015/01/solucao-para-xml-reurn-chines-em.html
-----------------------------------------------------------------------------------------------------------------------

http://doc.windev.com/en-US/?1000020525&product=WM
----------------------------------------------------------------------------------------------------------
http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/630-solution-xml-reurn-chines-httprequest-httpgetresult-635/read.awp?hl=Chines
 -------------------------------------------------------------------------------------------------------------------
 http://forum.pcsoft.fr/fr-FR/pcsoft.fr.windevmobile/18410-qui-maitrise-utf8-ansi-unicode/read.awp
-------------------------------------------------------------------------------------------------------------------
Remove Acento - http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/959-remove-acento-961/read.awp
-------------------------------------------------------------------------------------------------------------------
http://www.geonames.org/
-------------------------------------------------------------------------------------------------------------------

bufResHttp is Buffer
shttpResult is string
HTTPRequest("http://fipeapi.appspot.com/api/1/carros/marcas.json")
bufResHttp = HTTPGetResult()
IF StringCount(bufResHttp,"ISO-8859-1",IgnoreCase) = 0 THEN
     shttpResult = UTF8ToString(bufResHttp)
ELSE
    shttpResult = AnsiToUnicode(bufResHttp)
END
----------------------------------------------------------------------------------------------------------




 ----------------------------------------------------------------------------------------------------------------








Mssql Dica - Adriano Boller

Mssql Dica - Adriano Boller






Webservice - Parana - Listagem Verbas e Obras - Adriano Boller -

Example Webservice with Image serializade

Webservice - Parana - Listagem Verbas e Obras - Adriano Boller -  


http://forum.pcsoft.fr/fr-FR/pcsoft.us.webdev/1622-example-webservice-with-image-serializade-1623/read.awp



















-------------------------------------------------------------------------------------------------------------------

Procedure ConsultaPrefeitura(LOCAL ID, LOCAL UltimaData)

X, TamanhoArrayImagem is int = 0
Resultado is string = ""

ImagemPrefeito is string

IF ID = "" THEN

Resultado += "<Xml><Retorno>" 
FOR EACH t001prefeitura 

IF t001prefeitura.t001ultimadata > UltimaData
X += 1 // Sem filtro

 //Converte campo blob imagem em um array de string para mandar a imagem pelo webservice
ImagemPrefeito =Crypt(t001prefeitura.t001fotoprefeito,"ParanaCidade",cryptAnsi,encodeBASE64)

Resultado += "<Prefeitura id="+Charact(34)+X+Charact(34)+">"
Resultado += "<t001apelidoprefeito>" + NoSpace(t001prefeitura.t001apelidoprefeito) + "</t001apelidoprefeito>" 
Resultado += "<t001associacao>" + NoSpace(t001prefeitura.t001associacao) + "</t001associacao>" 
Resultado += "<t001bairro>" + NoSpace(t001prefeitura.t001bairro) + "</t001bairro>" 
Resultado += "<t001cep>" + NoSpace(t001prefeitura.t001cep) + "</t001cep>" 
Resultado += "<t001cidade>" + NoSpace(t001prefeitura.t001cidade) + "</t001cidade>"
Resultado += "<t001codIbge>" + NoSpace(t001prefeitura.t001codIbge) + "</t001codIbge>" 
Resultado += "<t001codigo>" + NoSpace(t001prefeitura.t001codigo) + "</t001codigo>" 
Resultado += "<t001complemento>" + NoSpace(t001prefeitura.t001complemento) + "</t001complemento>" 
Resultado += "<t001emailprefeito>" + NoSpace(t001prefeitura.t001emailprefeito) + "</t001emailprefeito>" 
Resultado += "<t001emailprefeitura>" + NoSpace(t001prefeitura.t001emailprefeitura) + "</t001emailprefeitura>" 
Resultado += "<t001endereco>" + NoSpace(t001prefeitura.t001endereco) + "</t001endereco>" 
Resultado += "<t001escritorioregional>" + NoSpace(t001prefeitura.t001escritorioregional) + "</t001escritorioregional>"
Resultado += "<t001gentilico>" + NoSpace(t001prefeitura.t001gentilico) + "</t001gentilico>"
Resultado += "<t001idprefeitura>" + NoSpace(t001prefeitura.t001idprefeitura) + "</t001idprefeitura>" 
Resultado += "<t001nomemunicipio>" + NoSpace(t001prefeitura.t001nomemunicipio) + "</t001nomemunicipio>" 
Resultado += "<t001nomeprefeito>" + NoSpace(t001prefeitura.t001nomeprefeito) + "</t001nomeprefeito>" 
Resultado += "<t001partidoprefeito>" + NoSpace(t001prefeitura.t001partidoprefeito) + "</t001partidoprefeito>" 
Resultado += "<t001populacao>" + NoSpace(t001prefeitura.t001populacao) + "</t001populacao>" 
Resultado += "<t001telefoneprefeito>" + NoSpace(t001prefeitura.t001telefoneprefeito) + "</t001telefoneprefeito>" 
Resultado += "<t001telfoneprefeitura>" + NoSpace(t001prefeitura.t001telfoneprefeitura) + "</t001telfoneprefeitura>"
Resultado += "<t001uf>" + NoSpace(t001prefeitura.t001uf) + "</t001uf>" 
Resultado += "<t001ultimadata>" + NoSpace(t001prefeitura.t001ultimadata) + "</t001ultimadata>"
Resultado += "<t001fotoprefeito>" + NoSpace(ImagemPrefeito) + "</t001fotoprefeito>" 
Resultado += "</Prefeitura>"
END
END
IF X = 0 THEN
Resultado += "<Prefeitura id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>Registro não encontrado</Erro>"
Resultado += "</Prefeitura>"
END
Resultado += "<TOTAL>"+X+"</TOTAL>"
Resultado += "</Retorno></Xml>" 

ELSE

Resultado += "<Xml><Retorno>" 
FOR EACH t001prefeitura 
IF t001prefeitura.t001idprefeitura=ID AND t001prefeitura.t001ultimadata > UltimaData //Com filtro
X += 1

ImagemPrefeito = Crypt(t001prefeitura.t001fotoprefeito,"ParanaCidade",cryptAnsi,encodeBASE64)

Resultado += "<Prefeitura id="+Charact(34)+X+Charact(34)+">"
Resultado += "<t001apelidoprefeito>" + NoSpace(t001prefeitura.t001apelidoprefeito) + "</t001apelidoprefeito>" 
Resultado += "<t001associacao>" + NoSpace(t001prefeitura.t001associacao) + "</t001associacao>" 
Resultado += "<t001bairro>" + NoSpace(t001prefeitura.t001bairro) + "</t001bairro>" 
Resultado += "<t001cep>" + NoSpace(t001prefeitura.t001cep) + "</t001cep>" 
Resultado += "<t001cidade>" + NoSpace(t001prefeitura.t001cidade) + "</t001cidade>"
Resultado += "<t001codIbge>" + NoSpace(t001prefeitura.t001codIbge) + "</t001codIbge>" 
Resultado += "<t001codigo>" + NoSpace(t001prefeitura.t001codigo) + "</t001codigo>" 
Resultado += "<t001complemento>" + NoSpace(t001prefeitura.t001complemento) + "</t001complemento>" 
Resultado += "<t001emailprefeito>" + NoSpace(t001prefeitura.t001emailprefeito) + "</t001emailprefeito>" 
Resultado += "<t001emailprefeitura>" + NoSpace(t001prefeitura.t001emailprefeitura) + "</t001emailprefeitura>" 
Resultado += "<t001endereco>" + NoSpace(t001prefeitura.t001endereco) + "</t001endereco>" 
Resultado += "<t001escritorioregional>" + NoSpace(t001prefeitura.t001escritorioregional) + "</t001escritorioregional>"
Resultado += "<t001gentilico>" + NoSpace(t001prefeitura.t001gentilico) + "</t001gentilico>"
Resultado += "<t001idprefeitura>" + NoSpace(t001prefeitura.t001idprefeitura) + "</t001idprefeitura>" 
Resultado += "<t001nomemunicipio>" + NoSpace(t001prefeitura.t001nomemunicipio) + "</t001nomemunicipio>" 
Resultado += "<t001nomeprefeito>" + NoSpace(t001prefeitura.t001nomeprefeito) + "</t001nomeprefeito>" 
Resultado += "<t001partidoprefeito>" + NoSpace(t001prefeitura.t001partidoprefeito) + "</t001partidoprefeito>" 
Resultado += "<t001populacao>" + NoSpace(t001prefeitura.t001populacao) + "</t001populacao>" 
Resultado += "<t001telefoneprefeito>" + NoSpace(t001prefeitura.t001telefoneprefeito) + "</t001telefoneprefeito>" 
Resultado += "<t001telfoneprefeitura>" + NoSpace(t001prefeitura.t001telfoneprefeitura) + "</t001telfoneprefeitura>"
Resultado += "<t001uf>" + NoSpace(t001prefeitura.t001uf) + "</t001uf>" 
Resultado += "<t001ultimadata>" + NoSpace(t001prefeitura.t001ultimadata) + "</t001ultimadata>"
Resultado += "<t001fotoprefeito>" + NoSpace(ImagemPrefeito) + "</t001fotoprefeito>" 
Resultado += "</Prefeitura>" 
END
END
IF X = 0 THEN
Resultado += "<Prefeitura id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>Registro não encontrado</Erro>"
Resultado += "</Prefeitura>"
END
Resultado += "<TOTAL>"+X+"</TOTAL>"
Resultado += "</Retorno></Xml>" 

END

RESULT (Resultado)

-------------------------------------------------------------------------------------------------------------------

Obs.:

//Converte campo blob imagem em um array de string para mandar a imagem pelo webservice
ImagemPrefeito = Crypt(t001prefeitura.t001fotoprefeito,"ParanaCidade",cryptAnsi,encodeBASE64)


-------------------------------------------------------------------------------------------------------------------

/IMAGEM Carregar
IMG_FotoPrefeito = QRY_T001prefeitura.t001fotoprefeito


-------------------------------------------------------------------------------------------------------------------

Procedure RefreshFiltro(LOCAL CodIdPref)

IF CodIdPref > 0 THEN

NextTitle("Atualizando Dados...")
HourGlass(True)

ok is boolean = HExecuteQuery(QRY_T001prefeitura_SelectX,hQueryDefault,CodIdPref)

IF ok = True THEN
//info("OK")
FOR EACH QRY_T001prefeitura_SelectX
STC_MunicipioA = QRY_T001prefeitura_SelectX.t001nomemunicipio
STC_MunicipioB = QRY_T001prefeitura_SelectX.t001nomemunicipio
STC_PopulacaoA = QRY_T001prefeitura_SelectX.t001populacao
STC_PopulacaoB = QRY_T001prefeitura_SelectX.t001populacao
STC_RegionalA = QRY_T001prefeitura_SelectX.t001escritorioregional
STC_RegionalB = QRY_T001prefeitura_SelectX.t001escritorioregional
STC_AssociacaoA = QRY_T001prefeitura_SelectX.t001associacao
STC_AssociacaoB = QRY_T001prefeitura_SelectX.t001associacao
STC_GentilicoA = QRY_T001prefeitura_SelectX.t001gentilico
STC_GentilicoB = QRY_T001prefeitura_SelectX.t001gentilico
STC_EnderecoA = Clip(QRY_T001prefeitura_SelectX.t001endereco) +" "+Clip(QRY_T001prefeitura_SelectX.t001complemento) +" Bairro: "+ QRY_T001prefeitura_SelectX.t001bairro+"Cep: "+QRY_T001prefeitura_SelectX.t001cep
 STC_EnderecoB = Clip(QRY_T001prefeitura_SelectX.t001endereco) +" "+Clip(QRY_T001prefeitura_SelectX.t001complemento) +" Bairro: "+ QRY_T001prefeitura_SelectX.t001bairro+"Cep: "+QRY_T001prefeitura_SelectX.t001cep
STC_TelPrefeituraA = QRY_T001prefeitura_SelectX.t001telfoneprefeitura
STC_TelPrefeituraB = QRY_T001prefeitura_SelectX.t001telfoneprefeitura
STC_NomePrefA = QRY_T001prefeitura_SelectX.t001nomeprefeito
STC_NomePrefB = QRY_T001prefeitura_SelectX.t001nomeprefeito
STC_ApelidoA = QRY_T001prefeitura_SelectX.t001apelidoprefeito
STC_ApelidoB = QRY_T001prefeitura_SelectX.t001apelidoprefeito
STC_PartidoA = QRY_T001prefeitura_SelectX.t001partidoprefeito
STC_PartidoB = QRY_T001prefeitura_SelectX.t001partidoprefeito
STC_TelPrefeitoA = QRY_T001prefeitura_SelectX.t001telefoneprefeito
STC_TelPrefeitoB = QRY_T001prefeitura_SelectX.t001telefoneprefeito
STC_EmailMunA = QRY_T001prefeitura_SelectX.t001emailprefeitura
STC_EmailMunB = QRY_T001prefeitura_SelectX.t001emailprefeitura
STC_EmailPrefeitoA = QRY_T001prefeitura_SelectX.t001emailprefeito
STC_EmailPrefeitoB = QRY_T001prefeitura_SelectX.t001emailprefeito
IMG_FotoPrefeito1 = QRY_T001prefeitura_SelectX.t001fotoprefeito
IMG_FotoPrefeito2 = QRY_T001prefeitura_SelectX.t001fotoprefeito
END

RefreshMensagens()

RefreshOperacoes()

RefreshProjetos()

RefreshSituacao()

RefreshLotes()

ELSE
Info("Erro") 
END

HourGlass(False) 

END


-------------------------------------------------------------------------------------------------------------------

//Lê Webservice importa a foto para a tabela descriptografando

Procedure WS_IncluiAltera_T001prefeitura(ParIdPrefeitura,ParNomeMunicipio,ParPopulacao,ParGentilico,ParEndereco,ParComplemento,ParBairro,ParCidade,ParIbge,ParUf,ParCep,ParEmailPrefeitura,ParEmailPrefeito,ParTelPrefeitura,ParTelPrefeito,ParRegional,ParAssociacao,ParNomePrefeito,ParApelido,ParPartido,ParUltimaData,ParFoto)

//variaveis
ok is boolean = False

ChangeCharset(charsetOccidental) // SEM ACENTO

//Xml
IF ParUltimaData = ""
ParUltimaData = Hoje("")
END

GloTotalImport += 1
IF gbTabletiPad = True
WIN_06Sincronizar_iPad.PROGBAR_Total..Value = GloTotalImport
END
IF GloTotalImport >= 100 THEN
GloTotalImport = 0
END

IF gsUltimaData <> ""
//loop de leitura do xml - filtro unico cidade
HReadSeekFirst(t001prefeitura,t001prefeitura.t001nomemunicipio,ParNomeMunicipio)
IF HFound(t001prefeitura) = False
 // se nao tem insert
 t001prefeitura.t001idprefeitura = ParIdPrefeitura
 t001prefeitura.t001nomemunicipio = ParNomeMunicipio
 t001prefeitura.t001populacao = ParPopulacao
 t001prefeitura.t001gentilico = ParGentilico
 t001prefeitura.t001endereco = ParEndereco
 t001prefeitura.t001complemento = ParComplemento
 t001prefeitura.t001bairro = ParBairro
 t001prefeitura.t001cidade = ParCidade
 t001prefeitura.t001codIbge = ParIbge
 t001prefeitura.t001uf = ParUf
 t001prefeitura.t001cep = ParCep
 t001prefeitura.t001emailprefeitura = ParEmailPrefeitura
 t001prefeitura.t001emailprefeito = ParEmailPrefeito
 t001prefeitura.t001telfoneprefeitura = ParTelPrefeitura
 t001prefeitura.t001telefoneprefeito = ParTelPrefeito
 t001prefeitura.t001escritorioregional = ParRegional
 t001prefeitura.t001associacao = ParAssociacao
 t001prefeitura.t001nomeprefeito = ParNomePrefeito
 t001prefeitura.t001apelidoprefeito = ParApelido
 t001prefeitura.t001fotoprefeito = Uncrypt(ParFoto,"ParanaCidade",cryptAnsi, encodeBASE64)
 t001prefeitura.t001partidoprefeito = ParPartido
 t001prefeitura.t001ultimadata = ParUltimaData
 IF ParIdPrefeitura <> ""
 ok = HAdd(t001prefeitura)
IF ok = False THEN
NextTitle("Carga QRY_T001prefeitura_Insert")
Info("Registro: "+ParNomeMunicipio,"Ocorreu um erro inesperado.",ErrorInfo())
END
END
ELSE IF HFound(t001prefeitura) = True AND t001prefeitura.t001ultimadata <> ParUltimaData
//ou Update
t001prefeitura.t001idprefeitura = ParIdPrefeitura
t001prefeitura.t001nomemunicipio = ParNomeMunicipio
t001prefeitura.t001populacao = ParPopulacao
t001prefeitura.t001gentilico = ParGentilico
t001prefeitura.t001endereco = ParEndereco
t001prefeitura.t001complemento = ParComplemento
t001prefeitura.t001bairro = ParBairro
t001prefeitura.t001cidade = ParCidade
t001prefeitura.t001codIbge = ParIbge
t001prefeitura.t001uf = ParUf
t001prefeitura.t001cep = ParCep
t001prefeitura.t001emailprefeitura = ParEmailPrefeitura
t001prefeitura.t001emailprefeito = ParEmailPrefeito
t001prefeitura.t001telfoneprefeitura = ParTelPrefeitura
t001prefeitura.t001telefoneprefeito = ParTelPrefeito
t001prefeitura.t001escritorioregional = ParRegional
t001prefeitura.t001associacao = ParAssociacao
t001prefeitura.t001nomeprefeito = ParNomePrefeito
t001prefeitura.t001apelidoprefeito = ParApelido
t001prefeitura.t001fotoprefeito = Uncrypt(ParFoto,"ParanaCidade",cryptAnsi, encodeBASE64)
t001prefeitura.t001partidoprefeito = ParPartido
t001prefeitura.t001ultimadata = ParUltimaData
IF ParIdPrefeitura <> ""
ok = HModify(t001prefeitura)
IF ok = False THEN
NextTitle("Carga QRY_T001prefeitura_Update")
Info("Registro: "+ParNomeMunicipio,"Ocorreu um erro inesperado.",ErrorInfo())
END
END
END
//fim do loop de leitura do xml
ELSE
// se nao tem insert
t001prefeitura.t001idprefeitura = ParIdPrefeitura
t001prefeitura.t001nomemunicipio = ParNomeMunicipio
t001prefeitura.t001populacao = ParPopulacao
t001prefeitura.t001gentilico = ParGentilico
t001prefeitura.t001endereco = ParEndereco
t001prefeitura.t001complemento = ParComplemento
t001prefeitura.t001bairro = ParBairro
t001prefeitura.t001cidade = ParCidade
t001prefeitura.t001codIbge = ParIbge
t001prefeitura.t001uf = ParUf
t001prefeitura.t001cep = ParCep
t001prefeitura.t001emailprefeitura = ParEmailPrefeitura
t001prefeitura.t001emailprefeito = ParEmailPrefeito
t001prefeitura.t001telfoneprefeitura = ParTelPrefeitura
t001prefeitura.t001telefoneprefeito = ParTelPrefeito
t001prefeitura.t001escritorioregional = ParRegional
t001prefeitura.t001associacao = ParAssociacao
t001prefeitura.t001nomeprefeito = ParNomePrefeito
t001prefeitura.t001apelidoprefeito = ParApelido
t001prefeitura.t001fotoprefeito = Uncrypt(ParFoto,"ParanaCidade",cryptAnsi, encodeBASE64)
t001prefeitura.t001partidoprefeito = ParPartido
t001prefeitura.t001ultimadata = ParUltimaData
IF ParIdPrefeitura <> ""
ok = HModify(t001prefeitura)
IF ok = False THEN
NextTitle("Carga QRY_T001prefeitura_Update")
Info("Registro: "+ParNomeMunicipio,"Ocorreu um erro inesperado.",ErrorInfo())
END
END
END


RESULT(ok)

-------------------------------------------------------------------------------------------------------------------
//Detalhe importante do codigo acima
t001prefeitura.t001fotoprefeito = Uncrypt(ParFoto,"ParanaCidade",cryptAnsi, encodeBASE64)

 
-------------------------------------------------------------------------------------------------------------------



   

Teste

Teste
teste