Convidad 13/12/2011, 17:25
Olá
Acho que tranquei no mesmo ponto que você...
Fiz o seguinte:
' 1 - criei o campo codorca na tblorcamento para obter os orçamentos importados
' 2 - criei a combo SelectOrca no frmvenda para definir o orçamento a ser importado
' origem dos dados: SELECT tblorcamento.codvenda, tblorcamento.data, tblorcamento.hora, tblorcamento.vendedor FROM tblorcamento ORDER BY tblorcamento.data DESC;
'
' no evento após atualizar da combo
'
Private Sub SelectOrca_AfterUpdate()
Dim Ver As Integer
' verifica se já existe o codorca na tblvenda
Ver = Nz(DCount("[codorca]", "[tblvenda]", "codorca=Forms!frmvenda!SelectOrca"), 0)
If Ver = 0 Then
DoCmd.SetWarnings False
' importa
DoCmd.RunSQL "INSERT INTO tblvenda ( hora, data, vendedor, codorca ) SELECT tblorcamento.hora, tblorcamento.data, tblorcamento.vendedor, tblorcamento.codvenda FROM tblorcamento WHERE (((tblorcamento.codvenda) = [Forms]![frmvenda]![SelectOrca]));"
DoCmd.SetWarnings True
ElseIf Ver > 0 Then
MsgBox ("Este orçamento já foi importado"): End If
' atualiza
Form.Requery
' move para o registro gerado
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[codorca] = " & Str(Nz(Me![SelectOrca], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
'
' Até aí puxa os dados do orçamento, gera o novo registro na tblvenda, e move para o novo reg
' Estou tentando, mas ainda não consegui,
' inserir os registros de itens de produto na tblpedido
' correspondentes aos itens na na tblsuborcamento.
Dim rst As ADODB.Recordset
Dim lngID As Long
Dim intParc As Integer
Dim i As Variant
'conta os registros na tblsuborcamento
intParc = Nz(DCount("[codpedido]", "[tblsuborcamento]", "codvenda=" & Me.codorca), 0)
If Not intParc > 0 Then
MsgBox "O número de itens é " & intParc & "."
Exit Sub
Else
'tentativa de copiar os itens de produto
lngID = Me.codvenda 'armazena o ID
Set rst = New ADODB.Recordset 'abre a tabela
With rst
.ActiveConnection = CurrentProject.Connection
.CursorType = adOpenForwardOnly
.LockType = adLockOptimistic
.Source = "tblpedido"
.Open
For i = 1 To intParc 'adiciona um registro para cada item
.AddNew
.Fields("codvenda") = lngID
.Fields("produto") = DLookup("[produto]", "[tblsuborcamento]", "[codpedido]=" & i)
.Fields("quant") = DLookup("[quant]", "[tblsuborcamento]", "[codpedido]=" & i)
.Fields("preco") = DLookup("[preco]", "[tblsuborcamento]", "[codpedido]=" & i)
.Update
Next i
.Close
End With
Set rst = Nothing 'libera memória
Me.Refresh 'atualiza a tela
End If
End Sub
Última edição por norbs em 14/12/2011, 13:52, editado 6 vez(es) (Motivo da edição : update no código)