Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ådriano

ADOQuery pesquisando item

Recommended Posts

Eu tenho uma query que mostra 17 itens cadastrados e não alterados (pelo menos até agora).

ai quando pesquiso o usuario ele ja vem com alguns destes itens que é um menu mostrando o que tem liberado para ele...

Ai eu queria fazer uma outra query mostrando apenas os itens que falta ,os itens que não foi adicionado a ele ainda....para evitar colocar duas vezes o mesmo item....tentei assim mais não deu...

qryitem1.Close;

qryitem1.SQL.Clear;

qryitem1.SQL.Add('Select*from item');

qryitem1.SQL.Add('where not item.numero='''+QryitemITEM.AsString+'''');

qryitem1.SQL.Add('order by item');

qryitem1.Open;

O que sera que saiu errado desta vez?????

A queryitem é a que mostra o que o usuario ja tem....

E a queryitem1 seria para mostrar o que ele não tem...

100+

Ådriano http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai precisar usar o comando not in no caso isso via SQL, tipo:

 

select *from tabelawhere not tabela.codigo in (select tab.codigo from tabela as tab)and tabela.restricoes = 'suas restricoes'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui ...(9dade......rsrrsrsr) é o seguinte estou fazendo um controle de usuario e funciona bl....Igual a quele que você me mandou....para estudo...Agora que estou podendo ver com calma (férias).NO código que você me mandou ele le a tabela inteira de permissão e me retorna apenas o que não foi gravado nela ainda....sem diferenciar o usuarioAi tentei fazer as tais restrições mais não resultou em nada ....apenas escreve que permição.item não tem um valor padrãoSó que ai eu queria que ela me retorna-se o que ele não tem....Então ..tenho uma tabela de" item" do menu e outra de "permissão "As duas os campos são de numeros em tabelas feitas no access..:a de "Item" tem:numero: que é um campo de numero.E "permissão" que tem:Item :Que tb é um campo numero.tentei explicar o maximo ficou até longo de+....De uma olhada ai Amados mestresss....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi direito, poderia ser algo do tipo:

 

select *from itemwhere not item.numero in (select permissao.item					from permissao)					where permissao.usuario = ?cod_usuario_X?

Se não são estes os nomes dos campos, teria somente que alterar, no caso o SQL apenas vai pegar tudo da tabela item onde ainda não esta dentro da tabela de permissao para o usuário X.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda deu erro ....escrevi deste jeito:Qryitem1.Close;qryitem1.SQL.Clear;qryitem1.SQL.Add('select* ');qryitem1.SQL.Add('From item');qryitem1.SQL.Add('Where not item.numero in (select Perm.item From PERM)');Qryitem1.SQL.Add('where perm.usuario='''+edit1.text+'''');qryitem1.open;Se você pesquisar sem usar a linha ...Qryitem1.SQL.Add('where perm.usuario='''+edit1.text+'''');...Ele mostra tudo o que a tabela item tem que ainda não gravou na tabela permissao...Agora coloca a linha escreve este erro:Project Adriano.exe raised exception Class EOleException with message'Erro de Sintaxe( Operador Faltando)NA expressão de Consulta 'Not Item.numero in (Select Permissao.item from permissao)Where Permissao.Usuario='Adriano'''.Precess Stopped.Blablabla...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teste....

 

Qryitem1.Close;qryitem1.SQL.Clear;qryitem1.SQL.Add('select * ');qryitem1.SQL.Add('From item');qryitem1.SQL.Add('Where numero not in ');qryitem1.SQL.Add('  (select item From PERM');Qryitem1.SQL.Add('  where usuario='+QuotedStr(edit1.text)+')');qryitem1.open;
Post editado. Linha do where faltava um '+'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certinho.............Na linha Qryitem1.SQL.Add(' where usuario='QuotedStr(edit1.text)+')');Faltou um sinal de Adição para funcionar e ai ficou assim:Qryitem1.SQL.Add(' where usuario='+QuotedStr(edit1.text)+')');Mas funcionou Muito Obrigado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

E tb você havia fechado o parênteses ( antes da hora, na linha:

 

qryitem1.SQL.Add('Where not item.numero in (select Perm.item From PERM)');

deveria de ser

 

qryitem1.SQL.Add('Where not item.numero in (select Perm.item From PERM');

Ficando como o SQL que o Vinicius passou...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.