NFE - MIGRAGAR DADOS DE UMA TABELA PARA OUTRA

WEBIER 28/12/2016 14:38:21
#470134
Pessoal, tou implantando NFe no meu projeto VB6+SQL 2008 express

A implantação da DLL para assinar, transmitir e cancelar nfe tá rodando perfeitamente... crio um nfe do zero... e roda beleza

Agora tou modificando a parte que que pega meus pedidos feito no PDV e transforma em NFE

para isso preciso pegar todos os registro da tabela pedidos_itens e adicionar na tabela NotaFiscalItens com algumas restrições.

A ideia é no grid de pedidos... pegar o pedido que foi gerado no PDV... e dar um comando que pegue todos os registros com o campo COD_PEDIDO = X e crie novos registros na tabela NotaFiscalItens obedecendo as seguintes restrições.

no txtCodPedido tem o codigo do pedido ao qual vou localicar os registro da tabela PEDIDO_ITENS, apos localizar os pedidos, tenho que unir com a tabela PRODUTOS, para assim preencher poder preencher a tabela NOTAFISCALITENS

A IDEIA SERIA ESSA

[ô] (FROM produtos INNER JOIN pedidos_itens ON produtos.codigo = pedidos_itens.cod_produto)

TB: NOTAFISCAL_ITENS TB: PEDIDO_ITENS E PRODUTOS
Campos/destino Campos/origem
CodigoNota txtCodNota.Text
Item autonumeração
CodigoProduto pedidos_itens.cod_produto
NomeProduto produtos.descricao
CFOP produtos.cfop
NCM produtos.ncm
CST produtos.icmscst
UnidadeComercial produtos.unid_medida
ValorUnitarioComercializacao pedidos_itens.preco
ValorTotalBruto pedidos_itens.preco * pedidos_itens.quantidade
tipodesconto 1
desconto 0
Valordesconto 0
QuantidadeComercial pedidos_itens.quantidade
pICMS 0
vBC pedidos_itens.preco * pedidos_itens.quantidade
vICMS 0


entao um PEDIDO possui vários registros na tabela PEDIDOS_ITENS... tenho que preencher a tabela NOTAFISCAL ITENS com eles

se alguem poder me ajudar com esse loop ai serei grato!


MARCOSLING 28/12/2016 15:30:32
#470136
eu acho que vc pode fazer isso com o comando insert, comando único e sem loop.
WEBIER 28/12/2016 20:21:57
#470147
Pessoal, baseado no que falei em cima... fiz algo errado nesse insert ?

sSQL = [Ô]INSERT INTO NotaFiscalItens (CodigoNota, Item, CodigoProduto, NomeProduto, CFOP, NCM, CST, UnidadeComercial, ValorUnitarioComercializacao, ValorTotalBruto, tipodesconto, desconto, Valordesconto, QuantidadeComercial, pICMS, vBC, vICMS) VALUES ([Ô] & _
[Ô][Ô] & txtCodNota.Text & [Ô], (SELECT MAX(Item) FROM NotaFiscalItens WHERE CodigoNota = [Ô] & Val(txtCodNota.Text) & [Ô]) + 1, SELECT pedidos_itens.cod_produto, produtos.descricao, produtos.cfop, produtos.ncm, produtos.icmscst, produtos.unid_medida, pedidos_itens.preco, (pedidos_itens.preco * pedidos_itens.quantidade) as varValorBruto, 1, 0, 1, pedidos_itens.quantidade, 0, (pedidos_itens.preco * pedidos_itens.quantidade) as varVBC, 0[Ô] & _
[Ô]FROM produtos INNER JOIN pedidos_itens ON produtos.codigo = pedidos_itens.cod_produto INNER JOIN pedidos ON pedidos_itens.cod_pedido = pedidos.cod_pedido [Ô] & _
[Ô]WHERE pedidos_itens.COD_PEDIDO = [Ô] & txtCodPedido.Text & [Ô];[Ô]


Cuca doendo!!! quem puder ajudar, serei grato!
WEBIER 29/12/2016 10:06:17
#470164
é pq nunca fiz um INSERT TO com SELECT junto... executei e seu o seguinte erro
MARCOSLING 29/12/2016 13:47:43
#470168
Mas essa sua query está bem bagunçada... isso dificulta quando vc precisa encontrar algum erro.

Um conselho: monta o select primeiro, depois vc encaixa no insert. e não esquece de organizar isso aí.

basicamente a sintaxe é essa:

Insert into tabela
(
campos...
)
select
campo
from tabela
WEBIER 29/12/2016 15:25:21
#470171
Atualizando:
tirei os campos CodigoNota, Item, & Val(txtCodNota.Text) & [Ô], [Ô] & lNovoCod & [Ô] da inserção e funcionou TUDO CERTO!

SÓ QUE EU PRECISO DOS 2 CAMPOS NESSA INSERÇÃO

sSQL = [Ô]INSERT INTO NotaFiscalItens (CodigoProduto, NomeProduto, CFOP, NCM, CST, UnidadeComercial, ValorUnitarioComercializacao, ValorTotalBruto, tipodesconto, desconto, Valordesconto, QuantidadeComercial, pICMS, vBC, vICMS) [Ô] & _
[Ô]SELECT pedidos_itens.cod_produto, produtos.descricao, produtos.cfop, produtos.ncm, produtos.icmscst, produtos.unid_medida, pedidos_itens.preco, (pedidos_itens.preco * pedidos_itens.quantidade) as varValorBruto, 1, 0, 1, pedidos_itens.quantidade, 0, (pedidos_itens.preco * pedidos_itens.quantidade) as varVBC, 0 [Ô] & _
[Ô]FROM produtos INNER JOIN pedidos_itens ON produtos.codigo = pedidos_itens.cod_produto INNER JOIN pedidos ON pedidos_itens.cod_pedido = pedidos.cod_pedido [Ô] & _
[Ô]WHERE pedidos_itens.COD_PEDIDO = [Ô] & txtCodPedido.Text & [Ô];[Ô]
[ô]MsgBox sSQL
dbData.Execute sSQL


Alguma ideia?
MARCOSLING 29/12/2016 15:30:47
#470173
Resposta escolhida
Do jeito que vc está fazendo, não vai funcionar...

O campo Item precisa ser auto-numeração no banco de dados.
WEBIER 29/12/2016 15:35:43
#470174
Pois é... tem como colocar 2 select num mesmo insert ?

pq o campo ITEM vai ser preenchida com uma select diferente
[Ô]SELECT ISNULL(MAX(Item), 0) as ultimo_item FROM NotaFiscalItens WHERE CodigoNota = [Ô] & Val(txtCodNota.Text)

e o campo CodigoNota vai ser preenchido com o objeto do form [Ô]& Val(txtCodNota.Text) & [Ô]
MARCOSLING 29/12/2016 15:37:49
#470175
Citação:

:
Pois é... tem como colocar 2 select num mesmo insert ?

pq o campo ITEM vai ser preenchida com uma select diferente
[Ô]SELECT ISNULL(MAX(Item), 0) as ultimo_item FROM NotaFiscalItens WHERE CodigoNota = [Ô] & Val(txtCodNota.Text)

e o campo CodigoNota vai ser preenchido com o objeto do form & Val(txtCodNota.Text) & [Ô]



E o campo Item não pode ser auto-numeração?
WEBIER 29/12/2016 15:43:25
#470177
basicamente ele nao precisa consultar a tabela NotaFiscalItens, ele precisa ser só sequencial, ou seja, o primeiro registro adicionado seria 1, segundo 2 e assim sucessivamente... porem tem q seguir a sequencia...
MARCOSLING 29/12/2016 15:50:15
#470178
Bom, se é assim, então defina o campo como auto-numeração no banco de dados.
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas