segunda-feira, 11 de maio de 2015

Agenda - Windev/Webdev/Windev Mobile Parte 9 Looper


Assistir Video Windev Mobile - Agenda: Looper 9













amarildo@matosinformatica.com.br




=======================================================================
Vou Mostrar como Fazer Break no Looper. Eu estava assistindo a aula
do Pedrosao aula 13,quando viu e achei interessante.
 http://189.113.6.131/w_pedroso
=======================================================================
Ir na descricao do Looper

ir em Content

e no lado do break clique no verde

escolha o campo , e passe para o lado direito

Crie um combox por grupo, onde vamos decidir
se queremos ou nao o break

Na minha rotina acrescentei , perguntando se é por grupo ou nao
se for por grupo, habilita os break e faco por ordem de grupo
caso contrario desabilito os break
// Por Grupo
IF CBOX_por_grupo=0 THEN
    BRK_BreakFooter1..Visible=False
    BRK_BreakHeader1..Visible=False
ELSE
    BRK_BreakFooter1..Visible=True
    BRK_BreakHeader1..Visible=True
    sFiltro = sFiltro + " order by agenda.grupo"       
END
// Por Grupo
====================================== FONTE ===============

PROCEDURE agenda_looper(sGrupo is string)
gsSQL = [
    SELECT
    agenda.nome as age_nome,
    agenda.telefone as age_telefone,
    agenda.grupo as age_grupo
    from
    agenda
    %1
]
sFiltro is string
IF sGrupo="Todos" THEN
ELSE
    IF sGrupo<>"" THEN
        sFiltro = " where agenda.grupo='"+sGrupo+"'"
    END
END
// Por Grupo
IF CBOX_por_grupo=0 THEN
    BRK_BreakFooter1..Visible=False
    BRK_BreakHeader1..Visible=False
ELSE
    BRK_BreakFooter1..Visible=True
    BRK_BreakHeader1..Visible=True
    sFiltro = sFiltro + " order by agenda.grupo"       
END
// Por Gruop
gsSQL = StringBuild(gsSQL,sFiltro)

LooperDeleteAll(LOOP_Sq_agenda)
IF HExecuteSQLQuery(gdsQry,hQueryDefault,gsSQL) THEN
    HReadFirst(gdsQry)
    WHILE NOT HOut()
        LooperAddLine(LOOP_Sq_agenda,gdsQry.age_nome,gdsQry.age_telefone,gdsQry.age_grupo)
        HReadNext(gdsQry)
    END
    HFreeQuery(gdsQry)    
END
=======================================================================
Blogs Referente Agenda Curso
http://windevdesenvolvimento.blogspot.com.br/2015/01/agenda-windevwebdevwibdevmobile-parte-1_14.html
http://windevdesenvolvimento.blogspot.com.br/2015/01/agenda-windevwebdevwibdevmobile-parte-2.html
http://windevdesenvolvimento.blogspot.com.br/2015/01/agenda-windevwebdevwibdevmobile-parte-3.html
http://windevdesenvolvimento.blogspot.com.br/2015/01/agenda-windevwebdevwibdevmobile-parte-4.html
http://windevdesenvolvimento.blogspot.com.br/2015/01/agenda-windevwebdevwibdevmobile-parte-5_59.html
http://windevdesenvolvimento.blogspot.com.br/2015/01/agenda-windevwebdevwibdevmobile-parte-6.html
http://windevdesenvolvimento.blogspot.com.br/2015/01/agenda-windevwebdevwibdevmobile-parte-7.html
http://windevdesenvolvimento.blogspot.com.br/2015/01/agenda-windevwebdevwindev-mobile-parte_20.html
=======================================================================














Tabela Sort - Classificar uma coluna

Tabela Sort - Classificar uma coluna



TableEnableFilter(TABLE_motorista.COL_IdEmpresa,filterStartsWith,gnEmpresaCodigo)
TableSort(TABLE_motorista,"+COL_Nome")

New Procedure WS CEP Rota

http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/584-new-procedure-cep-rota/read.awp?hl=cep

ProcedureWS_CEP_Rota(LOCALOrigem,LOCALDestino,LOCALDebugSN)

//Origem ="dr goulin 1699 curitiba PR"
//Destino = "jose lopacinsk 500 curitiba PR"

IFGloDebugSN="S"THEN
DebugSN="S"
END



IFOrigem<>""ANDDestino=""THEN
Destino=Origem
END

nVirgula isint=0

//VARIAIVEIS
nID_Numero isint=1
nID_Endereco isint=1
nID_Bairro01 isint=1
nID_Bairro02 isint=1
nID_Cidade01 isint=1
nID_Cidade02 isint=1
nID_Estado isint=1
nID_Pais isint=1
nID_CEP isint=1
nQTD_ADDRESS_COMPONENT isint=0

//Limpa variaveis
//Endereço de Origem
GloVoceEnderecoLongo="ERRO"
GloDestinoEnderecoLongo="ERRO"
GloVoceLatitude=0
GloVoceLongitude=0
GloDestinoLatitude=0
GloDestinoLongitude=0

//Norte
GloLatitudeNorte=""
GloLongitudeNorte=""

//Sul
GloLatitudeSul=""
GloLongitudeSul=""

//Tempo
GloTempoDestino=""
GloTempoDestinoText=""
GloTempoTaxi=""

//Distancia
GloDistanciaDestino=""
GloDistanciaDestinoText=""
GloDistanciaTaxi=""

//Rota
//GloDebugSN, GloVoceEnderecoLongo, GloVoceEndereco, GloDestinoEnderecoLongo, GloDestinoEndereco, GloTempoDestino, GloTempoDestinoText, GloTempoTaxi, GloDistanciaDestino, GloDistanciaDestinoText, GloDistanciaTaxi, GloVoceLatitude, GloVoceLongitude, GloDestinoLatitude, GloDestinoLongitude, GloLatitudeNorte, GloLongitudeNorte, GloLatitudeSul, GloLongitudeSul is string

//Origem
//LocEnderecoOrigem, LocEnderecoCurtoOrigem, LocNumeroOrigem, LocBairro01Origem, LocBairro02Origem, LocCidade01Origem, LocCidade02Origem, LocEstadoOrigem, LocPaisOrigem, LocCepOrigem, LocLatitudeOrigem, LocLongitudeOrigem, LocLatitudeOrigemNorte, LocLongitudeOrigemNorte, LocLatitudeOrigemSul, LocLongitudeOrigemSul is string = ""

//Destino
//LocEnderecoDestino, LocEnderecoCurtoDestino, LocNumeroDestino, LocBairro01Destino, LocBairro02Destino, LocCidade01Destino, LocCidade02Destino, LocEstadoDestino, LocPaisDestino, LocCepDestino, LocLatitudeDestino, LocLongitudeDestino, LocLatitudeDestinoNorte, LocLongitudeDestinoNorte, LocLatitudeDestinoSul, LocLongitudeDestinoSul is string = ""


ok isboolean=False

IFOrigem<>""ANDDestino<>""

ChangeCharset(charsetOccidental)// SEM ACENTO

Origem=Replace(Origem," ","+")

Origem=Capitalize(WS_RemoveAcentos(Origem))

Destino=Replace(Destino," ","+")

Destino=Capitalize(WS_RemoveAcentos(Destino))

//Aceita endereço e lat e long na origem e destino
UrlRota isstring="http://maps.googleapis.com/maps/api/directions/xml?origin="+Origem+"&destination="+Destino+"&sensor=false&mode=driving"

IFDebugSN="S"THEN
Info("URL Busca Origem Google",UrlRota)
END
ok=HTTPRequest(UrlRota)


//Rota
IFok=TrueTHEN

XmlResultado isstring=WS_Android_IOS_HTTPGetResult()

IFPositionOccurrence(XmlResultado,"<status>OK</status>",firstRank,FromBeginning) >0ORPositionOccurrence(XmlResultado,"<status>ok</status>",firstRank,FromBeginning) >0



IFLength(XmlResultado) >0THEN

//Point Market
//---------------------------------------------------------------------------------------------------------//
GloRotaEncode=XmlResultado
nInicioPoint isint=PositionOccurrence(XmlResultado,"<copyrights>",firstRank,FromBeginning)
GloRotaEncode=Middle(XmlResultado,nInicioPoint,Length(XmlResultado))
nInicioPoint=PositionOccurrence(GloRotaEncode,"<points>",firstRank,FromBeginning)+Length("<points>")
nFinalPoint isint=PositionOccurrence(GloRotaEncode,"</points>",firstRank,FromBeginning)
GloRotaEncode=Middle(GloRotaEncode,nInicioPoint,nFinalPoint-nInicioPoint)
//---------------------------------------------------------------------------------------------------------//

IFDebugSN="S"
Info("POINT",GloRotaEncode,"",XmlResultado)
END

//Nao deve remover o acento antes do endecode
XmlResultado=WS_RemoveAcentos(XmlResultado)// retirou caracteres especiais
//Nao deve remover o acento antes do endecode

sXmlResultadoRecorte isstring=XmlResultado

//IMPORTANTE LIMPAR O XML

XmlResultado=WS_RemoveCaracteresRota(XmlResultado)// retirou os steps

IFDebugSN="S"THEN
Info("Retorno XML Busca Origem",XmlResultado)
END
//Corta inicio
//////////////////////////////////////////////////////////////////////////////////////
nInicio isint=PositionOccurrence(XmlResultado,"</step>",lastRank,FromBeginning) +7
XmlResultado=Middle(XmlResultado,nInicio,Length(XmlResultado))
XmlResultado="<leg>"+XmlResultado

//Corta fim
nFim isint=PositionOccurrence(XmlResultado,"</leg>",firstRank,FromBeginning) +5
XmlResultado=Middle(XmlResultado,1,nFim)
//////////////////////////////////////////////////////////////////////////////////////


IFIniOSMode() =TrueTHEN

NoXml isstring=XMLExtractString(XmlResultado,"leg")

//Endereço de Origem
GloVoceEnderecoLongo=XMLExtractString(NoXml,"start_address")
GloVoceEnderecoLongo=Capitalize(GloVoceEnderecoLongo)

//Endereço de Destino
GloDestinoEnderecoLongo=XMLExtractString(NoXml,"end_address")
GloDestinoEnderecoLongo=Capitalize(GloDestinoEnderecoLongo)

//Tempo
NoXml1 isstring=XMLExtractString(NoXml,"duration")
GloTempoDestino=XMLExtractString(NoXml1,"value")
GloTempoDestinoText=XMLExtractString(NoXml1,"text")
GloTempoTaxi=GloTempoDestino

//Distancia
NoXml1=XMLExtractString(NoXml,"distance")
GloDistanciaDestino=XMLExtractString(NoXml1,"value")
GloDistanciaDestinoText=XMLExtractString(NoXml1,"text")
GloDistanciaTaxi=GloDistanciaDestino

//Origem
NoXml1=XMLExtractString(NoXml,"start_location")
IFVal(XMLExtractString(NoXml1,"lat"))<0
GloVoceLatitude=XMLExtractString(NoXml1,"lat")
GloVoceLongitude=XMLExtractString(NoXml1,"lng")
END

//Destino
NoXml1=XMLExtractString(NoXml,"end_location")
IFVal(XMLExtractString(NoXml1,"lat")) <0THEN
GloDestinoLatitude=XMLExtractString(NoXml1,"lat")
GloDestinoLongitude=XMLExtractString(NoXml1,"lng")
END


ELSE IFInAndroidMode() =True


//XML Leitura
XmlDoc02 isXMLDocument
XmlDoc02=XMLOpen(XmlResultado,fromString)

//Endereço de Origem
GloVoceEnderecoLongo=XmlDoc02.leg.start_address
GloVoceEnderecoLongo=Capitalize(GloVoceEnderecoLongo)

//Endereço de Destino
GloDestinoEnderecoLongo=XmlDoc02.leg.end_address
GloDestinoEnderecoLongo=Capitalize(GloDestinoEnderecoLongo)

//Tempo
GloTempoDestino=XmlDoc02.leg.duration.value
GloTempoDestinoText=XmlDoc02.leg.duration.text
GloTempoTaxi=GloTempoDestino

//Distancia
GloDistanciaDestino=XmlDoc02.leg.distance.value
GloDistanciaDestinoText=XmlDoc02.leg.distance.text
GloDistanciaTaxi=GloDistanciaDestino

//Origem
IFXmlDoc02.leg.start_location.lat<0
GloVoceLatitude=XmlDoc02.leg.start_location.lat
GloVoceLongitude=XmlDoc02.leg.start_location.lng
END

//Destino
IFXmlDoc02.leg.end_location.lat<0THEN
GloDestinoLatitude=XmlDoc02.leg.end_location.lat
GloDestinoLongitude=XmlDoc02.leg.end_location.lng
END


END

END

ELSE
GloDestinoEndereco=""
GloDestinoEnderecoLongo=""

GloTempoDestino=""
GloDistanciaDestino=""
END

END


END



IFDebugSN="S"THEN
Info(GloRotaEncode)
Info("Origem:",GloVoceEnderecoLongo,GloVoceEndereco,"","Destino:",GloDestinoEnderecoLongo,GloDestinoEndereco,"","Tempo: "+GloTempoDestino,"Distancia: "+GloDistanciaDestino,"","Latitude Origem: "+GloVoceLatitude,"Longitute Origem: "+GloVoceLongitude,"","Latitude Destino: "+GloDestinoLatitude,"Longitude Destino: "+GloDestinoLongitude)
END

////Exemplo: Curitiba - Parana =>>> ( - )
IFQtdeOccurrence(GloVoceEnderecoLongo," - ") =1
GloVoceEndereco=""
GloVoceNumero=""
GloVoceEnderecoLongo="ERRO"
GloVoceLatitude=0
GloVoceLongitude=0
END
////Exemplo: Curitiba - Parana =>>> ( - )
IFQtdeOccurrence(GloDestinoEnderecoLongo," - ") =1
GloDestinoEndereco=""
GloDestinoNumero=""
GloDestinoEnderecoLongo="ERRO"
END
IFDebugSN="S"
IFGloVoceEnderecoLongo="ERRO"ORGloDestinoEnderecoLongo="ERRO"
Info("Endereço inválido")
END
END

RESULT(GloVoceEnderecoLongo)

Teste

Teste
teste