domingo, 6 de março de 2016

WM - Windev Mobile com OleDB com o Banco de Dados Oracle




WM - Windev Mobile com OleDB com o Banco de Dados Oracle








Prezados,

Segue exemplo de como trabalhar com OleDB e Oracle no Mobile:




OBSERVAÇÃO IMPORTANTE:

PARA CONECTAR NO BANCO COM SEGURANÇA CRIE NO PROJETO CONSTANTES E NELAS DEFINA OS VALORES
POIS SE CASO DECOMPILAR O PROJETO JAVA A ONDE FOI COLOCADO CONSTANTS ELA NAO SAO DECOMPILADAS
FICANDO ASSIM OFUSCADA ESSA INFORMAÇÃO E EVITANDO A INVASAO NO SEU BANCO DE DADOS.

EXEMPLO:

ipExterno = 188.155.20.70
conexao = X
usuario = Y
senhaBanco = Z1W5C9V7N5B3T4Q6T5C8B5N2X3Y1Z2A7M8K9L6P3T
conexaoOle = PADRAO
tipoconexao = ABACAXI



AS PROCEDURES ABAIXO VAO PERMITIR CRIAR UM DATA SOURCE NA MEMORIA DO CELULAR PROVENIENTE DIRETAMENTE DO SERVIDOR ORACLE, ACESSO NATIVO USANDO OS COMANDOS SQL DO ORACLE COMO SE ESTIVESSE NO PLSQL.

Procedure ConectaBanco()

ConnectionNum is int

IF gTipo=False THEN
ConnectionNum = SQLConnectWS(ipExterno, ...
conexao, usuario, senhaBanco,conexaoOle,tipoconexao)
ELSE
ConnectionNum = SQLConnectWS(ipInterno, ...
conexao, usuario, senhaBanco,conexaoOle,tipoconexao)
END
IF ConnectionNum <> 0 THEN
// The connection was successful
RESULT True
ELSE
SQLInfo()
Error("A conexão falhou. " + CR + ...
"Erro: " + ...
SQL.Error + CR + SQL.MesError)
RESULT False
END



Procedure DesconectaBanco()
SQLDisconnect()



PROCEDIMENTOS DE IMPORTAÇÃO DAS CONFIGURAÇÕES

Procedure View_Config()

ok is boolean = False

sSQL is string = "select * from mir_conf_cidadecorp t where t.status=1"

bExecutaSql is boolean = SQLExec(sSQL,"Qry_Config")

Win_Principal.PBAR_Config=0

IF bExecutaSql THEN

HDeleteAll(T001_Config)

WHILE SQLFetch("Qry_Config")

Win_Principal.PBAR_Config+=1

T001_Config.T001_Descricao=SQLGetCol("Qry_Config",1)
T001_Config.T001_Valor=SQLGetCol("Qry_Config",2)
T001_Config.T001_Status=SQLGetCol("Qry_Config",3)
ok = HAdd(T001_Config)
IF ok = False
Log(ErrorInfo())
END

END

Win_Principal.PBAR_Config=100

ELSE
Info("Erro de execução SQL","Relate p/ Miron.")
END



PROCEDIMENTOS DE IMPORTAÇÃO DO CADASTRO DE PRODUTOS

Procedure View_Produto()

nLinhas is int


IF ConectaBanco() THEN

sSql2 is string = "select count(p.seqproduto) nlinhas from vcorp_produto p"
bExecutaSql2 is boolean = SQLExec(sSql2,"Qry_Produto2")
Multitask(1)

IF bExecutaSql2 THEN
WHILE SQLFetch("Qry_Produto2") = 0
nLinhas = SQLGetCol("Qry_Produto2",1)
END
ELSE
Info("Erro de execução SQL","Relate p/ Miron.")
RETURN
END
SQLClose("Qry_Produto2")
nLoops = RoundUp(nLinhas/100,0)
Win_Principal.PBAR_Produto..MaxValue=nLoops
Win_Principal.PBAR_Produto=0
HDeleteAll(T002_Produto)
Multitask(1)
FOR i = 1 TO nLoops
Win_Principal.PBAR_Produto+=1
sSql is string = "select * from vcorp_produto where rownum<="+i*100+" and rownum>="+(i-1)*100+1
bExecutaSql is boolean = SQLExec(sSql,"Qry_Produto")
Multitask(1)
ok is boolean
sErro is string ="Erros ao gravar produtos : " + CRLF
IF bExecutaSql THEN

WHILE SQLFetch("Qry_Produto") = 0
T002_Produto.T002_SeqProduto=SQLGetCol("Qry_Produto",1)
T002_Produto.T002_Desccompleta=SQLGetCol("Qry_Produto",2)
T002_Produto.T002_Seqfamilia=SQLGetCol("Qry_Produto",3)
T002_Produto.T002_EAN=SQLGetCol("Qry_Produto",4)
ok = HAdd(T002_Produto)
IF ok=False THEN
sErro+=SQLGetCol("Qry_Produto",1)+CRLF
Info("Erro: "+ErrorInfo())
END
END
Multitask(1)
ELSE
Info("Erro de execução SQL","Relate p/ Miron.")
RETURN
END
LogApp(sErro)

END
SQLClose("Qry_Produto")

END
DesconectaBanco()



OUTRO EXEMPLO

sSqlx = "select * from vcorp_produto p where p.dtaalteracao>=fdata('"+DtaUltImportacao+"') and p.dtaalteracao<trunc(sysdate)"
bExecutaSql is boolean = SQLExec(sSqlx,"Qry_Produto")
Multitask(1)
sErro is string ="Erros ao gravar produtos : " + CRLF
IF bExecutaSql THEN
Win_Principal.PBAR_Produto..MaxValue=100
Win_Principal.PBAR_Produto=0
WHILE SQLFetch("Qry_Produto") = 0
//
ok=HReadSeekFirst(T002_Produto, T002_SeqProduto, SQLGetCol("Qry_Produto",2))
T002_Produto.T002_SeqProduto=SQLGetCol("Qry_Produto",2)
T002_Produto.T002_Desccompleta=SQLGetCol("Qry_Produto",3)
T002_Produto.T002_Seqfamilia=SQLGetCol("Qry_Produto",4)
T002_Produto.T002_EAN=SQLGetCol("Qry_Produto",5)
HSave(T002_Produto)
END
Win_Principal.PBAR_Produto=100
Multitask(1)
ELSE
Info("Erro de execução SQL","Relate p/ Miron.")

END
LogApp(sErro)
SQLClose("Qry_Produto")


RESULTADO OBTIDO:
33.000 REGISTROS EM 2.500KB HFSQL e busca local instantânea




https://www.facebook.com/photo.php…
https://www.facebook.com/photo.php…
https://www.facebook.com/photo.php…
https://www.facebook.com/photo.php…
https://www.facebook.com/photo.php…


Agora com esse exemplo é só dar asas a imaginação, esta acessando de forma segura e obtendo em seu celular todos os recursos do seu servidor de Banco de dados Oracle usando WINDEV MOBILE em uma aplicação Android em suas mãos.

Cada dia fico mais feliz e impressionado com o poder que a PcSoft nos dá e também a grande responsabilidade que devemos ter com nossos clientes em ofuscar o código para evitar invasões de terceiros pelo aplicativo, pois nos oferece recursos que em outras linguagens são complexas e podemos notar aqui nesse exemplo a simplicidade do código empregado e dos recursos da ferramenta, o quanto ela é facilmente lida as instruções, ou seja, show de bola!

Sucesso a todos!


Prezados,

Para ofuscar use CONSTANTS, segue exemplo:

CONSTANTS
ipExterno = 188.155.20.70
conexao = X
usuario = Y
senhaBanco = Z1W5C9V7N5B3T4Q6T5C8B5N2X3Y1Z2A7M8K9L6P3T
conexaoOle = PADRAO
tipoconexao = ABACAXI
END


OBSERVAÇÃO:
NUNCA DEIXE O SEU PROJETO ANDROID SEM USAR ESSE PROCEDIMENTO DE SEGURANÇA

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/

Prezados,

Outra forma de Ter os dados seguros é armazenar em uma tabela os dados de forma criptografada ou com senha:







Desenvolva uma tela que será chamada na primeira vez e grave na tabela local com senha na tabela e criptografe os dados armazenados.

Assim seria outra técnica para proteger os dados. Uma vez que informe e logue com sucesso armazena na tabela segura e caso queira reiniciar os dados no sistema, apagaria os dados dessa configuração e solicitaria novamente o valor.

Sucesso em seus estudos!



Publicado em março, 01 2016 - 8:55 PM
Importante Mencionar que para isso tem que ter o Reserved Webdev Server instalado

--
Atte. Willian Fernando



Publicado em março, 05 2016 - 3:21 PM
Willian Fernando a écrit :

Tem que aclarar esse ponto nem todos sabem disso

Importante Mencionar que para isso tem que ter o Reserved Webdev Server instalado

--
Atte. Willian Fernando


--
Atte. Willian Fernando








Webinar 161 - Cronograma - Organizer



Webinar 161 - Cronograma








sexta-feira, 4 de março de 2016

Windev - Curso Relatorio - 22/... - Relatorio - Pagina Inicial/Final - Data/Hora






Video youtube


Blog - WinDev - Relatorio - 001/... Configura e Filtro
Blog - WinDev - Relatorio - 002/... IParameterReport
Blog - WinDev - Relatório - 003/... Marca D´Agua
Blog - WinDev - Relatorio - 004/... Layout 
Blog - WinDev - Relatorio - 005/... Campo Vertical - Angle 
Blog - WinDev - Relatorio - 006/... Como fazer quando sai duas paginas? 
Blog - WinDev - Relatorio - 007/... Imprimir Linha Multi Line
Blog - WinDev - Relatorio - 008/... Relatorio Valor Zero deixar Branco
Blog - WinDev - Relatorio - 009/... Relatorio Alinhar Texto 
Blog - WinDev - Relatorio - 010/... Colocar Totalizador
Blog - WinDev - Relatorio - 011/... Imprime Somente os Selecionados ou Todos da Tabela 
Blog - WinDev - Relatorio - 012/... Break e totalizadores de valores
Blog - WinDev - Relatorio - 013/... Retorno de Relatorio - Result 
Blog - WinDev - Relatorio - 014/... Zerar Totalizador  
Blog - WinDev - Relatorio - 015/... Relatorio - Totalmente Manual
Blog - WinDev - Relatorio - 016/... Linha Zebrada
Blog - WinDev - Relatorio - 017/... Posicoes do Relatorio Alterar
Blog - WinDev - Relatorio - 018/... Alterar Fonte
Blog - WinDev - Relatorio - 019/... Linha Acrescentar
Blog - WinDev - Relatorio - 020/... Relatorio - Gerar Pdf
Blog - WinDev - Relatorio - 021/... Filtro
Blog - WinDev - Relatorio - 022/... Pagina Inicial/Final - Data Hora
Blog - WinDev - Relatorio - 023/... Pular Página Break - IpageEnd()
Blog - WinDev - Relatorio - 024/... Imprimir Tabela com TablePrint
Blog - WinDev - Relatorio - 025/... Relatorio Mudar Orientação



Nessa aula vou mostrar como Colocar Pagina Inicial e Final no Relatorio

This lesson will show you how Put Page Initial and Final Report from the

Cette leçon va vous montrer comment Mettez la page initiale et Rapport final de la
 




















quinta-feira, 3 de março de 2016

Outro exemplo criado por Leandro Desis - WX - Busca CEP - Republica Virtual CEP - Exemplos



Forum.pcsoft.fr/pt-BR/pcsoft.br.windev/242-busca-cep-republica-virtual-cep-exemplos/read.awp

Prezados,

Outro exemplo criado por Leandro Desis:




Procedure Busca_Cep(sCep is string)

ResultadoXml is string = ""

arrRetorno is array of strings
arrRetorno = ["","","","",""]

ok is boolean = HTTPRequest("http://cep.republicavirtual.com.br/web_cep.php?cep="+ sCep +"&formato=xml")

IF ok = True THEN

ResultadoXml = HTTPGetResult()

NoXml is string = XMLExtractString(ResultadoXml,"webservicecep")

arrRetorno[1] = XMLExtractString(NoXml,"uf")
arrRetorno[2] = XMLExtractString(NoXml,"cidade")
arrRetorno[3] = XMLExtractString(NoXml,"bairro")
arrRetorno[4] = XMLExtractString(NoXml,"logradouro")
arrRetorno[5] = XMLExtractString(NoXml,"tipo_logradouro")

ELSE
arrRetorno[1] = ""
arrRetorno[2] = ""
arrRetorno[3] = ""
arrRetorno[4] = ""
arrRetorno[5] = ""
END

RESULT(arrRetorno)



Para deixar uma mensagem de aguarde......

OpenChild(WIN_msgWait,"Aguarde... Buscando informação dos sites do correio......")

arrAux is array of string
arrAux = Busca_Cep(StringDelete(EDT_CEP, "-"))

Close(WIN_msgWait)










Wx - Somando 2 imagens uma delas transparente sobre uma foto ou video obtidos com a webcam com WL (Montagem de Imagens)




//Código para somar as imagens, enviado pelo sr Jerome:

IMGBackground is an Image // Image from webcam

IMGPNG is an Image

dCopy(IMGPNG ,IMGBackGround)

//Please note that the final image IMGBackground.

//Image must have the same size.



Links de referencia:
http://help.windev.com/en-US/search2.awp…
http://help.windev.com/en-US/…
http://help.windev.com/en-US/…
http://help.windev.com/en-US/…
http://help.windev.com/en-US/…
http://help.windev.com/en-US/…


Forum.pcsoft.fr/pt-BR/pcsoft.br.windev/1013-somando-2-imagens-uma-delas-transparente-sobre-uma/read.awp









Curso WinDev - String - 004 - Transformar String Base 64 Em pdf






Video youtube


http://doc.windev.com/en-US/?3024035&name=Uncrypt
http://doc.pcsoft.fr/fr-FR/?3024035&name=decrypte_fonction

http://doc.windev.com/en-US/?1000019412&name=fSaveBuffer
http://doc.pcsoft.fr/fr-FR/?1000019412&name=fsauvebuffer_fonction

Blog - WinDev - Curso String - 001/... - Zeros direita - Rigth
Blog - WinDev - Curso String - 002 - Retirar texto Bloco String
Blog - WinDev - Curso String - 003 - Tamanho das Strings - Length
Blog - WinDev - Curso String - 004 - Transformar String Base 654 Em pdf
Blog - WinDev - Curso String - 005 - Retirar Texto do Lado Esquerdo e Direito
Blog - WinDev - Curso String - 006 - Complet - Completar Strings - Remessa Banco
Blog - WinDev - Curso String - 007 - Contains - Contem
Blog - WinDev - Curso String - 008 - Tirar pontos Cnpj - Replace
Blog - WinDev - Curso String - 009 - String - Placa - LLL9999
Blog - WinDev - Curso String - 010 - StringBuild
Blog - WinDev - Curso String - 011 - StringFormat
Blog - WinDev - Curso String - 012 - StirngIncrement
Blog - WinDev - Curso String - 013 - Tirando Enter Observação


Nessa aula vou mostrar como transformar String Bsae 64 Em pdf

Cette leçon va vous montrer comment transformer chaîne BSAE 64 en pdf

Dans cette conférence, je vais vous montrer comment transformer chaîne Base64 en pdf
 


s_xml_documento is string="D:\amarildo\Giuliano_Sapucaia\xmlserv_15417338000110\xmlserv_Retorno\12-nfsepdf.xml"
s_meu_xml is string=fLoadText(s_xml_documento)
SAI_xml=s_meu_xml
XMLDocument("XML1",s_meu_xml)
s_string_em_formato_base64 is string=XMLRead("XML1","/resPedidoLoteNFSePDF/NFS-ePDF")   
s_transforma_pdf is string = Uncrypt(s_string_em_formato_base64 ,"",cryptNone,encodeBASE64)
//No Mobile // s_transforma_pdf = Uncrypt(s_string_em_formato_base64 ,"",cryptNone)
// //no Mobile o ultimo parâmetro e ignorado
fSaveBuffer("E:\aleva\teste3.pdf",s_transforma_pdf)
ShellExecute("E:\aleva\teste3.pdf")






















Teste

Teste
teste