domingo, 6 de março de 2016

Windev Cronograma/001 - Organizer - Criar






Video Youtube


http://doc.windev.com/en-US/?1016320&name=Organizer_control
http://doc.pcsoft.fr/fr-FR/?1016320&name=champ_agenda


Blog - Curso Cronograma/Organizer/1 ... Organizer - Criar
Blog - Curso Cronograma/Organizer/2 ... Organizer - Relatorio

Nessa aula vou mostrar como Fazer Cronograma com Organizer

This class will show you how to Make Schedule Organizer

Cette classe va vous montrer comment faire le programme Organizer


//Por Dia
organizerchangezoom(ORG_Atendimento_ligacoes,orgzDay)
//Semana ate Sexta
organizerchangezoom(ORG_Atendimento_ligacoes, orgzWeekOn5)
//Semana com Sabado e domingo
organizerchangezoom(ORG_Atendimento_ligacoes, orgzWeek)
//por Mes
organizerchangezoom(ORG_Atendimento_ligacoes, orgzMonth)

































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








Teste

Teste
teste