AJUDA COM ESTOQUE

RICOCARDOZO 30/06/2017 13:20:26
#474921
Olá boa tarde a todos;

Conforme as telas acima estou tentando implementar um controle de estoque , simplificado para um cliente.
Ao carregar a nfe com os produtos em um flexgrid, queria comparar com o que já esta cadastrado em um txt , caso exista o mesmo produto soma-se a quantidade que já existe.
Caso não exista no txt , faço a inclusão como um novo item.
Estou importando para um recordset , temporário , dai ao fazer as atualizações gero o novo txt a partir do recordset.
Gostaria de opiniões e criticas , pois estou aprendendo e gostaria de fazer algo simples e eficiente.
Estou com dificuldade na parte de inclusão , em vez de atualizar esta incluindo como novo.


RICOCARDOZO 30/06/2017 13:22:17
#474922
A outra Tela

Private Sub Atualizar_estoque()
Abre_Tabela

tb_estoque.CursorLocation = adUseClient
tb_estoque.Open [Ô]Select * FROM estoque.txt[Ô], BD_ESTOQUE, adOpenStatic, adLockBatchOptimistic

While Not tb_estoque.EOF
Dim i As Integer
Dim quantprod As Integer
Grade.Col = 1
For i = 1 To Grade.Rows - 1
If tb_estoque(1) = Grade.TextMatrix(i, 1) And tb_estoque(2) = Grade.TextMatrix(i, 2) Then
quantprod = Val(tb_estoque(6)) + Val(Grade.TextMatrix(i, 6))
tb_estoque(6) = quantprod
tb_estoque.Update
Else
tb_estoque.AddNew
tb_estoque(0) = Grade.TextMatrix(i, 0)
tb_estoque(1) = Grade.TextMatrix(i, 1)
tb_estoque(2) = Grade.TextMatrix(i, 2)
tb_estoque(3) = Grade.TextMatrix(i, 3)
tb_estoque(4) = Grade.TextMatrix(i, 4)
tb_estoque(5) = Grade.TextMatrix(i, 5)
tb_estoque(6) = Grade.TextMatrix(i, 6)
tb_estoque(7) = Val(Grade.TextMatrix(i, 7))
tb_estoque.Update
End If
tb_estoque.MoveNext
Next i
Wend


tb_estoque.MoveFirst
Open App.Path & [Ô]\Estoque\estoque.txt[Ô] For Output As #1
Do Until tb_estoque.EOF
Print #1, tb_estoque(0) & [Ô],[Ô] & tb_estoque(1) & [Ô],[Ô] & tb_estoque(2) & [Ô],[Ô] & tb_estoque(3) & [Ô],[Ô] & tb_estoque(4) & [Ô],[Ô] & tb_estoque(5) & [Ô],[Ô] & tb_estoque(6) & [Ô],[Ô] & tb_estoque(7)
tb_estoque.MoveNext
Loop
Close #1

MsgBox [Ô]Banco de Dados - Estoque.txt - Atualizada com sucesso !![Ô]
Fecha_Tabela
End Sub

KERPLUNK 30/06/2017 13:51:23
#474925
Você sabe que da mesma maneira que você usa [Ô]Select xxxx[Ô] em arquivo CSV, você pode também usar os outros comandos SQL, como INSERT, UPDATE e DELETE, certo?
RICOCARDOZO 30/06/2017 14:36:36
#474927
Sim , mais to quebrando a cabeça pra bolar um insert e update , em sql.
E sei que fica até mais confiável e rápido também.

RICOCARDOZO 30/06/2017 17:37:51
#474932
Esta dando erro:
Erro : A atualização de dados em uma tabela vinculada não é suportada por este ISAN


While Not tb_estoque.EOF
Dim i As Integer
Dim quantprod As Integer
Grade.Col = 1
For i = 1 To Grade.Rows - 1
sql = [Ô]update estoque.txt set quantidade= [ô][Ô] & Grade.TextMatrix(i, 7) & [Ô][ô][Ô] _
& [Ô] where cnpj=[ô][Ô] & Grade.TextMatrix(i, 2) & [Ô][ô] and codproduto = [ô][Ô] & Grade.TextMatrix(i, 3) & [Ô][ô][Ô]
BD_ESTOQUE.Execute sql
Next i
Wend
KERPLUNK 30/06/2017 17:55:47
#474934
O que ainda não entendi:
- Você quer fazer algo simples, e escolhe algo complexo para se trabalhar, como arquivos Texto
- Começa um projeto do zero e prefere usar VB6 ao invés de .NET

Use a tecnologia à seu favor.
RICOCARDOZO 30/06/2017 19:33:39
#474937
Concordo com voce, Mais agora o que preciso no momento e algo que functione assim em vb6 e que complemente um emissor de nota fiscal de consumidor , que e usado por alguns clientes.
nao Tenho tempo e agora seria muito deficil pra comecar com .net.


NILSONTRES 01/07/2017 09:59:13
#474940
Não é possível identificar um item de nfe através do código do produto, ele nunca é e não deve ser o mesmo do seu banco de dados, a comparação só pode ser feita através do código de barras, e olhe la.
Estou fazendo um carregamento de Nfe também só para satisfazer os pedidos dessa ilusão pura que é carregar itens da Nfe(Acham que terão inúmeras facilidades com isso, e não é bem assim). Existem milhares de distribuidores que nem sequer o código de barras colocam no xml.
RICOCARDOZO 04/07/2017 15:53:03
#475002
Como não consegui com SQL estou tentando pelo modelo antigo com adnew e update.

O que pode estar errado nesta logica:

While Not tb_estoque.EOF
Dim i As Integer
Dim quantprod As Integer
Grade.Col = 1
For i = 1 To Grade.Rows - 1
If tb_estoque(2) = Grade.TextMatrix(i, 3) Then
quantprod = Val(tb_estoque(6)) + Val(Grade.TextMatrix(i, 7))
tb_estoque(6) = quantprod
tb_estoque.Update
Else
tb_estoque.AddNew
tb_estoque(0) = Grade.TextMatrix(i, 1)
tb_estoque(1) = Grade.TextMatrix(i, 2)
tb_estoque(2) = Grade.TextMatrix(i, 3)
tb_estoque(3) = Grade.TextMatrix(i, 4)
tb_estoque(4) = Grade.TextMatrix(i, 5)
tb_estoque(5) = Grade.TextMatrix(i, 6)
tb_estoque(6) = Grade.TextMatrix(i, 7)
tb_estoque(7) = Val(Grade.TextMatrix(i, 8))
tb_estoque.Update
End If
tb_estoque.MoveNext
Next i
Wend




Por exemplo estou tentando comparar o que tem no flexgrid com o que tem no banco de dados,
caso existir codproduto igual ,somo e atualizo a quantidade, beleza isso esta funcionando, caso seja um produto novo com codigo novo inclui na ultima posição.

So que ele esta somando e incluindo , ou seja duplicando.

FOXMAN 05/07/2017 10:59:35
#475019
Citação:

:
Não é possível identificar um item de nfe através do código do produto, ele nunca é e não deve ser o mesmo do seu banco de dados, a comparação só pode ser feita através do código de barras, e olhe la.
Estou fazendo um carregamento de Nfe também só para satisfazer os pedidos dessa ilusão pura que é carregar itens da Nfe(Acham que terão inúmeras facilidades com isso, e não é bem assim). Existem milhares de distribuidores que nem sequer o código de barras colocam no xml.



Nilson, desenvolvi um processo que vincula em um campo na tabela de produtos todos os possíveis códigos dos fornecedores, dessa forma consigo em mais de 95% a importação dos produtos. No entanto se recebo produtos de um novo fornecedor cujo produto já existe no meu cadastro, basta apenas adicionar o código do fornecedor e pronto(nem saio da tela). Este processo é bem prático e agilizou a importação das minhas NFes.


SIRIOUS 05/07/2017 19:48:24
#475023

Deixe-me ver se entendi. Este forum é de VB-VBA? Ou é VB.Net?
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas