Abrir formulario filtrado extrayendo datos de otro

Discute sobre las herramientas de la base de datos
Responder
eliep
Mensajes: 15
Registrado: Jue Abr 06, 2017 7:51 pm

Abrir formulario filtrado extrayendo datos de otro

Mensaje por eliep »

Gracias a todas las aportaciones que hay en el foro he conseguido realizar una bd de facturación. Sin embargo, me ha surgido una necesidad y no sé como resolverla dado que carezco de conocimientos en el desarrollo de macros.
El formulario “formSolicitudes” está compuesto por un formulario con “IDCliente” y un subformulario con “IDSolicitud”, donde se registran las solicitudes de alojamiento de cada cliente. Para evitar duplicar el trabajo y minimizar errores en la realización de la factura del cliente, necesitaría una macro que abra el formulario “Formulario Factura_desde_Solicitudes”, filtrado por el IDCliente y a su vez aparecieran los campos “FechaSolicitada”, “Fecha_Fin_Solicitada” y “Residencia”que en su momento fueron introducidos en el registro correspondiente del subformulario.
Hasta ahora solo he conseguido abrir el formulario “Formulario Factura_desde_Solicitudes” filtrado por IDCliente. He buscado en el foro y solo he sido capaz de encontrar una macro desarrollada por cascabel que se acerca bastante a lo que necesito, pero dicha macro no guardaría los datos en la tabla “tabFacturas”.
Adjunto ejemplo de la base para una mejor explicación.
Gracias por vuestra atención.
Adjuntos
Bd Facturadg99.odb.zip
(26.69 KiB) Descargado 148 veces
Libreoffice 5.2.6.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por RMG »

Hola,

Viendo tu ejemplo tengo una duda. Facturas solo al cliente, o al cliente y solicitud. Si es este segundo caso con solo poner un campo idsolicitud en la tabla facturas, tendrias resuelto el problema y sin macros, ya que obtendrias ese campo al crear una factura. Mira el ejemplo.

Saludos
Adjuntos
Bd Facturadg999.zip
(34.56 KiB) Descargado 155 veces
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
eliep
Mensajes: 15
Registrado: Jue Abr 06, 2017 7:51 pm

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por eliep »

Hola.

Solo facturo al cliente. Además hay clientes a los que realizo factura sin solicitud previa.
Libreoffice 5.2.6.2 en Windows 7
eliep
Mensajes: 15
Registrado: Jue Abr 06, 2017 7:51 pm

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por eliep »

Por cierto en el "Module21" de la bd figura la macro de cascabel a la que me refiero anteriormente y que se acerca a lo que necesito. Lo digo para una mejor explicación y entendimiento.
Libreoffice 5.2.6.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por RMG »

Hola,

Perdona que insista, pero te estas complicando la vida con esos tres campos que quieres copiar. Si facturas sin solicitud no los puedes cargar y si facturas con solicitud, con el idSolicitud puedes disponer de esos campos en una consulta con las tablas facturas/solicitudes. Por eso mi ejemplo para no tener que emplear macros.

De todas formas si aún así lo quieres hacer, para recoger los campos del subformulario, debes bajar un nivel (parent) o hacer referencia al nombre del control tabla donde están las columnas de los campos que quieres. (oFormOrigen.GetByName("nombrecontroltabla").GetByName("datFecha_Entrada").Date).

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
eliep
Mensajes: 15
Registrado: Jue Abr 06, 2017 7:51 pm

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por eliep »

Hola.
He estado pensando sobre tu opinión y creo que es acertada. Pero aún así surge la necesidad de pegar esos datos en los campos con desplegables correspondientes (Fecha Entrada, Fecha Salida y Residencia). He modificado una macro y efectivamente pega los datos en los campos. Sin embargo ocurre que cuando grabo los datos me devuelve un mensaje diciendo que esos campos no tienen datos (es obligatorio que tengan datos, así fueron diseñados los campos de la tabla Facturas). Tengo que pulsar los desplegables y marcarlos. Es como si figuraran de una forma superficial pero en realidad no los carga. Una vez elegida la fecha en el desplegable correspondiente, por ejemplo, lo guarda con normalidad.
¿Habría solución para esto?.
Gracias.
Libreoffice 5.2.6.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por RMG »

Hola,

Por lo que explicas deduzco que no guardas el registro, pero si no veo tu ejemplo no te lo puedo asegurar. Si es por lo que te indico, al final de la macro de copiar pon esta linea para guardar.

If oFormDestino.IsModified Then
If oFormDestino.IsNew Then oFormDestino.InsertRow Else oFormDestino.UpdateRow
End if

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
eliep
Mensajes: 15
Registrado: Jue Abr 06, 2017 7:51 pm

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por eliep »

Hola,
Adjunto nuevamente la bd atendiendo a tu propuesta, espero así xplicarme mejor. La macro la he modificado siguiendo cierta intuición y no conocimientos porque carezco de ellos. En principio funciona pero no he insertado tu sugerencia porque no acabo de entenderte. Efectivamente, después de cumplimentar los datos y pulsar guardar es cuando aparecen los comentarios en los que me indica que los campos no tienen datos, aunque se haya pegado información.

Saludos.
Libreoffice 5.2.6.2 en Windows 7
eliep
Mensajes: 15
Registrado: Jue Abr 06, 2017 7:51 pm

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por eliep »

Ahora sí adjunto la bd, Perdón.
Adjuntos
Bd Factura21.zip
(27.32 KiB) Descargado 144 veces
Libreoffice 5.2.6.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por RMG »

Hola,

Mi propuesta de guardar el registro no sirve en tu ejemplo, por que es necesario cargar todos los campos de la factura antes de guardar.(no es aconsejable ponerse tantas restricciones).

Mira tu ejemplo modificado. El formulario de facturas lo he puesto solo para introducir nuevas facturas.

Saludos
Adjuntos
Bd Factura22.zip
(25.26 KiB) Descargado 162 veces
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
eliep
Mensajes: 15
Registrado: Jue Abr 06, 2017 7:51 pm

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por eliep »

Hola.
He mirado tu propuesta y cuando he pulsado el botón facturar me aparece el siguiente error.
Error de ejecución de BASIC. Valor de propiedad incorrecto.
Aparece en la línea siguiente.
FEntrada=oForm.getByName("Solicitudes").GetByName("ListaSolicitudes").getByName("Fecha_Solicitada").Date
Libreoffice 5.2.6.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por RMG »

Hola,

Veo que usas LO, quizás sea por eso el error. Cambia Date por CurrentValue.

En AOO me funciona bien de las dos formas.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
eliep
Mensajes: 15
Registrado: Jue Abr 06, 2017 7:51 pm

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por eliep »

Hola.
Tampoco me funciona. Después de todo tu esfuerzo LO parece que se resiste.

Saludos.
Libreoffice 5.2.6.2 en Windows 7
eliep
Mensajes: 15
Registrado: Jue Abr 06, 2017 7:51 pm

Re: Abrir formulario filtrado extrayendo datos de otro

Mensaje por eliep »

Hola.

Además de cambiar Date por CurrentValue he reemplazado los campos de fechas por un campo formateado dándole un formato fecha en las propiedades de campo. Cuando ejecuto pegar en el formulario de destino aparece una fecha que nada tiene que ver con la copiada. Esto es todo lo que he podido logar después de muchos, muchos cambios. También he buscado por la red casos parecidos y posibles soluciones y no he encontrado nada.

Gracias.
Libreoffice 5.2.6.2 en Windows 7
Responder