terça-feira, 12 de janeiro de 2016

Foruns > Windev > HTTPREQUEST EM CONSULTAS COMPLEXAS



Foruns > Windev > HTTPREQUEST EM CONSULTAS COMPLEXAS



Dependendo da consulta a ser executada, pode funcionar corretamente no navegador, mas retornar um resultado errado com a função HTTPRequest da WLanguage. Normalmente isso ocorre devido à uma má codificação da requisição, e o servidor WEB não tem como explorar adequadamente o recurso. Neste caso é necessário codificar adequadamente a consulta com a função URLEncode da WLanguage e em seguida passar a sequência codificada para a função HTTPRequest.
sminhaconsulta is string = "http://..."
//codifica a consulta via URLEncode
//substitui os espaços por %20, por exemplo
sminhaconsulta = URLEncode(sminhaconsulta)
//executa a consulta codificada
HTTPRequest(sminhaconsulta)

http://www.pedrosoinformatica.com.br/




Foruns > Windev > IMPRIMIR DIRETAMENTE PARA UM IP OU PORTA




Foruns > Windev > IMPRIMIR DIRETAMENTE PARA UM IP OU PORTA



Muitas vezes precisamos enviar comandos diretamente a uma impressora (exemplo Impressoras PCL) e mais anda para um determinado endereço e porta.
Veja o exemplo abaixo:
/ / Imprime diretamente para a impressora
/ / No endereço: 192.168.15
/ / Na porta da rede: 9100
iDestination (iPCL, "192.168.15:9100")
//Imprime "alo" no canto superior esquerdo da página
iPrint (iYPos (10) iXPos + (10) + "Alo")
iEndPrinting()

http://www.pedrosoinformatica.com.br/




Foruns > Windev > CORES DIFERENTES EM COLUNAS



Foruns > Windev > CORES DIFERENTES EM COLUNAS



Para fazer estes tratamentos, utilizamos os comandos g*.
Exemplo
TABLE_LOG_GRANDE_USUARIO.COL_CEP..Caption = gPen(LightRed) + "CEP"
//Faz com que o título CEP apareça em vermelho.
Para atribuir cores ao conteúdo de uma determinada coluna
// Fonte em azul
TABLE_LOG_GRANDE_USUARIO.COL_CEP..Color = iLightBlue
// Fundo em verde
TABLE_LOG_GRANDE_USUARIO.COL_CEP..BrushColor = iLightGreen


http://www.pedrosoinformatica.com.br/




Imagens - Testar se Tem



Foruns > Windev > Imagens



Se o seu controle de imagem não estiver ligado a um campo memo (de imagem), você pode testar da seguinte forma:
campo_de_imagem..value = ""
// Se você precisar testar a sua altura
y is a image // define a variável y com o tipo imagem
y = IMG_CLI // campo de imagem da tabela de clientes
Trace(y.Height) // => -1


http://www.pedrosoinformatica.com.br/






Função Httpgetresult()



Forum Geswind - Windev


// Retorna o código HTML da página "www.windev.com" 
ResStart = HTTPRequest("http://www.windev.com")
IF ResStart = True THEN
Info("O código HTML é: " + HTTPGetResult())
END

// Exemplo de processamento de um erro retornado pelo servidor web
url is string 
HTTP_Res is string
HTTPError is string
Url = "http://www.amazon.fr/s/ref=nb_ss?__mk_fr_FR=AMAZON&url" + ...
"=search-alias=aps&field-keywords=2746049805"

// Envia uma solicitação para o servidor da Amazon
IF HTTPRequest(Url) THEN
// Solicitação enviada, a url é válida
HTTP_Res = HTTPGetResult()
IF Length(HTTP_Res) = 0 THEN
// Erro do servidor web, 
// os detalhes do erro estão no cabeçalho da página
HTTPError = HTTPGetResult(httpHeader)
Error(HTTPError)
END
END

http://www.pedrosoinformatica.com.br/






Como destacar determinadas células da minha tabela?



Forum Geswind - Windev



Considere:
VAL_soma_das_vendas
// como sendo o nome da célula
TCD_venda_cliente  
// como sendo o nome da tabela dinâmica
COL_NomeCliente
// como sendo o nome do cliente
COL_
Data_Ano
// como sendo o perído
// Claro que você deverá estar manipulando a tabela por células e não por linhas.
No evento DisplayCell desua tabela entre um código semelhante a:
IF TCD_Venda_Cliente.VAL_soma_das_vendas > 200 THEN
    TCD_Venda_Cliente.VAL_soma_das_vemdas .. Color = RGB (45, 255, 0)
END
IF TCD_Venda_Cliente.VAL_soma_das_vemdas <100 THEN
    TCD_Venda_Cliente.VAL_soma_das_vemdas .. Color = RGB (254, 0, 29)
END


http://www.pedrosoinformatica.com.br/



WB - Html para não armazenar no cache o site desenvolvido com Webdev



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/738-html-para-nao-armazenar-cache-site-desenvolvido-com/read.awp






Posté le 15 octobre 2015 - 22:23
Prezados

No desenvolvimento de sites, o cache no cliente é um problema grave, de ter na tela dele algo que nao mais existe no site.

Para resolver em partes isso, segue o seguinte codigo Html:


<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />



Posté le 15 octobre 2015 - 22:47
Caso queira fazer um Reload do site forçado:

Crie uma procedure javascript na janela com o seguinte codigo:


<script>
function ReloadForcado( ) {
location.reload();
}
</script>


e no open da janela com o seguinte codigo:

ReloadForcado( )


WX - Exemplo de Ternário (Condição de código if em uma linha)



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/740-exemplo-ternario-condicao-codigo-uma-linha/read.awp









Posté le 16 octobre 2015 - 21:26

EDT_Nome..BrushColor = EDT_Nome = "" ? LightRed ELSE White
EDT_E_Mail_Cadastro..BrushColor = EDT_E_Mail_Cadastro = "" ? LightRed ELSE White
EDT_DDD..BrushColor = EDT_DDD = "" OR EDT_DDD = 0 ? LightRed ELSE White
EDT_Celular..BrushColor = EDT_Celular = "" ? LightRed ELSE White
EDT_Senha..BrushColor = (EDT_Senha <> EDT_Senha_Confirma) OR (Length(EDT_Senha) < 6) ? LightRed ELSE White
EDT_Senha_Confirma..BrushColor = (EDT_Senha <> EDT_Senha_Confirma) OR (Length(EDT_Senha) < 6) ? LightRed ELSE White

Info("Campos obrigatorios não foram preencidos!")


Posté le 17 octobre 2015 - 10:43

TERNÁRIO OU TERNARY

Vamos ver um dos exemplos acima:

EDT_Nome..BrushColor = EDT_Nome = "" ? LightRed ELSE White


É o mesmo que fazer isso aqui:

IF EDT_NOME = ""

EDT_Nome..BrushColor = LightRed

ELSE

EDT_NOME..Bush Color = White

END



Posté le 17 octobre 2015 - 10:51
Sugestão de melhoria

Poder usar o ELSE ou :

Isso deixaria parecido com outras linguagens e adicionar esse recurso no help.

EDT_Nome..BrushColor = EDT_Nome = "" ? LightRed ELSE White


Ou

EDT_Nome..BrushColor = EDT_Nome = "" ? LightRed : White


Ainda com : não é possível
Mandei para o suporte e para a Pcsoft a sugestão

Um forte abraço e todos

--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
___________________________________


Posté le 17 octobre 2015 - 10:58
Outro exemplo explicado

EDT_Senha_Confirma..BrushColor = (EDT_Senha <> EDT_Senha_Confirma) OR (Length(EDT_Senha) < 6) ? LightRed ELSE White


É o mesmo que esse código abaixo:

IF (EDT_Senha <> EDT_Senha_Confirma) OR (Length(EDT_Senha) < 6)

EDT_Senha_Confirma..BrushColor = White

ELSE

EDT_Senha_Confirma..BrushColor = Light Red

END


--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller




WX - Montando uma string de código Sql com absoluto controle e evitando erros que no debug acabam não sendo exibidos



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/745-montando-uma-string-codigo-sql-com-absoluto-controle/read.awp







Prezados

Eu recomendo fazer de outra maneira, segue minha sugestão:

Sqlcodigo is string = [
UPDATE PUESTOS SET NOMBRE ='@Nombre@' , APELLIDO ='@Apellido@' , PUESTO ='@Puesto@' WHERE ID = @ID@
]

//note que aonde é string tem aspa simples e no id que é int não tem aspas simples e o @@ que eu uso é uma convenção de código minha para agora usar o réplica da linha acima não trocar textos que não devem ser substituídos assegurando a troca somente naquela posição.

Sqlcodigo = Replace (Sqlcodigo, "@Nombre@" , Edt_Nombre)
Sqlcodigo = Replace (Sqlcodigo, "@Apelido@" , Edt_Apelido)
Sqlcodigo = Replace (Sqlcodigo, "@Puesto@" , Edt_Puesto)
Sqlcodigo = Replace (Sqlcodigo, "@ID@" , Edt_ID)


//OBS.: Agora tá 100% certo o código no debug aqui nesse ponto a string está perfeitamente montada fácil localização e pode ser capturada na parte da plane Debug o sql se copiar e colar do debug no seu Manager Sql digamos do Mssql vai ter que funcionar. LEMBRO da questão do null se tiver que controlar use o Replace null que eu postei no forum oficial da PcSoft Bar.


SQLExec(Sqlcodigo, "QRY1")

//Da mais trabalho mas fica mais fácil de achar os erros... que são na maioria das vezes a falta de vírgula entre campos que faltou no exemplo do sr Carbalho e não por aspas simples quando é string ou não por quando for num podendo ser controlado isso com o Replacenull ou com um IF ou ainda com uma condição TERNÁRIA ou usar o StringBuilder.


Exemplo errado de fazer pois fica difícil de achar o erro até no debug
SQLExec("UPDATE PUESTOS SET NOMBRE ="+ EDT_Nombre +" APELLIDO ="+ EDT_Apellido +" PUESTO ="+ EDT_Puesto +" WHERE ID = "+ STC_ID,"QRY1")



Posté le 18 octobre 2015 - 03:23
Pode ser usado no SqlExec ou no HexecuteSqlQuery:

//Codigo SQL com replace de campos

//Array
LASTNAME is dynamic array
FIRSTNAME is dynamic array
EXTENSION is dynamic array

Sqlcodigo is string = [
UPDATE PUESTOS SET NOMBRE ='@Nombre@' , APELLIDO ='@Apellido@' , PUESTO ='@Puesto@' WHERE ID = @ID@
]

Sqlcodigo = Replace (Sqlcodigo, "@Nombre@" , Edt_Nombre)
Sqlcodigo = Replace (Sqlcodigo, "@Apelido@" , Edt_Apelido)
Sqlcodigo = Replace (Sqlcodigo, "@Puesto@" , Edt_Puesto)
Sqlcodigo = Replace (Sqlcodigo, "@ID@" , Edt_ID)

//Dai
//Exemplo 1

i is int = 0
SQLExec(Sqlcodigo, "QRY1")
WHILE SQLFetch("QRY1") = 0 // There is still another line to read
i++
// Retrieve the data
LASTNAME[i] = SQLGetCol("QRY1", 1)
FIRSTNAME[i] = SQLGetCol("QRY1", 2)
EXTENSION[i] = SQLGetCol("QRY1", 3)
END
SQLClose("QRY1")


//OU
//Exemplo 2

QrySql is Data Source
ok is boolean = SQLExec(QrySql , Conn, QueryDefault, Sqlcodigo)
IF ok = True
FOR EACH QrySql

LASTNAME[i] = QrySql.LASTNAME

FIRSTNAME[i] = QrySql.FIRSTNAME

EXTENSION[i] = QrySql.EXTENSION

END
END


WB - Como deixar os endereços dos sites e webservices feitos com Webdev sem exibir os caminhos do WAS



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/748-como-deixar-enderecos-dos-sites-webservices-feitos-com/read.awp











Posté le 19 octobre 2015 - 16:28

Prezados,

Seguido me pedem como fazer isso. Estou entao fazendo aqui um descritivo de como deixar os endereços dos sites e webservices feitos com Webdev sem exibir os caminhos do WAS escondendo PAGE-Home.awp e tendo apenas o endereço do dominio sempre exibido na url do navegador de internet.

Ex.:

http://177.124.60.220:8081/WD200AWP/WD200Awp.exe/CONNECT/taxionline

Deixar Assim:

http://www.taxi62.com.br/taxionline


OU

http://177.124.60.220:8081/WD200AWP/WD200Awp.exe/CONNECT/site

Deixar Assim:

http://www.taxi62.com.br/



Posté le 19 octobre 2015 - 16:44
Links adicionais para estudo:

http://www.w3.org/TR/html401/present/frames.html

http://www.w3.org/TR/WD-html40-970917/present/frames.html

--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
____________________________



Wx - Trabalhando com arquivo .RTF (Texto Formatado)



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/751-trabalhando-com-arquivo-rtf-texto-formatado/read.awp








Botão SALVAR:
//Anotacoes do Usuario - SALVAR
s is string = RTFToText(EDT_Anotacoes)
IF s <> "" THEN
RtfSalvar()
ELSE
Info("Não foi digitado nada para ser salvo.")
END


Ao abrir a Janela
Procedure RtfAbrir()

//RTF
PathFile_RTF is string = fCurrentDir(fCurrentDrive()) +"\Anotacoes_"+Usuario+".RTF"
EDT_Anotacoes..RichEdit = True
EDT_Anotacoes..Visible = True

// Open the selected document
IF RTFLoad(EDT_Anotacoes, PathFile_RTF) = False THEN

RETURN

END

// Initialize the global variable with the name of the opened document
gfsDocumentName = PathFile_RTF

// Position the cursor at the beginning of the edit control
EDT_Anotacoes..Cursor = 1

IF TextHeight(EDT_Anotacoes, EDT_Anotacoes) > EDT_Anotacoes..Height THEN
// Display the vertical scrollbar
ScrollBarShow(EDT_Anotacoes, sbVert)
ELSE
// Remove the scrollbar
ScrollBarShow(EDT_Anotacoes, sbVert, False)
END


Procedure Salvar
Procedure RtfSalvar()

//RTF
PathFile_RTF is string = fCurrentDir(fCurrentDrive()) +"\Anotacoes_"+Usuario+".RTF"

EDT_Anotacoes..RichEdit = True

EDT_Anotacoes..Visible = True

// Procedure used to write data to a text file
// IN: sDocumentName: Name of the document

nFileID is int = 0

// Open the file
nFileID = fOpen(PathFile_RTF, foCreate + foWrite)

// Save the document
fWrite(nFileID, EDT_Anotacoes, Length(EDT_Anotacoes))

// Initialize the global variables
PathFile_RTF = ExtractString(PathFile_RTF, 1, “-)

// Close the document
fClose(nFileID)


Teste

Teste
teste