Argumentos

Estoy probando a pasar argumentos a un procedimiento por referencia y por valor. Con las variables normales no tengo problema funciona, pero no me funciona cuando el argumento que paso es un objeto, por ejemplo un recordset. ¿Los objetos no se pueden pasar por valor? Porque me modifica el recordset inicial.

1 Respuesta

Respuesta
1
Los objetos no se pueden pasar por referencia, solo como valor, tendrías que hacer una copia del objeto y pasársela al procedimiento o función
Estoy probando este código, y aún pasándolo por valor las modificaciones que hago en el procedimiento me modifican el recordset inicial. Podrías decirme dónde tengo el fallo, ¿por favor?
Private Sub Form_Load()
Dim strCadena As String
Dim rsRecord As ADODB.Recordset
Set rsRecord = New ADODB.Recordset
strCadena = "SI"
rsRecord.Fields.Append "C1", adChar, 2
rsRecord.Open
rsRecord.AddNew "C1", "SI"
rsRecord.Update
Pasar strCadena, rsRecord
MsgBox strCadena
MsgBox rsRecord.Fields(0).Value
Unload Me
End Sub
Private Sub Pasar(ByVal strCad As String, ByVal rsRec As ADODB.Recordset)
strCad = "NO"
MsgBox rsRec.Fields(0).Value
rsRec.Fields(0).Value = "NO"
rsRec.Update
End Sub
Aunque indicas que pasas por valor el recordset, este se pasa por referencia, modificando los valores. Prueba a hacer un clone del recordset (no se si se podrá) o bien hazte otro recordset y pasa los valores de uno a otro, como si tuvieras 2 copias del recordset y pasa al procedimiento el recordset de copia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas