Expressão Regular no SET FILTER
Moderador: Moderadores
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Expressão Regular no SET FILTER
Olá amigos,
Tem como usar Expressão Regular no SET FILTER:
Tenho uma demanda em que devo imprimir alguns determinados registro, onde cada um gera um formulário em PDF.
O Operador vai informar quais códigos do documento devem ser listados, tipo:
Códigos: [00001-00010, 00025, 00040-00045].
No exemplo acima, deve ser filtrado os registros com código de 00001 ao 00010, e o registro de código 00025, e os registros de códigos 00040 ao 00045.
Seria a mesma coisa que fazemos quando vamos imprimir um DOC Word, que podemos escolher uma variedade de páginas.
Desde já agradeço a atenção
Tem como usar Expressão Regular no SET FILTER:
Tenho uma demanda em que devo imprimir alguns determinados registro, onde cada um gera um formulário em PDF.
O Operador vai informar quais códigos do documento devem ser listados, tipo:
Códigos: [00001-00010, 00025, 00040-00045].
No exemplo acima, deve ser filtrado os registros com código de 00001 ao 00010, e o registro de código 00025, e os registros de códigos 00040 ao 00045.
Seria a mesma coisa que fazemos quando vamos imprimir um DOC Word, que podemos escolher uma variedade de páginas.
Desde já agradeço a atenção
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Expressão Regular no SET FILTER
Se não for de um jeito, vai de outro.
Sempre tem a opção SET FILTER TO MinhaFuncao()
Mas o ideal seria criar um set filter que não dependa de variável externa, pra não ter erro.
De repente, uma função que converte a seleção.
cFilter := Converte( cSelecao )
Sempre tem a opção SET FILTER TO MinhaFuncao()
Mas o ideal seria criar um set filter que não dependa de variável externa, pra não ter erro.
Código: Selecionar todos
cFilter := [codigoitem $ "123,456,789"]
SET FILTER TO &cFilter
cFilter := Converte( cSelecao )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Expressão Regular no SET FILTER
Ola!
Estando indexado pelo código, não use SET FILTER. OrdScope é mais rápido.
Basta criar uma função para ir pegando os pedaços de dentro "0010-0015,00X1-00X5,..." separado por virgulas e se tiver "-" será inicio "-" e o fim do ordscope.
Saudações,
Itamar M. Lins Jr.
Estando indexado pelo código, não use SET FILTER. OrdScope é mais rápido.
Basta criar uma função para ir pegando os pedaços de dentro "0010-0015,00X1-00X5,..." separado por virgulas e se tiver "-" será inicio "-" e o fim do ordscope.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Expressão Regular no SET FILTER
Vocês acham que teria como usar a função OrdWildSeek() para de alguma forma no Do While fazer esse controle?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Expressão Regular no SET FILTER
Ola!
Lógico. As informações para usar OrdWildSeek estão na string fornecida, é só pegar os pedaços usando substr(), at()... Tem um post mais abaixo que faço isso com arquivo .INI transformo em string e manipulo.
Por exemplo: "0010 até 0020" -> "0010-0020," ai o usuario escolhe mais uma "0001," só essa, depois escolhe de "00FF-00II" significa dá 00FF, 00GG, 00HH até 00II. Tudo isso em uma única string, "0010-0020,0001,00FF-00II"
Botar o neurônios ai para pensar como manipular(cortar) isso. O Guru "José Quintas" é fera nisso ai rsrsrss.
Saudações,
Itamar M. Lins Jr.
Lógico. As informações para usar OrdWildSeek estão na string fornecida, é só pegar os pedaços usando substr(), at()... Tem um post mais abaixo que faço isso com arquivo .INI transformo em string e manipulo.
Por exemplo: "0010 até 0020" -> "0010-0020," ai o usuario escolhe mais uma "0001," só essa, depois escolhe de "00FF-00II" significa dá 00FF, 00GG, 00HH até 00II. Tudo isso em uma única string, "0010-0020,0001,00FF-00II"
Botar o neurônios ai para pensar como manipular(cortar) isso. O Guru "José Quintas" é fera nisso ai rsrsrss.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Expressão Regular no SET FILTER
Tenho no preview de relatório, pra escolher qualquer combinação de numeração de página.
https://github.com/JoseQuintas/JoseQuin ... review.prg
Mas no final, como deve ter alguma ordem isso, talvez jogar em array ou temporário.
https://github.com/JoseQuintas/JoseQuin ... review.prg
Mas no final, como deve ter alguma ordem isso, talvez jogar em array ou temporário.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
designsistemas
- Usuário Nível 1

- Mensagens: 3
- Registrado em: 21 Set 2018 08:49
- Localização: São Paulo / SP
Expressão Regular no SET FILTER
bom dia,
Não sei o cenario que sera utilizado , mas caso estaja usando algum SGBD SQL, pode aplicar a expressão regular ja no select
Paulo Cezar
Design Sistemas
Não sei o cenario que sera utilizado , mas caso estaja usando algum SGBD SQL, pode aplicar a expressão regular ja no select
Paulo Cezar
Design Sistemas
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Expressão Regular no SET FILTER
Ola!
Saudações,
Itamar M. Lins Jr.
Está implícito na própria pergunta, se é SET FILTER e OrdWild... então é DBF. Se bem que hoje em dia se usa SQL até em DBF's.Não sei o cenario que sera utilizado , mas caso estaja usando algum SGBD SQL, pode aplicar a expressão regular ja no select
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Expressão Regular no SET FILTER
Olá!
Seja bem-vindo ao Fórum Paulo Cezar!
Seja bem-vindo ao Fórum Paulo Cezar!
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
designsistemas
- Usuário Nível 1

- Mensagens: 3
- Registrado em: 21 Set 2018 08:49
- Localização: São Paulo / SP
Expressão Regular no SET FILTER
Ola Amigos,
vou me apresentar, minha historia se parece com a de muitos aqui. Tenho 52 anos, comecei na programação aos 16 anos. Iniciei no Basic, em seguida comecei a desenvolver usando Clipper Autumn 86, passando para o incrivel Summer 87, ai veio o CA-Clipper 5.0, etc... Depois de desilusões com o VB, em 2004 comecei com Harbour/Linux/MySQL que me levou ao xHarbour.com e SQLRDD. Muitas vezes fui socorrido por este forum.
Atualmente meus sistemas rodam nativo no Linux e Windows em interface texto, os relatórios gero em HTML e Excel, complemento com modulos PHP quando o cliente precisa de algo externo, por exemplo cotação de compra. Uso bastante pelo xHarbour consumo de web-service SOAP e REST para intergração com sites, mercado-livre, etc.
abs a todos.
Paulo Cezar
Design Sistemas
vou me apresentar, minha historia se parece com a de muitos aqui. Tenho 52 anos, comecei na programação aos 16 anos. Iniciei no Basic, em seguida comecei a desenvolver usando Clipper Autumn 86, passando para o incrivel Summer 87, ai veio o CA-Clipper 5.0, etc... Depois de desilusões com o VB, em 2004 comecei com Harbour/Linux/MySQL que me levou ao xHarbour.com e SQLRDD. Muitas vezes fui socorrido por este forum.
Atualmente meus sistemas rodam nativo no Linux e Windows em interface texto, os relatórios gero em HTML e Excel, complemento com modulos PHP quando o cliente precisa de algo externo, por exemplo cotação de compra. Uso bastante pelo xHarbour consumo de web-service SOAP e REST para intergração com sites, mercado-livre, etc.
abs a todos.
Paulo Cezar
Design Sistemas
- filizola
- Usuário Nível 3

- Mensagens: 421
- Registrado em: 19 Ago 2003 20:10
- Localização: Belo Horizonte/MG
Expressão Regular no SET FILTER
Ze quintas, esta sua rotina preview tem que ser compilada com wvg ou pode ser com wvt ?
"Um passo a frente, e já não estará mais no mesmo lugar..."
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Expressão Regular no SET FILTER
Uma coisa que tem que ser feito, é uma Expressão regular para o GET das páginas a serem impressas.
Ex.: [001-010, 020, 030-040]
Vejam que na sequencia de páginas acima, o operador tem que respeitar a máscara de edição, acho que no PICT, onde só pode existir números, traço e a vírgula.
Então como montar esse Picture? com um LIKE?
Ex.: [001-010, 020, 030-040]
Vejam que na sequencia de páginas acima, o operador tem que respeitar a máscara de edição, acho que no PICT, onde só pode existir números, traço e a vírgula.
Então como montar esse Picture? com um LIKE?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Expressão Regular no SET FILTER
O preview é console, exceto os botões.filizola escreveu:Ze quintas, esta sua rotina preview tem que ser compilada com wvg ou pode ser com wvt ?
Se retirar os botões ok, só vai precisar a mensagem pro usuário saber o que digitar.
E se tiver alguma dependência adicional, está toda aí no aplicativo, no GitHub.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Expressão Regular no SET FILTER
Continuando,
Já fiz a função para retornar uma array com os números de páginas a serem impressos.
Falta agora VALIDAR o campo Getado para que seja aceito somente caracteres válidos para esta rotina, que seriam: {0123456789-,}
Já fiz a função para retornar uma array com os números de páginas a serem impressos.
Código: Selecionar todos
/////////////////////////////////////////////////////////////////////////////
//00010-00020,00030,00040-00045
Function cl_ParseNumero(cNumeros, nTamanho)
Local i, ii, aTokens:={}, aCol:={}, aRetorno:={}
aTokens := HB_ATokens( Alltrim(cNumeros), ",", .F., .F. )
For i=1 To Len(aTokens)
aCol := HB_ATokens( aTokens[i], "-", .F., .F. )
aSort(aCol,,,{ |x, y| x[1] < y[1]} )
If Len(aCol) > 1
mIni:= Val(Alltrim(aCol[1]))
mFim:= Val(Alltrim(aCol[2]))
For ii = mIni To mFim
AAdd(aRetorno, StrZero(ii, nTamanho) )
Next
Else
AAdd(aRetorno, StrZero(Val(Alltrim(aCol[1])), nTamanho) )
Endif
Next
Return aRetorno
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Expressão Regular no SET FILTER
Código: Selecionar todos
FUNCTION ExtraiDeAte( cTexto, nTamanho )
LOCAL aIntervalos, aItem, oDeAte, oNumero
aIntervalos := {}
FOR EACH oDeAte IN hb_regExSplit( cTexto, "," )
aItem := {}
FOR EACH oNumero IN hb_RegExSplit( oDeAte , "-" )
Aadd( aItem, StrZero( Val( oNumero ), nTamanho )
NEXT
AAdd( aIntervalos, aItem )
NEXT
ASort( aIntervalos,,, {| a, b | a[ 1 ] < b[ 1 ] } )
RETURN aIntervalos
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/