Convidado 3/9/2013, 15:14
Vamos a sua solução:
1 - Criado um campo na tabela DetPedido >>> Item
O subform será visualizado em ordem de acordo com a numeração do ítem
2 - Ocultado no subform os campos IdDet e IdPedido
3 - Incluido módulo de numeração Vago para numerar o proximo registro (Item) após atualização do produto na caixa de combinação
4 - Botão para inserir nova linha selecionando em que linha inserirá este registro
Código para inserir nova linha
Private Sub btnInserirLinha_Click()
Dim IntItem As Integer
Dim Rs As DAO.Recordset
Dim strSQL As String
Dim i As Integer
Dim X As Integer
'---------------------------------
'SQL da tabela
'---------------------------------
strSQL = "SELECT * FROM DetPedido"
'---------------------------------
'Abre o recordset baseado na SQL
'---------------------------------
Set Rs = CurrentDb.OpenRecordset(strSQL)
'------------------------------------------------------------------------------------------------
'Carrega a variável com o número de registros da tabela para utilização no procedimento com o For
'------------------------------------------------------------------------------------------------
i = DCount("*", "DetPedido", "IdPedido = " & Forms!Pedido.IDPedido & "")
'-------------------------------------------------------------
'Carrega a variável com o número da linha digitada na ImputBox
'-------------------------------------------------------------
IntItem = InputBox("Informe a linha para inserir:", "Atenção!")
'-----------------------------------------------------------------------------------------------------------------
'Procedimento com For... Filtrará o recordset de acordo com o número na variável IntItem para en seguida alterá-lo
'adicionando 1 ao mesmo...Seguidamente incrementa a variável IntItem e encontrará o próximo registro no recordset
'para ir alterando os registros subsequentes, deixando o número digitado na ImputBox vago
'-----------------------------------------------------------------------------------------------------------------
For X = 1 To i - 1
Rs.FindFirst "Item = " & IntItem & ""
IntItem = IntItem + 1
Rs.Edit
Rs!Item = IntItem
Rs.Update
Next X
'--------------------------------------------------------------------------------
'Adiciona o registro com número vago na tabela, justamente o digitado na ImputBox
'--------------------------------------------------------------------------------
Rs.AddNew
Rs!Item = NumeroLivreVago("Item", "DetPedido")
Rs!IDPedido = Forms!Pedido.IDPedido
Rs.Update
Me.PedidoSubform.Requery
End Sub
Cumprimentos.