Fórum Como posso selecionar item de uma tabela via SQL ? #255073
19/10/2004
0
veja a minha SQL q Montei :
Select First 2 OrdemProducao.CodOrdemProducao from OrdemProducao
Bom Ultilizao delphi 7 e Interbase ( palheta do Delphi ) . IBQuery.
Bom agradeço pela ajuda.....Obrigado !!!
walterfoliveira@hotmail.com
Walter Faria
Curtir tópico
+ 0Posts
19/10/2004
Vinicius2k
A sintaxe está correta...
select first <quantidade> <campos> from <tabela>
Mas o FIRST depende do Banco de Dados... O IB 6.0 não possui esta funcionalidade, o IB 6.5 e 7.x possui, mas a instrução e sintaxe são diferentes (ROWS), o Firebird 1.0.x *acho* que possui (não me recordo ao certo), o Firebird 1.5.x, com certeza possui...
Qual é o Servidor usado? Ocorre algum erro ?
T+
Gostei + 0
20/10/2004
Walter Faria
Select First 2 CodOrdemProducao from ordemproducao
msg de erro : Dynamic SQL error code = - 104
Tokey Unknown - line 1, char 13
1.
Gostei + 0
20/10/2004
Vinicius2k
A coluna CodOrdemProducao realmente existe na tabela ?
T+
Gostei + 0
22/10/2004
Walter Faria
´QUANTIDADE´ FLOAT,
´CODORDEMPRODUCAO´INTEGER NOT NULL,
´DATAENTREGA´ TIMESTAMP,
´CODITEMPEDIDOVENDA´INTEGER,
´CODPRODUTO´ INTEGER,
´STATUSATUAL´ SMALLINT,
´CODORDEMPRODUCAOPAI´INTEGER,
Bom obrigado pela atenção ....valeu...
Gostei + 0
22/10/2004
Vinicius2k
Não seria um problema o banco no IB 6, apenas vc não pode usar o FIRST pq esta funcionalidade não está presente nele.
Foi bom vc postar a estrutura da tabela, pq observei as aspas...
Sempre que vc usar aspas na criação dos objetos do banco (tabelas e colunas neste caso), vc precisa utilizá-las na instrução SQL e, dependendo da camada de acesso, as maiúsculas e minúsculas também fazem diferença...
Tente assim :
select first 2 "CODORDEMPRODUCAO" from "ORDEMPRODUCAO"
T+
Gostei + 0
22/10/2004
Walter Faria
entao qdo postei a estrtura doi BD , aparece com aspas pq eu copiei da subpasta ( METADA ) do interbase, bom mesmo assim tentei da forma q vc me falou, pois continua o mesmo ERRO.
Bom é o seguinte cara , o quero fazer no meu sistema é selecionar as duas ultimas Ordem de Producao, para incluir o NR dela numa terceira Ordem de Producao do Cliente ( Tipo pra compara com as dus ultimas OPS ) anteriores.....
Entao tava pensando ate fazer WHILE....valeu pela ajuda..se puder me ajudar nesta : veja a SQL antiga que vou ter que adaptar :
Select First 2 OPAnt.CodOrdemProducao from ordemproducao OPAnt Left join
itempedidovenda ipv on IPv.CodItemPedidoVenda = OPant.CodItemPedidoVenda
where Opant.StatusAtual = 6 and ((OPAnt.CodProduto = :CodProd) or
Ipv.CodProduto = :CodProd) Order By OpAnt.Dataentrega Desc
*** este status 6 - indica q Ordem de producao anterior esteja pronta
Bom, muito obrigado....
Gostei + 0
22/10/2004
Vinicius2k
Se esta for a SQL completa que vc está tentando aplicar, vejo duas coisas :
1. Me parece que há uma incoerência no Join (Left) pq vc está deixando à esquerda a coluna da tabela secundária... mas isso não posso garantir, depende do contexto...
2. Falta um parentesis fechando a uma condição do WHERE.
Esta seria a minha instrução :
select first 2 OP.CODORDEMPRODUCAO from ORDEMPRODUCAO OP left join ITEMPEDIDOVENDA IP on (OP.CODITEMPEDIDOVENDA = IP.CODITEMPEDIDOVENDA) where (OP.STATUSATUAL = 6) and ((OP.CODPRODUTO = :codprod) or (IP.CODPRODUTO = :codprod)) order by OP.DATAENTREGA desc
Espero ter ajudado agora...
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)