4D v14.3QUERY |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
QUERY
QUERY
O comando QUERY pesquisa os registros que correspondem ao critério especificado em criterioPesquisa e devolve una seleção de registros de tabela. QUERY modifica a seleção atual de tabela para o processo atual e volve o primeiro registro na nova seleção o registro atual. Se omite o parâmetro tabela, o comando se aplica a tabela por padrão. Se não tiver definido una tabela por padrão, se gera um erro. O exemplo a seguir mostra o editor de pesquisas para a tabela [Produtos]: QUERY([Produtos]) A linha seguinte mostra o editor de pesquisas para a tabela por padrão (se for definido) QUERY Se especifica o parâmetro criterioPesquisa, o editor de pesquisas não é mostrado e a pesquisa se define por programação. Para pesquisas simples (pesquisas em um só campo) você chama QUERY uma vez com o parâmetro criterioPesquisa. Para pesquisas complexas (pesquisas en múltiplos campos o com múltiplas condições), chame QUERY tantas vezes como seja necessário com o parâmetro criterioPesquisa, e o parâmetro opcional *, exceto para a última chamada QUERY, a qual inicia a pesquisa. O exemplo a seguir busca as [Pessoas] cujo nome começa por “a”: QUERY([Pessoas];[Pessoas]Nome="a@") O exemplo a seguir busca as [Pessoas] cujo nome começa por “a” ou “b”: QUERY([Pessoas];[Pessoas]Nome="a@";*) ` * indica que há outro critério de pesquisa Nota: o modo de interpretação do caractere @ nas pesquisas pode ser modificado em uma opção das preferências. Para maior informação, consulte a seção Operadores de Comparação. O parâmetro critérioPesquisa utiliza a seguinte sintaxe: { operador; } campo comparador valor
O operador é opcional e não é necessário para a primeira chamada a QUERY de uma pesquisa múltipla, ou se a pesquisa for uma pesquisa simples.
Nota: é possível definir o comparador sob a forma de uma expressão alfanumérica em lugar de um símbolo. Nesse caso, é obrigatório utilizar ponto e vírgula para dissociar os elementos da string de pesquisa. Este princípio permite por exemplo criar seqüências de pesquisas paramétricas variando o comparador, ou construir interfaces de pesquisa usuário personalizadas. Consulte o exemplo 19.
Estas são as regras a considerar para a construção de pesquisas múltiplas:
Sem importar de que maneira tenha sido definida uma pesquisa:
Pesquisamos os registros para que correspondam a pessoas com o sobrenome Silva: QUERY([Pessoas];[Pessoas]Sobrenome="Silva") Nota: se o campo Sobrenome está indexado, nos beneficiamos de uma pesquisa acelerada utilizando o índice. Lembrete: esta pesquisa encontrará registros como “Silva”, “silva”, “SILVA”, etc. Se quer que a pesquisa considere as maiúsculas e minúsculas, defina critérios adicionais que utilizem os códigos ASCII. O exemplo a seguir busca os registros de pessoas chamadas Carlos Silva. O campo Sobrenome está indexado. O campo Nome não está indexado. QUERY([Pessoas];[Pessoas]Sobrenome="silva";*) ` Buscar todas as pessoas de sobrenome Silva Quando se realiza a pesquisa, primeiro se realiza uma pesquisa rápida no campo indexado Sobrenome, e se reduz a seleção de registros às pessoas de Sobrenome Silva. A pesquisa depois busca sequencialmente no campo Nome nesta seleção de registros. Nota: esta pesquisa é otimizada particularmente se o banco conter um índice composto incluindo os campos O exemplo a seguir pesquisa registros de pessoas de sobrenome Silva ou Oliveira. O campo sobrenome está indexado. QUERY([Pessoas];[Pessoas]Sobrenome="silva";*) ` Buscar todas as pessoas de sobrenome Silva… O comando QUERY utiliza o índice do campo Sobrenome para ambas as pesquisas. As duas pesquisas são realizadas e seus resultados são colocados em conjuntos internos que são combinados eventualmente utilizando uma operação de união. O exemplo busca os registros de pessoas que não trabalham em uma empresa. A pesquisa é realizada provando se o nome da empresa QUERY([Pessoas];[Pessoas]Empresa="") ` Buscar as pessoas sem empresa O exemplo a seguir busca cada pessoa cujo sobrenome for Silva, e trabalha para uma empresa em Rio de Janeiro. A segunda pesquisa utiliza um campo de outra tabela. Esta pesquisa pode ser realizada porque a tabela [Pessoas] está relacionada à tabela [Empresa] por uma relação muitos para um: QUERY([Pessoas];[Pessoas]Sobrenome="silva";*) ` Buscar todas as pessoas de sobrenome Silva… O exemplo a seguir busca o registro de cada pessoa cujo inicial do nome esteja entre a letra A (incluída) e M (incluída): QUERY([Pessoas];[Pessoas]Nome<"n") ` Encontrar todas as pessoas entre A e M O exemplo a seguir busca os registros das pessoas que vivem em São Paulo ou Porto Alegre: QUERY([Pessoas];[Pessoas]CodigoPostal ="28@";*) ` Buscar todas as pessoas que vivem em São Paulo… Pesquisa por palavra chave: o exemplo a seguir procura em toda a tabela [Produtos] os registros cujo campo Descrição contenha a palavra "fácil": QUERY([Produtos];[Produtos]Descrição ="fácil") ` Buscar produtos cuja descrição contenha a palavra chave fácil O exemplo busca os registros que correspondem à referência da fatura introduzida em uma caixa de diálogo: vBuscar:=Request("Introduzir uma referência de fatura:") ` Obter uma referência de fatura do usuário O exemplo a seguir busca os registros de faturas introduzidas em 1996. Buscamos todos os registros introduzidos entre 31/12/95 e 1/1/97: QUERY([Faturas];[Faturas]DataFatura >!31/12/95!;*) ` Buscar faturas depois de 31/12/95… O exemplo a seguir busca os empregados cujo salário está entre $10.000 e $50.000. A pesquisa inclui os empregados que ganham $10.000, mas exclui aos que ganham $50.000: QUERY([Empregados];[Empregados]Salário >=10000;*) ` Buscar os empregados que tenham un salário entre… O exemplo procura os empregados do departamento de marketing com salários superiores a $20.000. Se procura primeiro no campo Salário porque está indexado. Observe que a segunda pesquisa utiliza um campo de outra tabela. Isso é possível porque a tabela [Dept] está relacionada à tabela [Empregados] por uma relação automática de muitos para um. Mesmo que o campo [Dept]Nome está indexado, a pesquisa não é indexada porque a relação deve ser ativada sequencialmente para cada registro na tabela [Empregados]: QUERY([Empregados];[Empregados]Salario >20000;*) ` Buscar os empregados com salários superiores a $20.000 e... Dadas três tabelas relacionadas de muitos a um: [Cidade] -> [Estado] -> [Região]. O exemplo a seguir busca as regiões cujas cidades começam com "São". QUERY([Região];[Cidade]Nome="São") ` Buscar todas as regiões cujas cidades começam por "São" O exemplo a seguir pesquisa a informação igual ao valor da variável minhaVar. QUERY([Leis];[Leis]Texto =minhaVar) ` Pesquisar todas as leis que sejam iguais ao valor de minhaVar A pesquisa pode ter muitos resultados diferentes, dependendo do valor de minhaVar. A pesquisa se realizará também de maneira diferente. Por exemplo:
O exemplo a seguir adiciona ou não linhas a uma pesquisa complexa dependendo do valor das variáveis. Desta forma, só os critérios válidos são considerados para a pesquisa. QUERY([Fatura];[Fatura]Paga=False;*) Este exemplo ilustra a utilização de um operador de comparação como expressão alfanumérico. O valor do operador de comparação está definido através de um menu suspenso localizado em uma caixa de diálogo de pesquisas personalizada: C_TEXT($oper) If(OK=1) O uso de índices de palavras-chave da imagem pode aumentar muito a velocidade de suas aplicações. QUERY([PICTURES];[PICTURES]Photos %"cats") // olhar para as fotografias associadas ao palavra-chave "gatos" Se a pesquisa é realizada corretamente, a variável sistema OK toma o valor 1.
|
PROPRIEDADES
Produto: 4D
HISTÓRIA
Modificado: 4D v11 SQL VER TAMBÉM ARTICLE USAGE
Manual de linguagem 4D ( 4D v14 R3) Inherited from :
QUERY ( 4D v12.4) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||