TRATAMENTO DE CODIGO
O problema é o seguinte: Tenho que carregar em um listBox(só posso usar o ListBox) os dados comforme a busca abaixo. No caso da busca na tabela Entrada que é a instrução Sql_1 é onde esta o problema, como são duas tabelas não sei se codifiquei corretamente o Do Until e o RecordCount. Se alguem tiver uma dica, fico agradecido.
Obs: Se eu usar somente a busca na tabela Baixa conforme instrução Sql não da problema. Só que eu preciso mostrar (Entrada e SaÃda).
Private Sub CmdBusca_Click()
Dim DbSaldo As DAO.Database
Dim tbSaldo As DAO.Recordset
Dim Sql As String
Dim Val As String
Dim Valor As String
Dim Sql_1 As String
Set DbSaldo = OpenDatabase("C:\Estoque\SaldoInicial.mdb")
Valor = "SELECT QT FROM Saldo WHERE Codigo = '" & TxtBusca.Text & "'"
Set tbSaldo = DbSaldo.OpenRecordset(Valor)
If tbSaldo.RecordCount = 0 Then
If Not Testa(TxtInicial.Text, 1) Then
TxtInicial.SetFocus
Exit Sub
End If
End If
TxtInicial.Text = tbSaldo!qt
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)
Sql_1 = "SELECT * FROM Entrada WHERE Codigo1 like '*" & TxtBusca.Text & "*'"
Set tbOs1 = bdMat2.OpenRecordset(Sql_1)
If tbOs2.RecordCount = 0 Then
DbList_3.Clear
Else
DbList_3.Clear
tbOs2.MoveLast
tbOs2.MoveFirst
tbOs1.MoveLast
tbOs1.MoveFirst
Dim i, J
i = 0
J = 1
Do Until tbOs2.EOF And tbOs1.EOF
DbList_3.AddItem Alinha(Format(tbOs2("Codigo"), "000000"), 6, "ESQ")
DbList_3.List(i, 1) = Alinha(tbOs2("Saida"), 8, "DIR")
DbList_3.List(i, 2) = Alinha(tbOs2("Data"), 15, "DIR")
DbList_3.List(i, 3) = tbOs2("Req")
DbList_3.List(i, 4) = Alinha(tbOs2("OS"), 10, "DIR")
DbList_3.List(i, 5) = tbOs1("Entrada")
DbList_3.List(i, 6) = tbOs1("Data1")
DbList_3.List(i, 7) = tbOs1("Doc")
i = i + 1
a = a + CDbl(tbOs2("Saida"))
b = b + CDbl(tbOs1("Entrada"))
tbOs2.MoveNext
tbOs1.MoveNext
Loop
End If
End Sub
Obs: Se eu usar somente a busca na tabela Baixa conforme instrução Sql não da problema. Só que eu preciso mostrar (Entrada e SaÃda).
Private Sub CmdBusca_Click()
Dim DbSaldo As DAO.Database
Dim tbSaldo As DAO.Recordset
Dim Sql As String
Dim Val As String
Dim Valor As String
Dim Sql_1 As String
Set DbSaldo = OpenDatabase("C:\Estoque\SaldoInicial.mdb")
Valor = "SELECT QT FROM Saldo WHERE Codigo = '" & TxtBusca.Text & "'"
Set tbSaldo = DbSaldo.OpenRecordset(Valor)
If tbSaldo.RecordCount = 0 Then
If Not Testa(TxtInicial.Text, 1) Then
TxtInicial.SetFocus
Exit Sub
End If
End If
TxtInicial.Text = tbSaldo!qt
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)
Sql_1 = "SELECT * FROM Entrada WHERE Codigo1 like '*" & TxtBusca.Text & "*'"
Set tbOs1 = bdMat2.OpenRecordset(Sql_1)
If tbOs2.RecordCount = 0 Then
DbList_3.Clear
Else
DbList_3.Clear
tbOs2.MoveLast
tbOs2.MoveFirst
tbOs1.MoveLast
tbOs1.MoveFirst
Dim i, J
i = 0
J = 1
Do Until tbOs2.EOF And tbOs1.EOF
DbList_3.AddItem Alinha(Format(tbOs2("Codigo"), "000000"), 6, "ESQ")
DbList_3.List(i, 1) = Alinha(tbOs2("Saida"), 8, "DIR")
DbList_3.List(i, 2) = Alinha(tbOs2("Data"), 15, "DIR")
DbList_3.List(i, 3) = tbOs2("Req")
DbList_3.List(i, 4) = Alinha(tbOs2("OS"), 10, "DIR")
DbList_3.List(i, 5) = tbOs1("Entrada")
DbList_3.List(i, 6) = tbOs1("Data1")
DbList_3.List(i, 7) = tbOs1("Doc")
i = i + 1
a = a + CDbl(tbOs2("Saida"))
b = b + CDbl(tbOs1("Entrada"))
tbOs2.MoveNext
tbOs1.MoveNext
Loop
End If
End Sub
IRENKO,
Tente descrever o que você deseja textualmente sem levar em consideração o código em VB... Muitas vezes só código sem uma descrição textual nos induz a erros de interpretação (alguns até tentam adivinhar... rs).
O que acontece ? Sobram dados no DBList ? Faltam dados no DBList ?
Batendo o olho no seu código da para ver o seguinte:
i) A probabilidade dos dois recordsets retornarem a mesma quantidade de linhas é baixa na linha "Do Until tbOs2.EOF And tbOs1.EOF"... Logo isso pode ocasionar problemas a não ser que o número de itens de saida sempre sejam igual ao de entrada !? E se for esse o caso bastaria um JOIN entre as tabelas Entrada e Saida.
ii) A variavel tbOs3 está sobrando !
Coloque a definição das variaveis tbOs1, tbOs2, bdMat2.
Tente descrever o que você deseja textualmente sem levar em consideração o código em VB... Muitas vezes só código sem uma descrição textual nos induz a erros de interpretação (alguns até tentam adivinhar... rs).
O que acontece ? Sobram dados no DBList ? Faltam dados no DBList ?
Batendo o olho no seu código da para ver o seguinte:
i) A probabilidade dos dois recordsets retornarem a mesma quantidade de linhas é baixa na linha "Do Until tbOs2.EOF And tbOs1.EOF"... Logo isso pode ocasionar problemas a não ser que o número de itens de saida sempre sejam igual ao de entrada !? E se for esse o caso bastaria um JOIN entre as tabelas Entrada e Saida.
ii) A variavel tbOs3 está sobrando !
Coloque a definição das variaveis tbOs1, tbOs2, bdMat2.
Tópico encerrado , respostas não são mais permitidas