Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con ventanas MDI al acceder a base de datos (https://www.clubdelphi.com/foros/showthread.php?t=86390)

hagsoft 31-07-2014 19:36:16

Problema con ventanas MDI al acceder a base de datos
 
Amigos soy nuevo aca y tambien programando en delphi, tengo un problema con mi aplicacion q tiene ventanas MDIchild q lanzo desde un MDIForm padre pero me conecto a la base de datos con un unico data modulo pero con diferentes querys en un FormA tengo un listado de Ventas y su detalle (Maestro detalle) con dos DBGRID, y cuando dejo abierto este, y abro otro formB pero de ventas y luego quiero imprimir la venta me imprime la venta del formulario FormA a donde esta posicionado el puntero, mi pregunta es porque el puntero no es independiente para cada formulario MDI hijo, o como tengo q hacer para q no ocurra este problema, gracias.

Caminante 31-07-2014 19:51:19

Me dejaste confundido :confused::confused::confused:

Podrias ordenar un poco tus ideas y explicarte un poco mejor.

Saludos

hagsoft 31-07-2014 20:20:15

en los dos formularios el puntero es el mismo apunta al mismo registro de la tabla ventas 155, son forms MDI.
ahi les dejo la imagen


Caminante 31-07-2014 22:56:08

Cada ventana tiene un dataset independiente o apuntan al mismo???

Serie bueno que detallaras un poco mas el caso

hagsoft 01-08-2014 03:51:22

-en el formulario maestro detalle uso un query.
-En el formulario de venta uso una tabla.

pero igualmente sigue el mismo problema, es mas cuando mando el dataset para imprimir lo creo el query y el datasource en tiempo de ejecucion runtime, espero su ayuda.

orodriguezca 02-08-2014 15:15:41

Suele ocurrir, sobre todo cuando se hace copiar y pegar, que los DataSources quedan mal "alambrados". Verifica que tus datasources están mirando realmente hacia los datasets que le corresponden. Es solo una sugerencia, me ha pasado.

ecfisa 02-08-2014 19:04:01

Hola hagsoft.
Cita:

Empezado por hagsoft (Mensaje 479582)
-en el formulario maestro detalle uso un query.
-En el formulario de venta uso una tabla.

pero igualmente sigue el mismo problema, es mas cuando mando el dataset para imprimir lo creo el query y el datasource en tiempo de ejecucion runtime, espero su ayuda.

Revisa lo que te están sugiriendo Caminante y orodriguezca.

Por lo que se puede apreciar en la imágen de tu mensaje anterior, el TDBGrid y los TDBEdit estan vinculados al mismo TDataSet. O dicho de otra forma, las propiedades DataSource de dichos componentes tienen asignado el mismo TDataSource.

Saludos :)

hagsoft 03-08-2014 02:55:25

Gracias a todos por responder, ecfisa: gracias por insertar la imagen, no me dejaba jeje, bueno les explico nuevamente:

en el form maestro detalle, creo el query y tb el datasource de esta manera:
myQry:=tQuery.create(self)
myds:=tdatasource.create(self)

y los vinculo

myds.dataset:=myQry.

y asi de esa forma en los 2 formulario, pero de igual forma tengo el mismo problema, o estaba pensando si las ventanas MDI permiten acceder desde un mismo data modulo a una tabla de base de datos pero con diferentes punteros para cada ventana abierta.

ozsWizzard 03-08-2014 20:19:24

Hay varias cosas que no entiendo, será por mi forma de trabajar pero la verdad es que no entiendo qué o cómo lo quieres hacer.
  1. ¿Qué quieres, que los querys sean independientes o dependientes?
  2. Si quieres que sean independientes, es sencillo, no entiendo por qué el hecho de que sean FORMs MDIChild puede afectar.Como si tienes 20 TQuery y TTables que tiran del mismo Datamodule (¿Con Datamodule te reieres a una misma Base de datos? porque en el datamodule puedes tener varas querys también)
  3. Yo suelo usar la estructura de provider, datasource tquery y clientdataset. Con eso nunca fallo. A lo mejor tienes algo mal asignado y usas el mismo provider para ambos...

Espero que con mis dudas puedas encauzar la tuya. Un saludo.

ecfisa 03-08-2014 21:45:56

Hola hagsoft.
Cita:

Empezado por hagsoft (Mensaje 479637)
...ecfisa: gracias por insertar la imagen, no me dejaba jeje,...

El inmerecido agradecimiento que recibo debería ir dirigido a Casimiro que es quién inserto las imágenes :)

Cita:

Empezado por hagsoft (Mensaje 479637)
... o estaba pensando si las ventanas MDI permiten acceder desde un mismo data modulo a una tabla de base de datos pero con diferentes punteros para cada ventana abierta...

El tipo de interface que estes usando, ya sea MDI o SDI no tiene relación con el comportamiento que mencionas.

Es claro que si en el TDataModule tenes un TDataSet y desde dos forms se vinculan dos TDataSource a ese mismo DataSet, al posicionarse en un registro en un form, se verá reflejada la acción en el otro ya que se trata del mismo TDataSet.
Pero si lo que hay en el TDataModule es un componente de conexión a base de datos y se utilizan dos TDataSet diferentes vinculados al anterior y cada uno vinculado la misma tabla, los posicionamientos realizados en uno son independientes del otro.


En tu caso y a partir de la imágen me quedan algunas dudas que hacen que no termine de entender la organización:
¿ El problema se te presenta en el reporte ?
¿ De ser así, de donde se obtienen los valores DataSet y FieldName que usan los controles que residen en el formulario del reporeador ? ¿ De la tabla, de la consulta o de una nueva consulta creada en el formulario del reporte filtrada por el envío de algún parámetro ?

Saludos :)

TiammatMX 04-08-2014 02:14:18

Cita:

Empezado por hagsoft (Mensaje 479569)
Amigos soy nuevo aca y tambien programando en delphi, tengo un problema con mi aplicacion q tiene ventanas MDIchild q lanzo desde un MDIForm padre pero me conecto a la base de datos con un unico data modulo pero con diferentes querys en un FormA tengo un listado de Ventas y su detalle (Maestro detalle) con dos DBGRID, y cuando dejo abierto este, y abro otro formB pero de ventas y luego quiero imprimir la venta me imprime la venta del formulario FormA a donde esta posicionado el puntero, mi pregunta es porque el puntero no es independiente para cada formulario MDI hijo, o como tengo q hacer para q no ocurra este problema, gracias.

Mi sugerencia (que todos los que han contestado te han hecho de diferentes maneras) es:

UTILIZA UN SOLO DATASOURCE POR PANTALLA, aunque se refieran a la misma tabla. Te ahorrarás muchísimos dolores de cabeza y generarás menos errores...

hagsoft 13-08-2014 19:52:35

obviamente q ya lo habia hecho, para cada pantalla utilizo diferentes tquery y tdatasource, pero de igual manera el puntero es el mismo para cuando quiero ver el reporte, solo pasa cuando quiero ver el reporte, uso fastreports, es mas los tquerys y los tdatasource lo creo en tiempo de ejecucion, aunque la conexion viene de un data modulo q se autocrea junto con el formulario MDI form padre, con los grid no hay problema, pero cuando le paso un query nuevo al resporte, imprime el q esta posicionado en el grid, no se porque el problema, gracias a todos por contestar.

saludos.


La franja horaria es GMT +2. Ahora son las 23:23:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi