Dilema en traspaso de información Access

Tengo un formulario que alimenta a una tabla de Honorarios que se llama “Libro de Honorarios” cuyos campos son idhonorarios, fechaemision, numero, rut, nombre, bruto, retención y liquidoapagar. A su vez mediante un control de pestañas también alimenta a tres tablas relacionadas que se llaman BrutoH, RetH y LiqH., cada una de las tres tablas contiene un Idhonorarios, ID propio, Codigo contable, nombre cuenta, glosa y monto.

La primera información (libro de honorarios) tiene por finalidad sacar el libro de honorarios mensual que ha salido sin ningún problema, pero se presentan problemas en la segunda que tiene por objetivo generar el asiento contable, donde quiero traspasar los datos que figuran en las tres tablas hacia la tabla Asiento (Idasiento, fecha, Nrocomprobante, tipocomprobante) y su relacionada DYH (Idasiento, código contable, nombre cuenta, glosa, debe, haber). Todas las tablas mencionadas se encuentran dentro de la misma base de datos.

Lo que he podido lograr es que en un formulario llamado “centraliza honorarios” coloque dos campos, uno de mes y el otro de año para poder filtrar en un subformulario, las boletas de un periodo en particular, además a la tabla de Libro de honorarios le agregue un campo si/no con el objetivo que si son marcados se traspasaran a la tabla Asiento y su relacionada DYH y cuando consulte nuevamente solo aparecerán los que faltan por traspasar.

Mi dilema es algo gigantesco ya que no he podido encontrar como puedo traspasar a las tablas mencionadas las boletas que son marcadas.

Por otro lado como puedo definir cuales envío al debe y cuales al haber de asiento contable

1 respuesta

Respuesta

En principio no me queda claro si la tabla se llama Honorarios y el formulario Libro de Honorarios o viceversa. No veo ningún campo común entre Honorarios y Asientos

Por otro lado tampoco veo ningún campo común entre las tablas BrutoH, retH y LiqH y la tabla Asiento. Si lo veo entre ellas y DYH, por lo que podrías poner en algún evento

Docmd. Runsql"Insert into DYH(códigocontable, numerocuenta, glosa, debe(o haber, depende)values(forms!nombredelformulario!codigocontable, forms!nombredelformulario!numerodecuenta,...)"

O también podrías poner

docmd.runsql"insert into DYH select * from BrutoH where...

Pero claro el problema es como le dices que relacione la tabla Asientos( a la que, en principio, no has podido asignarle ningún valor) y la tabla DYH. Porque si en la tabla Asientos hubieras podido ponerle algún valor y que el Autonumérico le asignara, por ejemplo el 37, siempre podrías decirle en código

docmd.runsql"update DYH set idasiento=dlast(""idasiento"",""asientos"",""idasiento is null"""

En fin, se podrían hacer muchas cosas

Te propongo una cosa. Haz una copia de la base y con tres o cuatro registros inventados, si quieres, me la mandas a [email protected] y sobre ella hablamos. Si lo haces, en el asunto del mensaje pon tu alias Luis G. Iturra, ya que si no sé quien me envía un mensaje ni los abro.

Agradeciendo la pronta respuesta, le señalo que la tabla se llama Honorarios y el formulario Libro de honorarios. La tabla Asiento esta relacionada con DYH pero no con las tablas BrutoH,retH y LiqH.

Serviría crear un campo numerico "idasiento" en la tabla Honorarios y en las tablas BrutoH,retH y LiqH y asignar el IDasiento que genera al momento de pasar a Asiento-DYH.

Atento a sus comentarios, le saluda

Luis

Como te decía, para insertar datos de una tabla en otra a través de código tienes que poder decirle como identifica el(los) registro(s) de la tabla de origen y los campos de la tabla de destino. No hace falta que se llamen igual pero si tienen que ser de datos homogéneos. Por ejemplo

Docmd.runsql"Insert into clientes(Nombrecliente,direccion,Telefono)values(Apellidoamigo,dondevive,celular) from Vecinos where Idvecino=forms!nombredelformulario!idloquesea"

Entonces ¿Cómo le dices que coja determinado registro de la tabla Honorarios y te lo inserte en la tabla Asientos, porque si no le pones criterio que identifique a un(unos) registros(s) en particular cada vez que ejecutaras el código te pasaría TODOS los registros de la tabla Honorarios en la tabla Asientos, por lo que los tendrías repetidos. Lo mismo vale para las tablas BrutoH... y DYH

Cambien un poco la estructura de la base de datos, con ésto cambia un poco la pregunta para poder lograr mi cometido.

Este formulario esta confeccionado con una consulta que solo muestra aquellos checkbox sin marcar y también esta filtrado por un mes y año en particular (periodo vigente).

En parte de arriba hay varios datos (fecha, T.C(tipo de comprobante)., Glosa y Nº de comprobante)  que en conjunto con la información del subformulario quiero traspasar a otras dos tablas.

Como logro que los checkbox que marque son los que pasen a las otras dos tablas relacionadas

Se puede usar la misma consulta con la que hice este formulario o tiene que ser otra nueva, entiendo también que puede ser mediante consulta de datos anexados, pero no se como.

ademas, se pueden dejar como opcional que todos los checkbox marcados vayan a un solo TC (tipo de comprobante) o que por cada checkbox se genere un TC.

Agradecería un poco de ayuda

Saludos

Luis

Puedes hacerlo de varias formas, pero dejo por sentado que sigo si aclararme la construcción de las tablas.

En el evento después de actualizar de la casilla de verificación puedes poner

If Nombrecasilla=-1 then

docmd.runsql"insert into tabla1(campoA,campoB,...)values('" & me.cuadrotexto1 & "',....)"

end if

Y si son muchos registros los que vas a marcar puedes poner un botón y en el evento Al hacer clic poner

If nombrecasilla=-1 then

Lo de arriba

Docmd. Gotorecord,, acnext

next

Para explicar le menciono que tengo un par de tablas relacionadas:

1ª tabla: Asiento:

IDCC,Fecha,Tipo,NTipo,GlosaG

2ª tabla Dasiento:

IdDasiento,Idasiento,Cuenta,Debe,Haber,Glosa

Ademas, tengo una tercera tabla solitaria que se llama Mov_Honorarios

Idhon, CtaH, TC,NTC, HFecha, Mbruto, Retenc, Liq_a_Pagar,Check box

De esta tabla generé una consulta que la pegue en un formulario llamado Centraliza honorarios (filtrado por periodo vigente y por Check box no marcado)

En este formulario aproveche mediante cuadros de textos indicar la fecha, TC ,NTC  y la Hglosa general a considerar.

Ahora, lo que quiero es que de aquellos registros que marque (chekbox) sean considerados  para ser copiados en las tablas relacionadas (asiento y Dasiento), es decir, que Hfecha vaya a Fecha, TC va a Tipo, NTC va a NTipo, Hglosa va a GlosaG

Mbruto va a Debe, Rtenc a va Haber, Li_a_Pagar va a Haber, CtaH va Cuenta

De antemano gracias por la ayuda

Luis

Como te decía la instrucción es la de Docmd.runsql"insert into....

Lo único que podemos hacer es, si quieres, repito, si quieres es que me mandes una copia VACÍA de las tablas y el formulario (es para ver a donde va cada cosa y la estructura del formulario) a [email protected], la miro y te digo. Si lo haces, en el asunto del mensaje pon tu alias Luis G, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas