Mostrando postagens com marcador Banco. Mostrar todas as postagens
Mostrando postagens com marcador Banco. Mostrar todas as postagens

quarta-feira, 8 de junho de 2016

WX - Objetivo: Anexar qualquer tipo de arquivo (TXT, PDF, Word, Excel e outros tipos de documentos) no banco de dados



forum.pcsoft.fr/pt-BR/pcsoft.br.windev/1279-objetivo-anexar-qualquer-tipo-arquivo-txt-pdf-word/read.awp




Publicado em junho, 08 2016 - 2:23 AM

Prezados,

Autor do Post: Evandro Rodrigues de Andrade

Objetivo: Anexar qualquer tipo de arquivo (TXT, PDF, Word, Excel e outros tipos de documentos) no banco de dados.

Observação: O documento ou arquivo é salvo no banco e não no diretório.



Como vai funcionar:

1º - Selecionar o arquivo em um botão

2º - Depois de selecionado gravar o arquivo na tabela do banco de dados e exibir uma mensagem: "Arquivo adicionado com sucesso."

3º - Listar em seguida todos os arquivos anexados no banco de dados

4º - Um botão abrir ou baixar ou exportar o documento selecionado da tabela.



Sendo assim segue os códigos:

1º - Procedure para mostrar anexos na tabela:

Procedure MostrarAnexos( )

TableDeleteAll(TABLE_arquivos_em_anexo)

FOR EACH arquivos

nIDArquivo is 8-byte int = arquivos.id_arquivo

sInformacaoArquivoBinario is string = HInfoMemo(arquivos,arquivo_anexo)

sNomeArquivo is string = fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fFileName + fExtension)

dtData is DateTime = fDateTime(ExtractString(sInformacaoArquivoBinario,2,TAB))

sExtensaoArquivo is string = Replace((fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fExtension)),".","")

//sTamanho is string = fSize(ExtractString(sInformacaoArquivoBinario,2,TAB))

sTamanho is string = ExtractString(sInformacaoArquivoBinario,3,TAB)

TableAdd(TABLE_arquivos_em_anexo,nIDArquivo+TAB+sNomeArquivo+TAB+dtData+TAB+sExtensaoArquivo+TAB+sTamanho)

END

TableSort(TABLE_arquivos_em_anexo,"-TABLE_arquivos_em_anexo.COL_Id_do_anexo")




2º - Botão para adicionar anexos no banco:

// Abre o selecionador de arquivo

sArquivo is string

sArquivo = fSelect("", "", "Selecione um arquivo...", "Todos (.)" + TAB + "*.*", "*.*")

IF sArquivo ~= “ THEN

RETURN

END

// Anexa um arquivo para o registro

HLinkMemo(arquivos,arquivo_anexo,sArquivo,hAcceptOpenedFile)

// Adiciona o registro

HAdd(arquivos)

MostrarAnexos( )




3º - Botão para abrir o anexo selecionado na tabela:

//abrir o anexo selecionado na tabela

HSeekFirst(arquivos,id_arquivo,TABLE_arquivos_em_anexo.COL_Id_do_anexo)

sInformacaoArquivoBinario is string

IF HFound() = True THEN

// Retorna as características de memorandos binários e texto

sInformacaoArquivoBinario = HInfoMemo(arquivos,arquivo_anexo)

sArquivo is string = fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fFileName + fExtension)

sArquivoTemporario is string = fTempPath() + sArquivo

// Extrai o arquivo para um diretório temporario

HExtractMemo(arquivos.arquivo_anexo,sArquivoTemporario)

// Recuperar o nome do diretório temporário e executa ou abre o arquivo em seguida

ShellExecute(sArquivoTemporario)

ELSE

Error("Arquivo não encontrado ou o arquivo pode ser aberto ou executado.")

END




4º - Botão para exportar o arquivo:

//Exportar

HSeekFirst(arquivos,id_arquivo,TABLE_arquivos_em_anexo.COL_Id_do_anexo)

sInformacaoArquivoBinario is string

sArquivo is string

sExtensaoArquivo is string

sDiretorio is string

// Retorna as características de memorandos binários e texto

sInformacaoArquivoBinario = HInfoMemo(arquivos,arquivo_anexo)

sArquivo = fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fFileName + fExtension)

sExtensaoArquivo = fExtractPath(ExtractString(sInformacaoArquivoBinario,2,TAB), fExtension)

//sDiretorio = fSelect("", sArquivo, "Salvar como...", sExtensaoArquivo, sExtensaoArquivo, fselCreate + fselExist)

sDiretorio = fSelect("", sArquivo, "Salvar como...", "Todos os arquivos (*"+sExtensaoArquivo+")" + TAB + "*"+sExtensaoArquivo+"*", "", fselCreate + fselExist)+sExtensaoArquivo
HExtractMemo(arquivos,arquivo_anexo,sDiretorio)




5º - Código para filtrar na tabela:

//filtrar na tabela:
TableEnableFilter(TABLE_arquivos_em_anexo.COL_Nome,filterContains,MySelf)


O código foi feito conforme os links que você Adriano me passou

Agradecimentos especiais: Prof.º Adriano Boller, Prof.º Amarildo Matos e Prof.º Julio Cesar Pedroso

Autor do Post: Evandro Rodrigues de Andrade

- Meu muito obrigado a todos!

: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/








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








sexta-feira, 18 de dezembro de 2015

WinDev - Curso - 173 - Pegar Retorno Arquivo Banco - Componente - Email -







Video - pegar Retorno Banco


Nessa aula vou mostrar como eu leio um arquivo de retorno do banco, e coloco isso numa
tabela, para posteriormente colocar esses dados no arquivo de duplicata


TableDeleteAll(TABLE_Retorno)  // DELETO TABELA
nArquivoid is int
nArquivoid = fOpen(EDT_Retorno,foReadWrite) // ABRIR ARQUIVO, RETORNO
IF nArquivoid<>-1 THEN  // SE EXISTE ARQUIVO
    n_contador is int=0
    sLinha is string="" //
    LOOP  // VAI ATE O FINAL DO ARQUIVO
        sLinha = fReadLine(nArquivoid) // LENDO CADA LINHA
        IF sLinha = EOT THEN  // SE FOR FIM/ TERMINOU
            BREAK
        ELSE           
            IF sLinha[[1]]="1" THEN  // SE A PRIMEIRA COLUNA É 1
                TableAddLine(TABLE_Retorno) // ADICIONAR TABELA
                n_contador++ // SOMANDO
                TABLE_Retorno.COL_4_cpf_cnpj_empresa[n_contador]=sLinha[[4 TO 17]] //
                TABLE_Retorno.COL_18_agencia[n_contador]=sLinha[[18 TO 21]]
                TABLE_Retorno.COL_24_conta[n_contador]=sLinha[[24 TO 28]]
                TABLE_Retorno.COL_29_dac[n_contador]=sLinha[[29 TO 29]]
                TABLE_Retorno.COL_63_nosso_numero_titulo[n_contador]=sLinha[[63 TO 70]]
                TABLE_Retorno.COL_109_cod_ocorrencia[n_contador]=sLinha[[109 TO 110]]
                SWITCH TABLE_Retorno.COL_109_cod_ocorrencia[n_contador]
                    CASE "02"
                        TABLE_Retorno.COL_DescricaoOcorrencia[n_contador]="Entrada Confir"                   
                    CASE "03"
                        TABLE_Retorno.COL_DescricaoOcorrencia[n_contador]="Entrada Rejeitadar"                   
                    OTHER CASE                       
                END
                d_data_vencimento is Date
                d_data_vencimento..Day=NumToString(sLinha[[147 TO 148]])
                d_data_vencimento..Month=sLinha[[149 TO 150]]
                d_data_vencimento..Year="20"+sLinha[[151 TO 152]]
                TABLE_Retorno.COL_147_data_vencimento[n_contador]=d_data_vencimento
                TABLE_Retorno.COL_153_valor_titulo[n_contador]=sLinha[[153 TO 165]]
                TABLE_Retorno.COL_153_valor_titulo[n_contador]=TABLE_Retorno.COL_153_valor_titulo[n_contador]/100
            ELSE               
            END
        END // IF sLinha = EOT THEN
    END    // LOOP
END // IF nArquivoid<>-1 THEN
TableSort(TABLE_Retorno,"TABLE_Retorno.COL_109_cod_ocorrencia","TABLE_Retorno.COL_325_nome_pagador")
fClose(nArquivoid)
TraceEnd()

TableDisplay(TABLE_Retorno)














Blog - Curso Iniciante /1/... - Inicio
Blog - Curso Iniciante /2/... - Menu
Blog - Curso Iniciante /3/... Campos  
Blog - Curso Iniciante /4/... - Duvida/Style
Blog - Curso Iniciante /5/... - Menu
Blog - Curso Iniciante /6/... - Menu 2
Blog - Curso Iniciante /7/... - If / ShellExecute  
Blog - Curso Iniciante /8/... - ReturntoCapture 
Blog - Curso Iniciante /9/... - Info
Blog - Curso Iniciante /10/.. - DateSys - Now
Blog - Curso Iniciante /11/... - Criando Analise Agenda 
Blog - Curso Iniciante /12/... - Menu , Agenda
Blog - curso Iniciante /13/... - HreadSeek  
Blog - curso Iniciante /14/... - For Each - Percorrer Tabela 
Blog - Curso Iniciante /15/... - Query Consultas
Blog - Curso Iniciante /16/... - Tabela Relatorio
Blog - Curso Iniciante /17/... - Relatorio Criando 
Blog - Curso Iniciante /18/... - Relatorio Manual 
Blog - Curso Iniciante /19/.. - Menu Popup
Blog - Curso Iniciante /20/... - Data - Separar dia mes e ano
Blog - Curso Iniciante /21/... - Time - Separar hora/min/seg 
Blog - Curso Iniciante /22/... - Operadores
Blog - Curso Iniciante /23/... - String Igualdade 
Blog - Curso Iniciante /24/... - Switch / Case
Blog - Curso Iniciante /25/... - LOOP 
Blog - Curso Iniciante /26/... - FOR
Blog - Curso /27/... - Extern 
Blog - Curso /28/... - My 
Blog - Curso /29/... Procedures
Blog - Curso /30/... HSave  .. - Inclui Um Registro
Blog - Curso /31/... - Hsave - Altera um Registro
Blog - Curso /32/... - HDelete - Exclui Registro(s)
Blog - Curso /33/... - Relatorio
Blog - Curso /34/... - Dialog 
Blog - Curso /35/... - Input
blog - Curso /36/... - Combox 
Blog - Curso /37/... Combox Tabela 
Blog - Curso /38/... List Box
Blog - Curso /39/... - Analise Agenda/Ligacoes
Blog - Curso /40/... - Rad - Tabela Relacionada Agenda/Ligações
Blog - Curso /41/... - Tabela Relacionada Manual
Blog - Curso /42/... - Dica Tela/Code Separado
Blog - Curso /43/... - Mapa /1..
Blog - Curso /44/... - Mapa /2.. Imprime
Blog - Curso /45/... - Fechar Programa - EndPrograma()
Blog - Curso /46/... - Camera Habilita/Desabilita 
Blog - Curso /47/... - Tabela e Formulario - Configurar Cnpj
Blog - Curso /48/... - Camera - Tirar Uma Foto e Gravar Imagem
Blog - Curso /49/... - Reports e Queies - Instalacao
Blog - Curso /50/... Reports e Queies - Relatorio - Como Gerar 
Blog - Curso /51/... Pedidos/Orcamento 1/... Analise
Blog - Curso /52/... Pedidos/Orcamento 2/.. Analise Windev
Blog - Curso /53/... Pedidos/Orcamento 3/... Relacionamento
Blog - Curso /54/... Pedidos Orcamento 4/... Rad
Blog - Curso /55/... Pegar Quantidade e Codigo - Separador * 
Blog - Curso /56/... Pegar Retorno de Uma Tabela e colocar Campo 
Blog - Curso /57/... Xml - Ler Conteudo Tags e Importar Pedido
Blog - Curso /58/... Ini - Ler e Gravar 
Blog - Curso /59/... Pedidos Orcamento 5/... Inicio Digitacao Pedido
Blog - Curso /60/... Pedidos Orcamento 6/... Digitando Iten Pedido
Blog - Curso /61/... Pedidos orcamento 7/... Gravando Pedido e Itens   
Blog - Curso /62/... Pedido Orcamento 8/... Consulta cliente   
Blog - Curso /63/... Tabela - Ancorar Coluna
Blog - Curso /64/... Tabela - Esconder ou Mostrar Coluna 
Blog - Curso /65/... RSS 
Blog - Curso /66/... Pedido Orcamento 9/... Consulta Material
Blog - Curso /67/... Tabelas, Control F Pesquisa Toda Tabela /Contenha/Cor Fundo
Blog - Curso /68/... Pedidos Orcamento 10/... Planos - Condições Pagamento 
Blog - Curso /69/... - Calculadora dentro do Campo Valor 
Blog - Curso /70/... Mapa - Itinerario
Blog - Curso /71/... Tabela - Alterar Nome Coluna
Blog - Curso /72/... Botal Fazer Menu popup 
Blog - Curso /73/... Debug - Como Usar
Blog - Curso /74/... Tabela Alinhar Coluna Lado Esquerdo 
Blog - Curso /75/... Pedidos Orcamento 11/... Quantidade /Mascara/Mudar
Blog - Curso /76/... YesNo - Pergunta Se Deseja Eliminar 
Blog - Curso /77/... Select - Case - Query
Blog - Curso /78/... Pedido/Orcamento 12/... - Analise Cond.Pagto
Blog - Curso /79/... Campos - Como Alterar configuracao via Codigo
Blog - Curso /80/... Pedido/Orcamento 13/... - Tabela,Gerar Condicoes/Parcelas
Blog - Curso /81/... Configuracao Trocar Exe para Wdl ou outro 
Blog - Curso /82/... Utilitarios - PopUp - Aumento Precos Materiais 
Blog - Curso /83/... TableEnableFilter - Digita Nome e Filtra 
Blog - Curso /84/... Dica Copiar Colar Texto Ou Imagen Pdf
Blog - Curso /85/... SElect Como Usar Wizard 
Blog - Curso /86/... Radio - Colocar tudo Mesma Linha
Blog - Curso /87/... Procedure - Melhoria Versao20 - Parametros
Blog - Curso /88/... Style - Tabela Como Alterar
Blog - Curso /89/... Style - Tab Como Alterar
Blog - Curso /90/... Pedido/Orcamento 14/... - Style - Mudando Botao Procura
Blog - Curso /91/... - Pedido/Orcamento 15/... - Pedido - Totalizar Colunas Tabela
Blog - Curso /92/... Backup - Hyperfile 
Blog - Curso /93/... Debug - STOP 
Blog - Curso /94/... Tabela - Alterar Cor da Coluna - Texto
Blog - Curso /95/... Select Max - Pegar o Numero Proxima Nota 
Blog - Curso /96/... Tabela Divisao de Muitas Colunas 
Blog - Curso /97/... Analise - Configurar Campo para Vir Automatico Combox 
Blog - Curso /98/... Tabela - Double click - Entrar direto Alteração do Cliente 
Blog - Curso /99/... Tabela MultiSeleção
Blog - Curso/100/... Tabela - TableMoveLine - Move Linha Baixou ou Cima
Blog - Curso/101/... TableAjust - Ajustar Tabela com Colunas
Blog - Curso/102/... TableSort - Ordem nas Colunas
Blog - Curso/103/... Tabelas Somar Manualmente rowTotal 
Blog - Curso/104/... Pedidos/Orcamento 16/... Melhorando Visual Incluir Pedido 
Blog - Curso/105/... Pedidos 17/... Digitacao Iten e Gera Tabela
Blog - Curso/106/... Fazer Tecla Atalho Direto no Cliente
Blog - Curso/107/... Como Fazer para nao passar Campo
Blog - Curso/108/... Pedido 18/... Menu Inicial Ajustando Tela
Blog - Curso/109/... Select Color - Como Selecionar uma Cor 
Blog - Curso/110/... SelectionColor - Mudar cor Seleção Table/Combox/Listbox
Blog - Curso/111/... Stc - Como fazer como se fosses uma ajuda para dar dica Cliente 
Blog - Curso/112/... ListBox - Mostrar como se fosse ajuda e selecionar 
Blog - Curso/113/... Close - Window - Como mandar Varios Retornos 
Blog - Curso/114/... Pedido 19/... Salvar Digitacao do pedido
Blog - Curso/115/... Converter Code de Frances para Ingles ou Contrario 
Blog - Curso/116/... Pedido 20/... Recuperar Pedido Digitado 
Blog - Curso/117/... Pedido 21/... Gravar Pedido/Tabela pedidos e itens pedido 
Blog - Curso/118/... Como Nao Mudar Nome Variavel Windev 
Blog - Curso/119/... Pedido 22/... Calcular Titulos no Pedido 
Blog - Curso/120/... Pedido 23/... Pedido - Calculo condições 
Blog - Curso/121/... Faltou Luz e Recuperei uma Window do Projeto Windev 
Blog - Curso/122/... Pedido 24/... Calcular Titulo Modelo2  
Blog - Curso/123/... Pedido 25/... Tabela - Criando Duplicata Receber
Blog - Curso/124/... Pedido 26/... Duplicata Linkando com Pedido e cliente 
Blog - Curso/125/... Pedido 27/... Criando Tabela Contas Receber 
Blog - Curso/126/... Pedido 28/... Gravando Duplicatas ao Gerar Pedido
Blog - Curso/127/... ExecuteProcess 
Blog - Curso/128/... Code - Marcar Pontos - MARK 
Blog - Curso/129/... Pedido 29/... Pedido - Iniciando Relatorio 
Blog - Curso/130/... Menu Ribbon - Alterar Cor Seleção 
Blog - Curso/131/... Pedido 30/... Pedido Gerar Tabela Relatorio
Blog - Curso/132/... Pedido 31 - Listar Pedido 
Blog - Curso/133/... Pedido 32 - Windows Mdi
Blog - Curso/134/... Code Bricks
Blog - Curso/135/... Menu Ribbon 
Blog - Curso/136/... Dicas
Blog - Curso/137/... Dicas de Analise 
Blog - Curso/138/... Relatorio Filtrar Dados-Ex.Material Saldo
Blog - Curso/139/... Duas Tabelas - Arrastar de uma Tabela Para Outra Os Dados
Blog - Curso/140/... Code - Procedures - Como diferenciar com  Cores
Blog - Curso/141/... Wdk - Como Criar
Blog - Curso/142/... Internetconnection - Verificar Conexão
Blog - Curso/143/... TableEnableFilter
Blog - Curso/144/... ChaveComposta
Blog - Curso/145/... Detais - Mantatory Input - Campo Obrigatorio
Blog - Curso/146/... Datas - pegar String Nfe e Jogar no Date 
Blog - Curso/147/... Tabela Asc, Fazer em WinDev 
Blog - Curso/148/... SuperControle 
Blog - Curso/149/... Calendario
Blog - Curso/150/... Xml - Como Montar sem Comandos 
Blog - Curso/151/... Tabela Como Tirar Colunas 
Blog - Curso/152/... Tab - SideBar 
Blog - Curso/153/... String Para Numero -> VAL 
Blog - Curso/154/... Internet - HTML 
Blog - Curso/155/... Descontos Nos itens - nfe - Nfce
Blog - Curso/156/... Wdm - Mensagem de Ingles Para Portugues WinDev 
Blog - Curso/157/... Tabela Somar Valores com Condição
Blog - Curso/158/... Tabela Container
Blog - Curso/159/... Desabilitar Campo
Blog - Curso/160/... Mudar Cor do botao
Blog - Curso/161/... Window Mdi - Focus goin-
Blog - Curso/162/... Botao Seta Abaixo, Menu
Blog - Curso/163/... Separar Dia Mes Ano Na Data Arquivo Remessa Banco
Blog - Curso/164/... WinDev - Dashboard / Window Interna
Blog - Curso/165/... WinDev - Importar Ncm Site Olho Imposto 
Blog - Curso/166/... WinDev - Combox Fazer Manual e Selecionar Banco
Blog - Curso/167/... WinDev Tabela Coluna Check Style 
Blog - Curso/168/... Criar Varios Titulos Automatico -  Duplicatas
Blog - Curso/169/... HFilter - Combox Bancos Filtar por Empresa 
Blog - Curso/170/... Table Pai e Filho - Grupo e Materiais 
Blog - Curso/171/.. Email - Como Fazer Componente e Usar 
Blog - Curso/172/... Email - Componente - Anexo - Array 
Blog - Curso/173/... Boleto Pegar Retorno Banco
Blog - Curso/174/... Sistema Bandeja no Windows - SysIconAdd 

Teste

Teste
teste