PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → WX - Aplicativo de armazenamento de fotos de Funcionários
WX - Aplicativo de armazenamento de fotos de Funcionários
Débuté par adrianoboller, 12 juin 2015 01:29 - 16 réponses
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 juin 2015 - 01:29
Estrutura Table



>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 juin 2015 - 01:30
Cadastro Realizado com Sucesso



>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 juin 2015 - 01:31
//Le registro - ao clicar no browser embed code listbrowser: "Select Row"

ImagemBuffer is Buffer=""

EDT_Matricula=TABLE_NG0021_FotoTaxista[TABLE_NG0021_FotoTaxista].COL_Matricula

EDT_Nome=TABLE_NG0021_FotoTaxista[TABLE_NG0021_FotoTaxista].COL_Nome

EDT_Foto=TABLE_NG0021_FotoTaxista[TABLE_NG0021_FotoTaxista].COL_Foto

ImagemBuffer=Uncrypt(EDT_Foto,"",compressLZW+cryptAnsi,encodeBASE64)

IMG_Foto=ImagemBuffer

ExecuteProcess(IMG_Foto,trtChange)
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 juin 2015 - 01:32
//Botao Incluir

IFEDT_Matricula<>""ANDEDT_Nome<>""ANDEDT_Foto<>""

ok isboolean=HExecuteQuery(QRY_Insert_FotoTaxista,hQueryDefault,EDT_Matricula,EDT_Nome,EDT_Foto)

IFok=TrueTHEN

Info("Gravou")

ELSE

Info(ErrorInfo())

END

TableDisplay(TABLE_NG0021_FotoTaxista,taReExecuteQuery)
TableDisplay(TABLE_NG0021_FotoTaxista,taInit)

ELSE
Info("Campos obrigatorios em branco")
END
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 juin 2015 - 01:32
//Botao Alterar

IFEDT_Matricula<>""ANDEDT_Nome<>""ANDEDT_Foto<>""THEN

ok isboolean=HExecuteQuery(QRY_Update_FotoTaxista,hQueryDefault,EDT_Nome,EDT_Foto,EDT_Matricula)

IFok=TrueTHEN

Info("Gravou")

ELSE

Info(ErrorInfo())

END

TableDisplay(TABLE_NG0021_FotoTaxista,taReExecuteQuery)

TableDisplay(TABLE_NG0021_FotoTaxista,taInit)

ELSE
Info("Campos obrigatorios em branco")
END
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 juin 2015 - 01:33
//Botão Excluir

IFEDT_Matricula<>""THEN

ok isboolean=HExecuteQuery(QRY_Delete_FotoTaxista,hQueryDefault,EDT_Matricula)

IFok=TrueTHEN

Info("Excluiu")

ELSE

Info(ErrorInfo())

END

TableDisplay(TABLE_NG0021_FotoTaxista,taReExecuteQuery)

TableDisplay(TABLE_NG0021_FotoTaxista,taInit)

ELSE
Info("Matricula em branco")
END
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 juin 2015 - 01:38
Querys:

--//QRY_Delete_FotoTaxista
DELETE FROM
NG0021_FotoTaxista
WHERE
NG0021_FotoTaxista.Matricula= {pMatricula}



--//QRY_Insert_FotoTaxista
INSERT INTONG0021_FotoTaxista
(
Matricula,
Nome,
Foto
)
VALUES
(
{pMatricula},
{pNome},
{pFoto}
)



--//QRY_Select_FotoTaxista
SELECT
NG0021_FotoTaxista.MatriculaASMatricula,
NG0021_FotoTaxista.NomeASNome,
NG0021_FotoTaxista.FotoASFoto
FROM
NG0021_FotoTaxista



--//QRY_Select_FotoTaxista_Filtro
SELECT
NG0021_FotoTaxista.MatriculaASMatricula,
NG0021_FotoTaxista.NomeASNome,
NG0021_FotoTaxista.FotoASFoto
FROM
NG0021_FotoTaxista
WHERE
NG0021_FotoTaxista.Matricula= {pMatricula}



--//QRY_Update_FotoTaxista
UPDATE
NG0021_FotoTaxista
SET
Nome= {pNome},
Foto= {pFoto}
WHERE
NG0021_FotoTaxista.Matricula= {pMatricula}



-- Script generated by WinDev on 11/06/2015 20:38:07
-- Tables of FotoTaxista.wda analysis
-- for SQL Server

-- Creating the NG0021_FotoTaxista table
CREATETABLE[dbo.NG0021_FotoTaxista] (
[Matricula]INTEGERNOTNULLUNIQUEDEFAULT0,
[Nome]NVARCHAR(50)DEFAULT NULL,
[Foto]TEXT DEFAULT NULL);


>Obs.: Projeto é todo em ANSI
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 juin 2015 - 01:39
Atenção: Para consumir em um webservice é o mesmo metodo que ocorre ao clicar no Browserlist.
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 juin 2015 - 01:39
:merci:>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 22 juin 2015 - 21:21
//pra enviar:

ImagemString=Crypt(ImagemBuffer,"",cryptNone,encodeBASE64)

//para receber

ImagemString=Uncrypt(ImagemBuffer,"",cryptNone,encodeBASE64)



//Na versão 20 teve uma melhoria nesse processo usando o seguinte função nova chamada "cryptstandard":

//pra enviar:
sMessage is Buffer="Message à crypter"
bufCle is Buffer=HashString(HA_MD5_128,"mdp")
sRetorno is Buffer=CryptStandard(sMessage,bufCle,cryptAES128)


//para receber
Info(UncryptStandard(sRetorno,bufCle,cryptAES128))
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 22 juin 2015 - 21:33
OBS.: É obrigatório o base64, mas não pode ser comprimido nas duas pontas, se colocar pra ser comprimido nao funciona.
>o ansi é pro windows, criptansi não pode no android.
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 23 juin 2015 - 19:11
//WINDEV MOBILE + Taget CODE

NoANDROID=
ImagemBuffer=Uncrypt(XML_Retorno,"",cryptNone)

NoiOS=
ImagemBuffer=Uncrypt(XML_Retorno,"",cryptNone,encodeBASE64)

----


//WINDEV DESKTOP OU WEBDEV
//Para enviar a foto para o servidor no Busca Foto - Webservice - banco de dados - tabela com campo varchar(max)

EDT_Foto=""

EDT_PathArquivo=""

sPhoto isstring=""

ImagemBuffer is Buffer=""

bufKey is Buffer=""

ImagemString isstring=""

sPhoto=fImageSelect(fExeDir,,"")

IFsPhoto~= “THEN

RETURN

ELSE

ImagemBuffer=fLoadBuffer(sPhoto)

ImagemString=Crypt(ImagemBuffer,"",cryptNone,encodeBASE64)

EDT_Foto=ImagemString

IMG_Foto=sPhoto

ExecuteProcess(IMG_Foto,trtChange)

END
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 23 juin 2015 - 19:15


>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 23 juin 2015 - 19:16
Obs.: No Android a base 64 é default sendo necessário fazer um Target Code para o iOS pois ele necessita desse parametro.
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 05 avril 2016 - 22:09
Prezados,

Segue alguns detalhes apontados pelo Danilo Valim

//********************************************************************
//Gerando imagem usando crypt
//********************************************************************
bufImageBuffer is Buffer=""
sImageString isstring=""

bufImageBuffer=fLoadBuffer(IMG_1)

sImageString=Crypt(bufImageBuffer,"",cryptNone)
//sImageString = Crypt(bufImageBuffer,"TesteSenhaCript",cryptFast) //Com criptografado com senha

//info(length(sImageString)) - Qtde de Caracteres da Imagem Serializada - 3324508




//********************************************************************
//Usando Código dessa Forma Consigo Inserir uma Imagem de Tamanho - 2,31 Mb
//********************************************************************
gdsConsulta isData Source
HClose(gdsConsulta)

gsQueryisstring="Execute Cadastro_Anexo "+EDT_Nome_Imagem+" ,'"+sImageString+"',0"
IFNOTHExecuteSQLQuery(gdsConsulta,CONN2,hQueryWithoutCorrection,gsQuery)THEN
Info(HErrorInfo())
ELSE
HReadFirst(gdsConsulta,MsgProd)
WHILEHOut() =False
IFgdsConsulta.MsgProd<>"OK"THEN
Error(gdsConsulta.MsgProd)
ELSE
Info("OK")
END
HReadNext(gdsConsulta)
END
END



//*********************************************************************************
//Usando esse Código, dessa Forma da Estouro de Buffer, Variavel sImageString
//vai Cortada e da Erro, não funciona, não use HEXECUTEQUERY, USE
//HEXECUTESQLQUERY, É MAIS ADEQUADO.
//***********************************************************************************
IFHExecuteQuery(QRY_Insert_Foto,hQueryDefault,EDT_Nome_Imagem,sImageString) =FalseTHEN
Info(HErrorInfo())
ELSE
Info("Imagem salva com Sucesso!!")
END



//*********************************************************************************
//Dessa Forma também da Estouro de Buffer, Variavel sImageString vai
//Cortada e da Erro, não funciona
//***********************************************************************************
dsQry_Sql isData Source

sQl_execute isstring=
[
Insert INTO Anexo_Teste
(
NomeAnexo,
Foto
)
VALUES
(
'@NomeAnexo@',
'@Foto@'
)
]

sQl_execute=Replace(sQl_execute,"@NomeAnexo@",EDT_Nome_Imagem)
sQl_execute=Replace(sQl_execute,"@Foto@",sImageString)

ok isboolean=HExecuteSQLQuery(dsQry_Sql,hQueryDefault+hCheckDuplicates+hCheckIntegrity,sQl_execute)
IFok=TrueTHEN
Info("OK")
ELSE
Info(HErrorInfo(),ErrorInfo())
END




//***********************************
Conteudo da variavelsImageString
//***********************************

/9j/4QJMRXhpZgAASUkqAAgAAAAMAAABBAABAAAAIBAAAAEBBAABAAAAGAwAAA8BAgAIAAAAngAAABAB
AgAJAAAApgAAABIBAwABAAAABgAAABoBBQABAAAAsAAAABsBBQABAAAAuAAAACgBAwABAAAAAgAAADEB
AgANAAAAwAAAADIBAgAUAAAAzgAAABMCAwABAAAAAQAAAGmHBAABAAAA4gAAAAAAAABTQU1TVU5HAEdU
LUk5NTA1AABIAAAAAQAAAEgAAAABAAAASTk1MDVWSlVFTUtFAAAyMDE0OjA0OjAzIDIzOjI0OjA4AA8A
IogDAAEAAAACAAAAAJAHAAQAAAAwMjIwA5ACABQAAACcAQAABJACABQAAACwAQAAAZEHAAQAAAABAgMA
B5IDAAEAAAACAAAAfJIHAGIAAADEAQAAAKAHAAQAAAAwMTAwAaADAAEAAAABAAAAAqAEAAEAAAAgEAAA
A6AEAAEAAAAYDAAABaAEAAEAAAAmAgAAAqQDAAEAAAAAAAAAA6QDAAEAAAAAAAAABqQDAAEAAAADAAAA
AAAAADIwMTQ6MDQ6MDMgMjM6MjQ6MDgAMjAxNDowNDowMyAyMzoyNDowOAAHAAEABwAEAAAAMDEwMAIA
BAABAAAAACABAAwABAABAAAAAAAAABAABQABAAAAWgAAAEAABAABAAAAAAAAAFAABAABAAAAAQAAAAAB
AwABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAQACAAQAAABSOTgAAgAHAAQAAAAwMTAwAAAAAP/bAIQAAQEB
AQEBAQEBAQEBAQICAwICAgICBAMDAgMFBAUFBQQEBAUGBwYFBQcGBAQGCQYHCAgICAgFBgkKCQgKBwgI
CAEBAQECAgIEAgIECAUEBQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgI/8AAEQgMGBAgAwEiAAIRAQMRAf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCxAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol
JicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6AQAD........


//Obs: Nao da certo de terminar de montar o INSERT, Corta no meio o Insert.


: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/>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 08 juillet 2016 - 16:36
Em resumo:

ENVIO = arquivo vira buffer, buffer vira string com crypt e envia a string

RETORNO = recebe a string, descripta ela com uncrypt que vira buffer, que salva o arquivo em disco





Para os fãs do seriado "Jornada nas Estrelas" o termo não é estranho. Teletransportar significa desintegrar uma pessoa ou objeto em um determinado lugar fazendo-o reaparecer em outro.

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/>
Message modifié, 08 juillet 2016 - 16:37
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 08 juillet 2016 - 16:56
//Exemplo Envio

bufMyFile is buffer=fLoadBuffer("c:\arquivos\dados.zip")//buferizou o arquivo

textoEnvio isstring=Crypt(bufMyfile,"",cryptNone,encodeBASE64)//serializou numa string o buffer

//parametro de envio de um webservice
fontedado.contentfile=textoEnvio

---

//Exemplo Recebimento
Xmlrecebido isstring=fontedado.contentfile
bufRecebido is buffer=Uncrypt(Xmlrecebido,"",cryptnome,encodeBASE64)//converteu o serializado em buffer

fSaveBuffer("c:\arquivos\dados.zip",bufRecebido)//converteu o buffer em arquivo


:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/>
Message modifié, 08 juillet 2016 - 17:02