FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
alterar el estado de un DataSet mestro detalle
hola amigos, tengo dos clientDataset(maestro detalle), solo el CDS maestro esta asociado al proveedor, el detalle esta realcionado mediante DataSetField al CDS mestro, bueno en fin.
mi problema es que cuando quiero insertar o modificar un registro en el detalle el estado del CDS maestro cambia a dsEdit, eso causa una mala sincronizacion de mis botones de (nuevo, grabar, cancelar) del maestro que esta en el evento OnStateChanged del DataSource asociado al maestro mi pregunta es: como haria para que cuando cambien los estados del CDS detalle no afecten a los estados del CDS maestro alguna tecnica o sugerencia....gracias de antemano. |
#2
|
||||
|
||||
Cuando el CDS detalle cambia de estado el CDS maestro permanece igual.
Supongo que tienes algún código que al cambiar datos del CDS detalle recalcula o actualiza el CDS maestro. |
#3
|
||||
|
||||
Cita:
_Cali: El comportamiento que observas es normal, pues al ser el detalle un conjunto de datos anidado, es considerado "parte" del conjunto de datos maestro. El código nativo que lo produce está en la clase base TDataSet:
En mi opinión está bien que ocurra de esa forma, pues cualquier cambio que hagas en el conjunto de datos detalle necesitarás aplicarlo con el método ApplyUpdates del conjunto de datos maestro. Así que antes de proponer soluciones, indaguemos cuál es el problema realmente. ¿Podrías darnos algo más de información de por qué no deseas que el estado del maestro sea congruente con lo que ocurre en el detalle? Saludos. Al González. |
#4
|
|||
|
|||
gracias a ambos por responder:
al gonzales te muestro una imagen de mi formulario ejecutado por q quiero q se vea desde el punto de vista del usuario final Lo que quiero realmente es que cuando el usuario añade o modifique registro del CDS detalle, estos cambios no afecten alos estados del maestro, mi razonamiento es logico y se q tambien esta bien q intercatuen los estados en dataset anidados, pero al usuario final como q se complicaria un poco el hecho de estar presionando post en el detalle y luego post en el mestro, aunque haciendo applyupdates al maetro graba todo de todo, ojala me haya explicado bien, en pocas palabras quisera un codigo mas "limpio" que gestione estas interacciones entre elos estados del maestro y del detalle, lo ideal seria que se anulen dichas interacciones y permtir que cada CDS haga lo suyo.. Gracias!! codigo asociado al envento OnDataChanged del datasource asociado al CDSMaestro Código Delphi [-] case cdsTransportistas.State of dsBrowse: begin //al guardar o cancelar btnNuevo.Enabled := True; btnGuardar.Enabled := False; btnCancelar.Enabled := False; //habilito los botones del navegador de la grilla grdVehiculos.OptionsData.Appending := True; grdVehiculos.OptionsData.Editing := True; grdVehiculos.OptionsData.Deleting := True; end; dsInsert, dsEdit: begin //al insertar o editar btnNuevo.Enabled := False; btnGuardar.Enabled := True; btnCancelar.Enabled := True; //deshabilito los botones del navegador de la grilla grdVehiculos.OptionsData.Appending := False; grdVehiculos.OptionsData.Editing := False; grdVehiculos.OptionsData.Deleting := False; end; end; |
#5
|
|||
|
|||
gracias a ambos por responder:
al gonzales te muestro una imagen de mi formulario ejecutado por q quiero q se vea desde el punto de vista del usuario final codigo asociado al envento OnDataChanged del datasource asociado al CDSMaestro Código Delphi [-] case cdsTransportistas.State of dsBrowse: begin //al guardar o cancelar btnNuevo.Enabled := True; btnGuardar.Enabled := False; btnCancelar.Enabled := False; //habilito los botones del navegador de la grilla grdVehiculos.OptionsData.Appending := True; grdVehiculos.OptionsData.Editing := True; grdVehiculos.OptionsData.Deleting := True; end; dsInsert, dsEdit: begin //al insertar o editar btnNuevo.Enabled := False; btnGuardar.Enabled := True; btnCancelar.Enabled := True; //deshabilito los botones del navegador de la grilla grdVehiculos.OptionsData.Appending := False; grdVehiculos.OptionsData.Editing := False; grdVehiculos.OptionsData.Deleting := False; end; end; |
#6
|
||||
|
||||
Recuerda poner el código entre etiquetas:
. |
#7
|
|||
|
|||
..de la imagen mostrada:
CDSMaestro es el cdsTransportistas y CDSDetalle es el cdsVehiculos me gustaria los ste:
si tienes una mejor solucion hasmelo saber porfavor Gracias Última edición por Casimiro Notevi fecha: 06-05-2011 a las 01:37:07. Razón: Arreglar etiquetas |
#8
|
|||
|
|||
una solucion...
bueno, analisando el codigo q enviaste
puse en el envento ONStateChanged del CDSMaestro los ste: cdsDetalle.DataSetField.DataSet.CheckBrowseMode; y funciona!!! los cambios aparentemente ya no se afectal al CDSMaestro pero esta bien esa solucion??? |
#9
|
||||
|
||||
Antes que nada te rogaría que cuides darle formato Delphi al código que pongas para que no se pierda el sangrado. Casimiro ya te ilustró cómo hacerlo.
Cita:
Cita:
Como podrás notar, para el detalle solamente utilizo tres botones: agregar, eliminar y cancelar, que son los que realmente se necesitan en la mayoría de estos casos. Vaya, ni siquiera le dejo ver al usuario en qué estado se encuentra el actual registro detalle (¿eso es relevante para él?). El diseño que propongo está hecho bajo la óptica de que el usuario observa en un formulario como este "un documento", no "un registro maestro con registros detalles asociados". Saludos. Al González. |
#10
|
|||
|
|||
Muchas gracias por tu aportacion al gonzales, estuve colocando las etiquetas delphi pero al mandar el post a este hilo aparecieron mal, en fin disculpas por ello, por otro lado estudie bien la imagen de tu formulario y pues me parecio una buena sugerencia desde el punto de vista del usuario y depende del diseño tambien depende la complejidad del codigo, por eso adoptare tu criterio.
muschas gracias!!! Como podrás notar, para el detalle solamente utilizo tres botones: agregar, eliminar y cancelar, que son los que realmente se necesitan en la mayoría de estos casos. Vaya, ni siquiera le dejo ver al usuario en qué estado se encuentra el actual registro detalle (¿eso es relevante para él?). El diseño que propongo está hecho bajo la óptica de que el usuario observa en un formulario como este "un documento", no "un registro maestro con registros detalles asociados". Saludos. Al González. [/quote] |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Reporte del tipo Detalle/Sub Detalle/Sumarotia del Sub detalle - Sumatoria Total | sonjeux | Impresión | 1 | 28-12-2009 18:55:27 |
Estado Dataset | vtdeleon | Conexión con bases de datos | 2 | 18-04-2007 02:14:45 |
Maestro-detalle sin DataSet en QuickReports | Jan_polero | Impresión | 3 | 19-04-2005 00:58:43 |
Relacion Mestro-Detalle | silviodp | Conexión con bases de datos | 2 | 01-06-2004 15:20:00 |
Problema relacion maestro-detalle (Nested Dataset) | Toni | Conexión con bases de datos | 10 | 19-05-2004 16:38:56 |
|