Array
(
)

Falta de Memória...

Lucianokhrisley
   - 06 fev 2007

olá...
estou construindo um tabela temporária através do VB, para construir essa tabela preciso somar determinados lançamentos de Entrada, Saída, Devoluções e Baixas e fazer a inserção no final. A rotina aparentemente esta funcionando perfeitamente, pois consigo chegar até o final dos lançamentos debugando. Enfim o q esta acontecendo é q exatamente nos 793 de cada contagem ele start um erro de Leitura, só q eu insisto em continuar pelo Debug e continua certo parando novamente em 1586. Parece ser falta de memória! Ou seja contando mais 793 registros, parando novamente em 2379 e assim até o fim da contagem q é 8000 e poucos produtos. Alguém pode me ajudar com relação a isso, caso não tenham entendido direito a msn por favor pergunte...

desde já muito obrigado...

abraços

Psergio.p
   - 06 fev 2007

Caro amigo,

Tem como você postar a mensagem de erro e o trecho de código onde o problema ocorre?

Lucianokhrisley
   - 07 fev 2007

Bom...
Estou trabalhando o erro pra saber em qual registro ele esta parando mas o erro é o nº= -2147467259

e vou tentar deixar aqui toda procedure...

Muito Obrigado

Luciano Khrisley

Private Sub MontaTabelaTemp()
Dim cnnComando As New ADODB.Command
Dim rsselecao As New ADODB.Recordset
´Dim rsSelecao1 As New ADODB.Recordset
´Dim rsSelecao2 As New ADODB.Recordset
´Dim rsSelecao3 As New ADODB.Recordset
´Dim rsSelecao4 As New ADODB.Recordset
´Dim rsselecao5 As New ADODB.Recordset
´Dim rsselecao6 As New ADODB.Recordset

Dim vQSaldoAnt As Currency
Dim vTSaldoAnt As Currency
Dim vQLEntrada As Currency
Dim vTLEntrada As Currency
Dim vQLDevolucao As Currency
Dim vTLDevolucao As Currency
Dim vQLSaida As Currency
Dim vTLSaida As Currency
Dim vQLBaixa As Currency
Dim vTLBaixa As Currency
Dim vQSaldoAtu As Currency
Dim vTSaldoAtu As Currency

´On Error GoTo ErrSelecao
Screen.MousePointer = vbHourglass

´Gera o Código para a Tabela TempMovMensal
vCodTemp = 1

´Montando a Tabela TempMovMensal
´Retornando todos os produtos para montagem da tabela

With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT Cod_Produto FROM Produto ORDER BY Cod_Produto;´
Set rsselecao = .Execute
End With

With rsselecao
If Not (.EOF And .BOF) Then
.MoveFirst
While Not .EOF
vCodProduto = !Cod_Produto

´Retornando o Saldo Anterior
´With cnnComando
´ .ActiveConnection = cnnAdmAlmoxarifado
´ .CommandType = adCmdText
´ .CommandText = ´SELECT Cod_Produto FROM Produto ORDER BY Cod_Produto;´
´ ´Set rsselecao = .Execute
´End With

´********************************Retornando o Entradas do Movimento
NomeTabela = ´LancEntrada´
LocalizaLancamentoProduto

If vProdutoOK = True Then

If cboAlmoxarifado.Text <> ´´ Then
With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT SUM(LE.Quantidade) AS EXPR1, SUM(LE.Total) AS EXPR2 ´ & _
´FROM LancEntrada LE INNER JOIN ´ & _
´Entrada E ON LE.Cod_Entrada = E.Cod_Entrada INNER JOIN ´ & _
´Almoxarifado A ON E.Cod_Almoxarifado = A.Cod_Almoxarifado ´ & _
´WHERE (MONTH(LE.DtaEntrada) = ´´ & Combo1.ItemData(Combo1.ListIndex) + 1 & _
´´) AND (E.Cod_Almoxarifado = ´ & vCodAlmoxarifado & ´) AND (LE.Cod_Produto = ´ & vCodProduto & ´);´
Set rsselecao = .Execute
End With
Else
With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT SUM(LE.Quantidade) AS EXPR1, SUM(LE.Total) AS EXPR2 ´ & _
´FROM LancEntrada LE INNER JOIN ´ & _
´Entrada E ON LE.Cod_Entrada = E.Cod_Entrada INNER JOIN ´ & _
´Almoxarifado A ON E.Cod_Almoxarifado = A.Cod_Almoxarifado ´ & _
´WHERE (MONTH(LE.DtaEntrada) = ´´ & Combo1.ItemData(Combo1.ListIndex) + 1 & _
´´) AND (LE.Cod_Produto = ´ & vCodProduto & ´);´
Set rsselecao = .Execute
End With
End If
With rsselecao
vQLEntrada = !EXPR1
vTLEntrada = !EXPR2
End With
Else
vQLEntrada = 0
vTLEntrada = 0
End If

´***********************************Retornando o Devoluções do Movimento
NomeTabela = ´LancDevolucaoItensAlmox´
LocalizaLancamentoProduto

If vProdutoOK = True Then

If cboAlmoxarifado.Text <> ´´ Then
With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT SUM(LD.QDevolucao) AS EXPR1, SUM(LD.Total) AS EXPR2 ´ & _
´FROM LancDevolucaoItensAlmox LD INNER JOIN ´ & _
´DevolucaoItensAlmox D ON LD.Cod_DevolucaoItensAlmox = D.Cod_DevolucaoItensAlmox INNER JOIN ´ & _
´Almoxarifado A ON D.Cod_Almoxarifado = A.Cod_Almoxarifado ´ & _
´WHERE (MONTH(LD.DtaLancDevolucao) = ´´ & Combo1.ItemData(Combo1.ListIndex) + 1 & _
´´) AND (D.Cod_Almoxarifado = ´ & vCodAlmoxarifado & ´) AND (LD.Cod_Produto = ´ & vCodProduto & ´);´
Set rsselecao = .Execute
End With
Else
With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT SUM(LD.QDevolucao) AS EXPR1, SUM(LD.Total) AS EXPR2 ´ & _
´FROM LancDevolucaoItenAlmox LD INNER JOIN ´ & _
´DevolucaoItensAlmox D ON LD.Cod_Entrada = D.Cod_Entrada INNER JOIN ´ & _
´Almoxarifado A ON D.Cod_Almoxarifado = A.Cod_Almoxarifado ´ & _
´WHERE (MONTH(LD.DtaLancDevolucao) = ´´ & Combo1.ItemData(Combo1.ListIndex) + 1 & _
´´) AND (LD.Cod_Produto = ´ & vCodProduto & ´);´
Set rsselecao = .Execute
End With
End If
With rsselecao
vQLDevolucao = !EXPR1
vTLDevolucao = !EXPR2
End With
Else
vQLDevolucao = 0
vTLDevolucao = 0
End If

´***************************Retornando o Saida do Movimento
NomeTabela = ´LancSaida´
LocalizaLancamentoProduto

If vProdutoOK = True Then

If cboAlmoxarifado.Text <> ´´ Then
With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT SUM(LS.Quantidade) AS EXPR1, SUM(LS.Total) AS EXPR2 ´ & _
´FROM LancSaida LS INNER JOIN ´ & _
´Saida S ON LS.Cod_Saida = S.Cod_Saida INNER JOIN ´ & _
´Almoxarifado A ON S.Cod_Almoxarifado = A.Cod_Almoxarifado ´ & _
´WHERE (MONTH(LS.DtaNotaFiscal) = ´´ & Combo1.ItemData(Combo1.ListIndex) + 1 & _
´´) AND (S.Cod_Almoxarifado = ´ & vCodAlmoxarifado & ´) AND (LS.Cod_Produto = ´ & vCodProduto & ´);´
Set rsselecao = .Execute
End With
Else
With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT SUM(LS.Quantidade) AS EXPR1, SUM(LS.Total) AS EXPR2 ´ & _
´FROM LancSaida LS INNER JOIN ´ & _
´Saida S ON LS.Cod_Saida = S.Cod_Saida INNER JOIN ´ & _
´Almoxarifado A ON S.Cod_Almoxarifado = A.Cod_Almoxarifado ´ & _
´WHERE (MONTH(LS.DtaNotaFiscal) = ´´ & Combo1.ItemData(Combo1.ListIndex) + 1 & _
´´) AND (LS.Cod_Produto = ´ & vCodProduto & ´);´
Set rsselecao = .Execute
End With
End If
With rsselecao
vQLSaida = !EXPR1
vTLSaida = !EXPR2
End With
Else
vQLSaida = 0
vTLSaida = 0
End If

´*************************************Retornando a Baixa do Movimento
NomeTabela = ´LancBaixaItensAlmox´
LocalizaLancamentoProduto

If vProdutoOK = True Then

If cboAlmoxarifado.Text <> ´´ Then
With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT SUM(LB.Quantidade) AS EXPR1, SUM(LB.Quantidade) AS EXPR2 ´ & _
´FROM LancBaixaItensAlmox LB INNER JOIN ´ & _
´BaixaItensAlmox B ON LB.Cod_BaixaItensAlmox = B.Cod_BaixaItensAlmox INNER JOIN ´ & _
´Almoxarifado A ON B.Cod_Almox = A.Cod_Almoxarifado ´ & _
´WHERE (MONTH(LB.DtaLancBaixaItensAlmox) = ´´ & Combo1.ItemData(Combo1.ListIndex) + 1 & _
´´) AND (B.Cod_Almox = ´ & vCodAlmoxarifado & ´) AND (LB.Cod_Produto = ´ & vCodProduto & ´);´
Set rsselecao = .Execute

End With
Else
With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT SUM(LB.Quantidade) AS EXPR1, SUM(LB.Quantidade) AS EXPR2 ´ & _
´FROM LancBaixaItensAlmox LB INNER JOIN ´ & _
´BaixaItensAlmox B ON LB.Cod_Baixa = B.Cod_Baixa INNER JOIN ´ & _
´Almoxarifado A ON B.Cod_Almox = A.Cod_Almoxarifado ´ & _
´WHERE (MONTH(LB.DtaLancBaixaItensAlmox) = ´´ & Combo1.ItemData(Combo1.ListIndex) + 1 & _
´´) AND (LB.Cod_Produto = ´ & vCodProduto & ´);´
Set rsselecao = .Execute
End With
End If
With rsselecao
vQLBaixa = !EXPR1
vTLBaixa = !EXPR2
End With
Else
vQLBaixa = 0
vTLBaixa = 0
End If

´Gravando os Dados na Tabela TempMovMensal
With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´INSERT INTO TempMovMensal (Cod_TempMovMensal, Almoxarifado, Cod_Almoxarifado, Cod_Produto, ´ & _
´QSaldoAnt, TSaldoAnt, QEntrada, TEntrada, QDevolucao, TDevolucao, QSaida, TSaida, ´ & _
´QBaixa, TBaixa, QSaldoAtu, TSaldoAtu) VALUES (´ & vCodTemp & ´, ´´ & cboAlmoxarifado.Text & _
´´, ´ & vCodAlmoxarifado & ´, ´ & vCodProduto & ´, ´ & Tira_Virgula(vQSaldoAnt) & _
´, ´ & Tira_Virgula(vTSaldoAnt) & ´, ´ & Tira_Virgula(vQLEntrada) & _
´, ´ & Tira_Virgula(vTLEntrada) & ´, ´ & Tira_Virgula(vQLDevolucao) & ´, ´ & Tira_Virgula(vTLDevolucao) & _
´, ´ & Tira_Virgula(vQLSaida) & ´, ´ & Tira_Virgula(vTLSaida) & ´, ´ & Tira_Virgula(vQLBaixa) & _
´, ´ & Tira_Virgula(vTLBaixa) & ´, ´ & Tira_Virgula(vQSaldoAtu) & ´, ´ & Tira_Virgula(vTSaldoAtu) & ´);´
Set rsselecao = .Execute
End With
.MoveNext
vCodTemp = vCodTemp + 1
Wend
End If
End With
Saida:
Set rsselecao = Nothing
´Set rsSelecao1 = Nothing
´Set rsSelecao2 = Nothing
´Set rsSelecao3 = Nothing
´Set rsSelecao4 = Nothing
´Set rsselecao5 = Nothing
´Set rsselecao6 = Nothing

Set cnnComando = Nothing
Screen.MousePointer = vbDefault
Exit Sub

ErrSelecao:
With Err
If .Number <> 0 Then
MsgBox ´Erro na recuperação do registro solicitado:´, _
vbExclamation + vbOKOnly + vbApplicationModal, ´Aviso´
.Number = 0
GoTo Saida
End If
End With

End Sub

*************** Procedure para localizar cada Lançamento ´Entrada/Saída e etc....************************

Private Sub LocalizaLancamentoProduto()
Dim cnnComando As New ADODB.Command
Dim rsselecao As New ADODB.Recordset
Dim i As Integer

On Error GoTo ErrSelecao

Screen.MousePointer = vbHourglass

With cnnComando
.ActiveConnection = cnnAdmAlmoxarifado
.CommandType = adCmdText
.CommandText = ´SELECT Cod_Produto From ´ & NomeTabela & ´ where Cod_Produto = ´ & vCodProduto & ´;´
Set rsselecao = .Execute
End With

With rsselecao
If Not (.EOF And .BOF) Then
vProdutoOK = True
Else
vProdutoOK = False
End If
End With

Saida:
Set rsselecao = Nothing
Set cnnComando = Nothing
Screen.MousePointer = vbDefault
Exit Sub

ErrSelecao:
With Err
If .Number <> 0 Then
MsgBox ´Erro na recuperação do registro solicitado: Produto sem Lançamento no Mês Código:´´ & vCodProduto & ´´, Tabela: ´´ & NomeTabela & ´´.´, _
vbExclamation + vbOKOnly + vbApplicationModal, ´Aviso´
.Number = 0
GoTo Saida
End If
End With
End Sub