'De utilidad si necesitamos añadir un campo adicional que una tabla no tiene.
'En este caso el campo sería: Seleccionadas, que representa el numero de unidades seleccionadas de un determinado lote
'Al hacerlo de esta manera, al asignar al formulario el Recordset construido en memoria, podemos modificar los valores sin ningún problema
...
'Creamos el Recordset en memoria
Dim rsvM As ADODB.Recordset
Set rsM = New ADODB.Recordset
With rsM
.Fields.Append "ReferenciaArtículo", adVarChar, 20, adFldKeyColumn
.Fields.Append "Descripción", adVarChar, 250, adFldMayBeNull
.Fields.Append "Lote", adVarChar, 20, adFldMayBeNull
.Fields.Append "FechaCaducidad", adDate, , adFldMayBeNull
.Fields.Append "Unidades", adDecimal, , adFldMayBeNull
.Fields.Append "Seleccionadas", adDecimal, , adFldMayBeNull
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.LockType = adLockPessimistic
.Open
End With
'Leemos registros de la tabla Lotes en modo solo lectura
Dim rs New As ADODB.RecordSet
rs.Open "SELECT * FROM Lotes Where Referencia = 'XXXXXX'", cadenaconexion, adOpenStatic, adLockReadOnly
Do While Not rs.EOF
'Añadimos registros al recordset en memoria
'NOTA: La columna: Seleccionadas, no existe en la tabla Lotes
With rsM
.AddNew
.Fields("ReferenciaArtículo") = rs.Fields("ReferenciaArtículo")
.Fields("Descripción") = rs.Fields("Descripción")
.Fields("Lote") = rs.Fields("Lote")
.Fields("FechaCaducidad") = rs.Fields("FechaCaducidad")
.Fields("Unidades") = rs.Fields("Unidades")
.Fields("Seleccionadas") = 0
.Update
End With
rs.MoveNext
Loop
'Cerramos y liberamos recursos del recordset de la lectura de la tabla
rs.Close
Set rs = Nothing
'Asignamos el recordset en memoria al formulario para poder modificar el valor del campo: Seleccionadas. En el detalle del formulario deberemos tener en diversos textbox los campos del recordset.
Set Me.Recordset = rsM
...
Suscribirse a:
Enviar comentarios (Atom)
VBA Access. Redondeo de números decimales con el método medio redondeo. Alternativa a la función Round (bankers round)
Private Function Redondeo(ByVal Numero As Variant, ByVal Decimales As Integer) As Double 'Aplica método medio redondeo (half round ...
-
Option Compare Database Option Explicit '***************************** ' 'Ejemplo de uso ' 'selecciona 1 ficher...
-
Option Compare Database Option Explicit 'Zip / UnZip file or folder 'http://www.codekabinett.com/rdumps.php?Lang=2&targetDoc...
No hay comentarios:
Publicar un comentario