Inicio > Visual Basic > intman > Argumentos

Argumentos

Experto:
Usuario:
Fecha: 09/01/2009
Valoración: (4,00 sobre 5) Categoría: Visual Basic
09/01/2009
todoorejas, usuario preguntando en Visual Basic
Usuario
Hola intman, 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.
Muchas gracias por tu atención.
09/01/2009
todoorejas, experto respondiendo en Visual Basic
Experto
Los objetos no se pueden pasar por referencia, solo como valor, tendrias q hacer una copia del objeto y pasarsela al procedimiento o funcion
09/01/2009
todoorejas, usuario preguntando en Visual Basic
Usuario
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
09/01/2009
todoorejas, experto respondiendo en Visual Basic
Experto
aunque indicas q pasas por valor el recordset, este se pasa por referencia, modificando los valores. Prueba a hacer un clone del recordset (no se si se podra) 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
09/01/2009
todoorejas, usuario preguntando en Visual Basic
Usuario
Muy Bien. Me ha sido de gran utilidad
Enlaces patrocinados