Marcio Pergola
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 29/07/2011 16:39 hs
estou pedindo ajudar pois estou alguns dias em cima deste problema e não estou encontrando o erro. ja procurei em sites e não obtive sucesso. vou passar meu codigo Private Sub txtInventario_GotFocus() Dim cnnComando As New ADODB.Command Dim rsSelecao As New ADODB.Recordset Dim rs2Selecao As New ADODB.Recordset On Error GoTo errSelecao Screen.MousePointer = vbHourglass '---Busca Inventario no Cadastro With cnnComando .ActiveConnection = cnnEstoque .CommandType = adCmdTable .CommandText = "Inventario" Set rsSelecao = .Execute End With With rsSelecao If .EOF And .BOF Then 'Se o recordset está vazio, não retornou registro com esse código: vSelInv = 1 txtInventario.Text = vSelInv txtData.Text = Date vInventarioNovo = True Else 'Senão vai para o ultimo registro .MoveMax If !Status = True Then 'se o inventario já foi atualizado = true vSelInv = !Inventario + 1 txtInventario.Text = vSelInv txtData.Text = Date vInventarioNovo = True Else 'se o ainda não foi atualizado = False vSelInv = !Inventario txtInventario.Text = vSelInv txtData.Text = !dt_inventario vInventarioNovo = False Toolbar1.Buttons(1).Enabled = True End If End If End With If vInventarioNovo = True Then With cnnComando .ActiveConnection = cnnEstoque .CommandType = adCmdText .CommandText = "SELECT * FROM EstoqueBoxProduto;" Set rs2Selecao = .Execute End With With rs2Selecao 'tabela Estoque If Not (.EOF And .BOF) Then .MoveMin Do While Not .EOF '---aqui da o erro rs2Selecao.AddNew 'nessa linha rsSelecao("Inventario") = "& txtInventario.Text &" rsSelecao("dt_Inventario") = txtData.Text rsSelecao("CodUser") = vCodUser rsSelecao("CodBox") = !CodBox rsSelecao("CodProduto") = !CodProduto rsSelecao("NumCaixa") = !NumCaixa rsSelecao("Movimento") = 0 rsSelecao("Status") = "" rs2Selecao.Update .MoveNext Loop End If End With End If 'Desabilita a digitação do campo txtInventario.Enabled = False txtData.Enabled = False txtBox.SetFocus Saida: 'Elimina o command e o recordset da memória: Set rsSelecao = Nothing Set cnnComando = Nothing Screen.MousePointer = vbDefault Exit Sub errSelecao: With Err If .Number <> 0 Then MsgBox "Houve um erro na recuperação do registro solicitado.", _ vbExclamation + vbOKOnly + vbApplicationModal, "Aviso" .Number = 0 GoTo Saida End If End With End Sub
na hora de adicionar o registro esta dando erro
|
|
|
|
|
|
|
|
Postada em 30/07/2011 21:40 hs
With cnnComando .ActiveConnection = cnnEstoque .CommandType = adCmdText .CommandText = "SELECT * FROM EstoqueBoxProduto;" Set rs2Selecao = .Execute End With With rs2Selecao 'tabela Estoque If Not (.EOF And .BOF) Then .MoveMin Do While Not .EOF '---aqui da o erro rs2Selecao.AddNew 'nessa linha rsSelecao("Inventario") = "& txtInventario.Text &" rsSelecao("dt_Inventario") = txtData.Text rsSelecao("CodUser") = vCodUser rsSelecao("CodBox") = !CodBox rsSelecao("CodProduto") = !CodProduto rsSelecao("NumCaixa") = !NumCaixa rsSelecao("Movimento") = 0 rsSelecao("Status") = "" rs2Selecao.Update .MoveNext Loop End If End With End If Como fazer o update se não tem nada para adicionar.Todos são rsSelecao("Inventario") = "& txtInventario.Text &" rsSelecao("dt_Inventario") = txtData.Text rsSelecao("CodUser") = vCodUser rsSelecao("CodBox") = !CodBox rsSelecao("CodProduto") = !CodProduto rsSelecao("NumCaixa") = !NumCaixa rsSelecao("Movimento") = 0 rsSelecao("Status") = "" não é rs2Selecao("CodUser")=vCodUser rs2Selecao("CodBox") = !CodBox Tente dessa forma.
|
|
|
|
Marcio Pergola
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 01/08/2011 08:59 hs
Primeiro quero agradecer o eduardo por tentar me ajudar.
na verdade acho que passei o codigo errado e não expliquei bem qual o meu problema.
vou passar novamento o techo do codigo de minha dificuldade.
------ If vInventarioNovo = True Then ---------------------------------------------------------------------------------------------- --- aqui se for um novo inventario ele vai buscar os dados na tabela estoque aqui --- carregada como "rs2Selecao" e gravar os produtos na "rsSelecao" que é a --- tabela Inventario. ----------------------------------------------------------------------------------------------- With cnnComando .ActiveConnection = cnnEstoque .CommandType = adCmdText .CommandText = "SELECT * FROM EstoqueBoxProduto;" Set rs2Selecao = .Execute End With With rs2Selecao 'tabela Estoque If Not (.EOF And .BOF) Then .MoveMin Do While Not .EOF --- aqui da o erro quando tento adcionar um novo registro na tabela Inventario "rsSelecao" --- na linha do commando rsSelecao.AddNew o sistema retorna um erro rsSelecao.AddNew rsSelecao("Inventario") = "& txtInventario.Text &" rsSelecao("dt_Inventario") = txtData.Text rsSelecao("CodUser") = vCodUser rsSelecao("CodBox") = !CodBox ' aqui poderia ser rs2Selecao("CodBox") ? rsSelecao("CodProduto") = !CodProduto rsSelecao("NumCaixa") = !NumCaixa rsSelecao("Movimento") = 0 rsSelecao("Status") = "" rsSelecao.Update 'acredito que a execução nem chegou aqui ainda pois o 'erro se da na hora de adcionar .MoveNext Loop End If End With End If
ps. Sou Iniciante em vb / sql sou programador clipper e ainda tenho muitas duvidas
|
|
|
|
|
|
Postada em 02/08/2011 18:19 hs
Marcio,tem forma mais simples e eficiente para transferir dados de uma tabela para outra. Basta postar seu Email que envio para você um exemplo.Quanto ao Update e insert do ADODB.Command ele é um pouco diferente.
|
|
|
|
|
|
Postada em 03/08/2011 10:01 hs
QUAL ERRO QUE ESTA DANDO? O RSSELECAO JA FOI INICIADO?
|
|
|
|
Marcio Pergola
não registrado
|
|
Postada em 03/08/2011 15:42 hs
eduardo, me ajuda ai vai... esta dificil de entender o "Update" no codigo anterior consegui resolver usando o "Insert", mas nesta nova etapa do sistema cai novamente no tal de "Update" Se voce puder me passar uma forma mais simple e eficiente eu agradeço. marciopergola@hotmail.com
-------------------------------------------------------------------------------------------------- no código abaixo tenho que pegar na tabela "inventario" o campo box e produto e pesquisar na tabela "estoque" se encontrar o box e produto gravar nas duas tabelas no campo "Movimento" o numero "0" (sem movimento) se não encontrar gravar "1" (incluido), depois, ainda não escrito no código abaixo, os registros da tabela "estoque" que o campo "Movimento" continuo "null" gravaria na tabela "inventario" com o campo "movimento" = "2" (excluidos). ---------------------------------------------------------------------------------------------- Private Sub AtualizaEstoque() Dim cnnComando As New ADODB.Command Dim vOk As Integer On Error GoTo errExclusao vOk = MsgBox("Corrigir o Estoque com este Inventário?", _ vbApplicationModal + vbDefaultButton2 + vbQuestion + vbYesNo, _ "Exclusão") If vOk = vbYes Then Screen.MousePointer = vbHourglass With cnnComando .ActiveConnection = cnnEstoque .CommandType = adCmdText 'Monta o comando SELECT para selecionar o registro na tabela: .CommandText = "SELECT * FROM InventarioBoxProduto WHERE Inventario = " & txtInventario.Text & ";" Set rsSelecao = .Execute End With With rsSelecao If Not (.EOF And .BOF) Then .MoveMin While Not .EOF aBox = !CodBox aProduto = !CodProduto aMov = "" With cnnComando .ActiveConnection = cnnEstoque .CommandType = adCmdText .CommandText = "SELECT * FROM EstoqueBoxProduto WHERE (CodBox = '" & aBox & "' And CodProduto = '" & aProduto & "' And Movimento is Null);" Set rs2Selecao = .Execute End With With rs2Selecao If Not (.EOF And .BOF) Then .MoveMin If Not .EOF Then aMov = 0 .Update Movimento, 0 Else aMov = 1 cnnComando.Execute "INSERT INTO Estoque (CodBox, CodProduto, Movimento) VALUES ('" & aBox & "', '" & aProduto & "', 1);" End If End If End With If aMov <> "" Then .Update (Movimento = aMov) End If .MoveNext Wend End If End With End If Saida: Screen.MousePointer = vbDefault Set cnnComando = Nothing Set rsSelecao = Nothing Set rs2Selecao = Nothing Exit Sub
errExclusao: With Err If .Number <> 0 Then MsgBox "Houve um erro durante a exclusão do registro.", _ vbExclamation + vbOKOnly + vbApplicationModal, "Erro" .Number = 0 GoTo Saida End If End With End Sub
|
|
|
|