Futura
|
PORTO FERREIRA SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 06/07/2005 15:52 hs
sql = " select [itens_pedido.produto],sum( [itens_pedido.qtde]) as soma from itens_pedido " sql = sql & " where [itens_pedido.pedido] not in(itens_nota.pedido) " sql = sql &" group by itens_pedido.produto" Preciso selecionar todos os registros da tabela itens_pedido, que não constam na tabela itens_nota, de preferencia somando-se o campo itens_pedido.qtde, e agrupando por produto. Se alguém puder ajudar na montagem da sql, depois eu jogo em um recordset e gravo nas tabelas respectivas.
|
|
|
|
|
Postada em 06/07/2005 17:06 hs
sql = " select [itens_pedido.produto],sum( [itens_pedido.qtde]) as soma from itens_pedido " sql = sql & " where [itens_pedido.pedido] not in(itens_nota.pedido) " sql = sql &" group by itens_pedido.produto" Not IN (Select Pedido From Itens_Nota) O Resto parece certo...
Elieser Carlos Topassi Analista de Sistemas - Desenvolvedor VB/ASP/.Net
e-mail/msn: elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil _____________________________________________________ "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)
|
|
|
Dana
|
CANOAS RS - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 06/07/2005 17:31 hs
Olha qual é o BD que vc está usando? Se for o access vc pode fazer tudo manuel e depois editar os codigos em sql. Ai vc terá que fazer uns pequenos ajustes que serão apenas de " ou &... Ok...... attt Daiana
Daiana Moraes
|
|
|
Futura
|
PORTO FERREIRA SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 07/07/2005 12:09 hs
Elieser, fiz assim: sql = "SELECT Itens_Pedido.Produto, SUM(Itens_Pedido.Qtde) as SOMA FROM Itens_Pedido WHERE Itens_Pedido.Pedido NOT IN (SELECT Itens_Nota.Pedido FROM Itens_Nota) GROUP BY Itens_Pedido.Produto" Set tabela = bd.OpenRecordset(sql) If tabela.RecordCount = 0 Then aviso = MsgBox("Não há movimento para os parâmetros", vbInformation + vbOKOnly, "Futura - Aviso ao usuário") Exit Sub Else minha rotina endif mas no sql ele simplesmente congela, e depois de uns 10 minutos para de responder. o banco é access, e as tabelas estão com uns 100 mil registros cada, em outra consultas apenas em uma tabela, mesmo trazendo pesquisas por periodos de uma mes por exemplo, é praticamente instantaneo o retorno, o que pode ser ?
|
|
|
|
Postada em 07/07/2005 14:14 hs
Olha, amigo Se vc leu com atençao meu SQL, viu q ele ta fazendo um Select na tabel Itens_Nota a cada linha da tabela Itens_Pedido... realmente em um banco desse tamanho vc vai travar... Posso te dar uma sugestao: Se o banco esta desse tamanho troca o Access por um SGBD, tipo SQLServer ou IB.. vc vai ganhar muito em desenpenho e em confiabilidade... no Access eh praticamente impossivel manter um banco desse tamanho com um nivel de segurança aceitavel... Qto a consulta, vou tentar otimiza-la... se eu encontrar outra solucao, posto aqui mesmo.. veja se eu respondi amanha... Flw!
Elieser Carlos Topassi Analista de Sistemas - Desenvolvedor VB/ASP/.Net
e-mail/msn: elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil _____________________________________________________ "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)
|
|
|
Futura
|
PORTO FERREIRA SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 07/07/2005 14:29 hs
Elieser, concordo contigo, mas veja, uso access em outros clientes, inclusive tenho um, que o banco ja esta com 3 anos, no qual tenho tabelas com + de 300 mil registros, e como disse, as consultas são super rapidas, uma vez que os campos pesquisados usam indices, outro detalhe, atribuo a eficiencia de meus bds access naõ darem pau, pelo tipo de programação, não uso objetos data, faço tudo via código, com variáveis database e recorsets. O que ocorre neste caso, é que o cliente que é um distribuidor cerâmico, tem sempre pedidos digitados que ainda não foram baixados do estoque ( faturados), então tenho que fornecer o estoque atualizado, mais uma previsão dos pedidos digitados que estão a espera de faturamento, para gerar uma previsão mais real do estoque. Poderia fazer isto, apenas criando um campo de status na tabela, mas pensei em um comando sql, agora se o access não suportar, sem problemas parto pra outra solução. De qualquer forma, só tenho a agradecer pela atenção.
|
|
|
|