USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Pesquisa complicada
Irenko
BELO HORIZONTE
MG - BRASIL
Postada em 10/05/2004 11:57 hs            
Detalhes: Banco = Materiais.mdb
Tabela: Baixas
               Filds = Saida - Saldo - Data - Codigo
Tabela : Entrada
              Filds = Entrada - Data1 - Codigo1
Tabela : Localizacao
              Filds = Código - Descricao - Quantidade - Unitario
Quando cadastro um material jogo tudo primeiramente na Tabela Localizacao
Quando efetuo uma baixa quardo na Tabela baixa e entradas na Tabela Entrada
Seguinte: Preciso buscar o valor total em R$ do meu estoque basendo-se no saldo de cada intem conforme a rotina abaixo:
Private Sub CmdBusca_Click()
Dim Sql As String
Dim Val As String
Dim Com As String
Sql = "SELECT * FROM Baixas WHERE Codigo like '*" & TxtBusca.Text & "*'"
Set tbOs2 = bdMat2.OpenRecordset(Sql)
Val = "SELECT Quantidade, Unitario FROM Localizacao WHERE Código = '" & TxtBusca.Text & "'"
Set tbOs3 = bdMat2.OpenRecordset(Val)
Com = "SELECT  sum(Localizacao.Unitario * Baixas.saldo)AS [VEstoque] FROM Localizacao INNER JOIN Materiais ON Localizacao.Código = Baixas.Codigo"
If tbOs2.RecordCount = 0 Then
DbList_3.Clear
Else
DbList_3.Clear
tbOs2.MoveMax
tbOs2.MoveMin
Dim i, J
i = 0
J = 1
Do Until tbOs2.EOF
DbList_3.AddItem Alinha(Format(tbOs2("Codigo"), "000000"), 6, "ESQ")
DbList_3.List(i, 1) = tbOs2("Saida")
DbList_3.List(i, 2) = tbOs2("Data")
DbList_3.List(i, 3) = tbOs2("Req")
DbList_3.List(i, 4) = Alinha(tbOs2("OS"), 10, "DIR")
i = i + 1
a = a + CDbl(tbOs2("Saida"))
tbOs2.MoveNext
Loop
End If
Dim VEstoque As Double
Do While Not tbOs2.EOF Or tbOs3.EOF
VEstoque = tbOs2!Saldo * tbOs3!Unitario
tbOs2.MoveNext
tbOs3.MoveNext
Loop
Lbsaida = ValStr(CStr(a))
Lb_Entrada = ValStr(tbOs3!Quantidade)
LbSaldo = tbOs3!Quantidade - ValStr(Lbsaida)
LbV_Entrada = ValStr(tbOs3!Quantidade) * ValStr(tbOs3!Unitario)
LbV_Saida = ValStr(Lbsaida) * ValStr(tbOs3!Unitario)
LbV_Saldo = ValStr(LbSaldo) * ValStr(tbOs3!Unitario)
LbV_Saldo = Format(LbV_Saldo.Caption, "#,###,##0.00")
LbV_Saida = Format(LbV_Saida.Caption, "#,###,##0.00")
LbV_Entrada = Format(LbV_Entrada.Caption, "#,###,##0.00")
LbTotal.Caption = Format(VEstoque, "#,##0.00")
TxtBusca.Text = ""
TxtBusca.SetFocus
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Call BarraTítuloUserForm(False)
Set bdMat2 = OpenDatabase("C:EstoqueMateriais.mdb")
Set tbOs2 = bdMat2.OpenRecordset("Baixas", dbOpenTable)
''Set tbOs3 = bdMat2.OpenRecordset("Localizacao", dbOpenTable)
Me.DbList_3.ColumnCount = 5
Me.Frame1.Caption = "Entre com o código"
TxtBusca.SetFocus
End Sub
O LbTotal carrega sempre com 0,00 não somando.
     
Irenko
não registrado
Postada em 10/05/2004 15:07 hs   
Alguem.........Por favor ajude-me. O cód. não quer somar os campos. Como fazer funcionar?
     
Roßerto
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 10/05/2004 20:49 hs            
Irenko vc costuma indentar os seus codigos ?
do jeito que está acima fica super dificil ler, quanto mais entender o codigo.
 
Roberto
     
~Ð@®£@Ñ
Pontos: 2843 Pontos: 2843 Pontos: 2843
PELOTAS
RS - BRASIL
Postada em 10/05/2004 20:57 hs            
que campos?
onde.. mostre só o codigo que esta com problema.. (o trecho)
     
Vaughyman
RIO DE JANEIRO
RJ - BRASIL
Postada em 11/05/2004 07:31 hs            
Prezado Irenko,
Realmente vc está precisando de uma ajuda rápida.
Pelo que entendi vc quer o saldo do estoque tendo as entradas e diminuindo da saida.
Não cheguei a ler o seu post todo por falta de tempo mas entendi o que vc precisa.
Primeiro vamos entender algumas regras básica; Nos casos de estoque se vc colocar as entradas e saidas em tabela separadas terá que abrir 2 recordsets para manipular calculos sem fala no relacionamento dos campos a respeito dos materiais. Isso pesa muito na hora de criar um aplicativo.
Primeira coisa a fazer é NÃO usar 2 tabelas.
Use somente uma e adicione um campo sim/não (que não pesa nada) para informar se é saida ou entrada.
ex:
Tabela: Baixas
               Filds = Saida (Retire esse campo)- Saldo - Data - Codigo - EntradaOuSaida(Sim/Não).
Te garanto que o BD ficara mais leve. Convencione da melhor maneira possivel. True para entrada e False para saida ou viceversa, depende de vc.
tudo ficara em uma só tabela e vc podera calcula-los por linha e coluna normalmente.
 
Abraços

"IF FUNCIONOU = TRUE THEN Emoções

     BLOQUEIE O POST

ELSE Emoções

    POST NOVAMENTE INFORMANDO O QUE ACONTECEU

ENDIF Emoções

     
Irenko
BELO HORIZONTE
MG - BRASIL
Postada em 11/05/2004 07:41 hs            
O problema esta nas linhas abaixo.: Por incrível que pareça, 98% desse cód. funciona. Preciso ter o valor total de meu estoque, para isso tentei o cód. descrito más não sei bem usar o relacionamento entre tabelas. Talvez ou bem provavel eu esteja buscando errôniamente nos campos, me dando o resultado 0,00. Agradeço se puderem dar uma ajudinha, aos poucos vou melhorando.
 
Abraços
Irenko
 
Dim Com As String
Com = "SELECT  sum(Localizacao.Unitario * Baixas.saldo)AS [VEstoque] FROM Localizacao INNER JOIN Materiais ON Localizacao.Código = Baixas.Codigo"
LbTotal.Caption = Format(VEstoque, "#,##0.00")
     
Página(s): 1/2      PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página