Ajuda num filtro ADO

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

O ADO tem uma coisa chata no filtro: não aceita qualquer coisa

Não pode: ( a or b ) and ( a or c )
Mas aceita ( a and b ) or ( a and c )

Situação:

- O filtro pode ser em vários campos
- O filtro pode conter várias palavras

Então é criar uma expressão com N filtros para N campos, mas só pode usar AND de conjuntos OR
filtroado.png
Esse acima não dá.
Talvez inverter a coisa nesse filtro.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

Ok, seria trocar tudo pra OR.
Só não sei se o atual vai fazer falta.... talvez tenha que deixar os dois.

E tem também a opção de "iniciando com", que eu poderia multiplicar pra todas as palavras....

Vixe.. vai virar um filtro linguição por causa da limitação, se eu conseguir fazer.... rs
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

Talvez
=a =b +c +d e f

quando = procurar no início
quando + considerar ambos num mesmo campo
quando sem nada procurar qualquer
mas tudo junto... um misto... vai ser complicado....
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

acho que seria isto?

( campo1 =a AND +c AND +d ) or ( campo1 =b AND +c AND +d ) or ( campo2 =a AND +c AND +d ) or ( campo2 =b AND +c AND +d ) or ( campo1 e AND +c AND +d) or ( campo2 e AND +c AND +d) or ( campo2 f AND +c AND +d )
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

Ainda falta o "e" e o "f", que precisariam do OR e não pode.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

Ao utilizar os operadores AND e OR não existe precedência entrer eles e você pode agrupá-los entre parênteses. Ex:("Nome = 'Jose' AND Sobrenome='Silva'" ). O que você não pode fazer é agrupar cláusulas usando OR com grupos de cláusulas usando AND . Assim

(Nome = 'Jose' OR Nome = 'Carlos') AND Sobrenome = 'Silva'
Deverá ser substituida por

(Sobrenome = 'Silva' AND Nome = 'Jose') OR (Sobrenome = 'Silva' AND Nome = 'Silva')
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/
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Ajuda num filtro ADO

Mensagem por Vlademiro »

O ideal nesses casos é salvar a query antes de mandar em um arquivo com hb_memowrit e depois copiar e colar no seu cliente sql.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Ajuda num filtro ADO

Mensagem por Vlademiro »

Porque o ADO, que eu saiba, é uma ponte. Então não faz sentido dizer que o ADO não aceita. Quem não aceita é o banco
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

Vlademiro escreveu:Porque o ADO, que eu saiba, é uma ponte. Então não faz sentido dizer que o ADO não aceita. Quem não aceita é o banco
Não exatamente.
Considere o ADO como um "DBF" que tem vida própria.
Uma vez trazendo do banco de dados, não precisa nova consulta pra filtrar, isso pode ser feito localmente.
E, com certeza, isso fica extremamente rápido.
Basta considerar que não precisa rede, servidor, nada pra o usuário brincar o quanto quiser com a consulta.
O usuário pode ficar horas pesquisando que não atrapalha ninguém.
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/
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Ajuda num filtro ADO

Mensagem por Vlademiro »

Acho arriscado. Uma estação pode mudar alguma coisa importante e o gerente continua com os valores antigos simulando o orçamento do mês seguinte feliz da vida.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

Imagine ir filtrando conforme vai digitando.
Pra que ficar consultando servidor a cada tecla?
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/
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Ajuda num filtro ADO

Mensagem por Vlademiro »

Realmente, tem casos que vale a pena. Teria algum exemplo desse código ?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

Vlademiro escreveu:Acho arriscado. Uma estação pode mudar alguma coisa importante e o gerente continua com os valores antigos simulando o orçamento do mês seguinte feliz da vida.
Geralmente o gerente se baseia no mês anterior, ou dia anterior.

No mesmo caso, como ele vai terminar um planejamento, se os valores podem se alterar durante o planejamento?
Aí sim, ele não vai ficar nada feliz.

oConsulta := Conexao:Execute( "SELECT ..." )
oConsulta:Filter = "valor > 5000 AND nome like '%globo%'"

ou conforme vai digitando
cDigitado += Chr( nkey )
oConsulta:Filter = "NOME LIKE '%" + digitado + '%'"

Nota: editado porque filter é propriedade e não método
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

Detalhe interessante:

o ADO tem algo parecido com RecNo(), que é o bookmark.
Ao aplicar um filtro, fica sequencial.
E pra retirar o filtro: oConsulta:Filter = ""
A parte visível sempre fica com bookmark numerado de 1 até onde der, sem "pular" numeração.

Também pode ser usado pra criar do zero, sem servidor.

Sei lá se dá pra comparar com DBF, Array, SQL, ou tudo junto, com opção de ficar ou não vinculado ao servidor/banco de origem.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda num filtro ADO

Mensagem por JoséQuintas »

Surgiu uma necessidade.
No bancário em DBF eu tinha filtro por valor, e agora com a mudança não tenho mais.
Ainda pensando em como acrescentar isso no "bolo".
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/
Responder