Campo de un recordset en unmódulo, llamado desde un formulario

Tengo este recordset creado que quiero pasar a un módulo, pues se repite en varias ocasiones:

    Set rstTPV = CurrentDb.OpenRecordset("01-TPV Facturacion")
        rstTPV.AddNew
        rstTPV!CodTicket = miTicket
        rstTPV!Fecha = Format(Date, "dd/mm/yyyy")
        rstTPV!Trimestre = DatePart("q", Date, vbMonday, vbFirstFourDays)
        rstTPV!AñoApunte = Year(Date)
        rstTPV!CodCliente = Me!Tabla.Form!ID_Cliente
        rstTPV.Update
        rstTPV.Close
        Set rstTPV = Nothing
    MsgBox "Cliente añadido al TPV", vbInformation

Como digo, este recordset es el mismo, salvo en esta línea:

        rstTPV!CodCliente = Me!Tabla.Form!ID_Cliente

donde varía solo el campo de un recordset a otro, es decir, CodCliente. ¿Cómo puedo crear un argumento en la función pública? He probado varias maneras, y me da error de tipos. 

Es decir, la función es esta:

Public Function Añadir(Tipo As String, FName As Form)

Y en tipo debería equivaler, en este caso, a CodCliente.

No sé si me explico.

1 respuesta

Respuesta
1

Diego: Esa línea de Código podría ser :

RstTPV.Fields(CampoTabla) = Frm.UnId

Por disciplina yo le doy el Nombre de Frm a lo que tu denominas FName (suena más a String)

Public Function Añadir(Frm As Access.Form, CampoTabla As String, UnId As Variant)

Y para llamar a la Función

Call Añadir(Me,CodCliente,Me.ID_Cliente)

Lo he improvisado sobre la marcha por lo que si no he interpretado bien tu necesidad o tienes algún error, me comentas. Un saludo >> Jacinto

Hola, Jacinto. Gracias.

Me funciona, en parte.

Date cuenta de una cosa. Esto:

Me!Tabla.Form!ID_Cliente

Toma el valor de un subformulario, cuyo nombre es Tabla.

Diego: Las prisas casi nunca son buenas >> De momento veo que faltan las comillas en >>

Call Añadir(Me,"CodCliente",Me.ID_Cliente)

Y ahora con lo que me comentas:

Call Añadir(Me.Tabla.Form,"CodCliente",Me.ID_Cliente)

Esperemos que no haya más. Un saludo >> Jacinto

A ver. Te explico para qué quiero hacer eso. Tengo esto:

Como ves, es un formulario con un subformulario. Tengo un botón para añadir ese cliente señalado en el subformulario a Ingresos, por ejemplo.

Si lo pongo como tú dices, me da error de que no existe el miembro, es decir, lo que tú pones como tercer argumento al llamarlo (Me.ID_Cliente). Obviamente, ese campo no existe en el formulario principal, sino que está en el subformulario.

¡Mil gracias, y perdona la insistencia!

Diego: Veo que no va a funcionar así tampoco, porque el último parámetro, no lo toma bien.

Para simplificar podemos quitar el Formulario si es que lo quieres evitar y dejar:

Public Function Añadir(CampoTabla As String, UnId As Variant)

Call Añadir("CodCliente",Me!TablaForm.ID_Cliente) y entonces

RstTPV.Fields(CampoTabla) =UnId

Un saludo >> Jacinto

Diego: Nos hemos cruzado con los textos. Me había dado cuenta antes .

Ya me dirás si ésto último te funciona. Un saludo >> Jacinto

La pregunta no admite más respuestas

Más respuestas relacionadas