FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error maestro detalle
Saludos a Todos
Estoy desarrollando un aplicacion de facturacion utilizando interbase, delphi7 , dbexpress las bases que utilizo son CREATE TABLE "FACTURAS" ( "USUARIO" "DMUSUARIO", "VALORFACTURA" FLOAT DEFAULT 0 NOT NULL, "FECHAVENCIMIENTO" DATE DEFAULT current_date NOT NULL, "ABONO" FLOAT DEFAULT 0 NOT NULL, "SALDO" FLOAT DEFAULT 0 NOT NULL, "RECIBO" INTEGER DEFAULT 0 NOT NULL, "FECHARECIBO" DATE DEFAULT current_date NOT NULL, "OBSERVACIONES" VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES, "VALORLETRAS" VARCHAR(120) CHARACTER SET ISO8859_1 COLLATE ES_ES, "CONTADOR" VARCHAR(10) CHARACTER SET ISO8859_1 COLLATE ES_ES, "FECHAFACTURA" DATE DEFAULT current_date, "FACTURA" VARCHAR(12) CHARACTER SET ISO8859_1 NOT NULL COLLATE ES_ES, CONSTRAINT "FACTURASFACTURA" PRIMARY KEY ("FACTURA") ); CREATE TABLE "DETALLE" ( "USUARIO" VARCHAR(15) CHARACTER SET ISO8859_1 NOT NULL COLLATE ES_ES, "CONCEPTO" CHAR(3) CHARACTER SET ISO8859_1 NOT NULL COLLATE ES_ES, "TARIFA" FLOAT DEFAULT 0 NOT NULL, "CANTIDAD" FLOAT DEFAULT 0 NOT NULL, "VALOR" FLOAT DEFAULT 0 NOT NULL, "CANCELADO" CHAR(1) CHARACTER SET ISO8859_1 DEFAULT ' N' NOT NULL COLLATE ES_ES, "FECHAFACTURA" DATE DEFAULT current_date NOT NULL, "FACTURA" VARCHAR(12) CHARACTER SET ISO8859_1 NOT NULL COLLATE ES_ES, CONSTRAINT "DETALLEFACTURA" PRIMARY KEY ("FACTURA") ); - Coloco el SQLConection (SQLConnection1) - Coloco el SQLDataSet1 con la sentencia sql select * from facturas y con la propiedad SQLConnection = SQLConnection1 -coloso un Datasource1 con Dataset SQLDataset1 -coloco otro SQLDataSet2 con la sentencia sql select * from detalla where factura = :factura y la propiedad Datasource := Datasource1 - Coloco un DataSetProvider con la propiedad DataSet = SQLDataSet1 - Coloco un ClientDataSet1 con la propiedad ProviderName = DataSetProvider1 - Coloco un DataSource con la propiedad DataSet = ClientDataSet1 - Coloco un ClientDataSet2 con la propiedad DataSetfield clientdataset1sqldataset2 - Coloco un DataSource2 con la propiedad DataSet = ClientDataSet1 - Coloco un DataSource2 con la propiedad DataSet = ClientDataSet1 al Ejecutar el programa en la sentencia ClientDataSet1.open me da error catastrofico u access violation at addres 00402412 ¿ Alguien me podría hechar una mano e ? Gracias de antemano.
__________________
Raulp |
#2
|
|||
|
|||
Relacion Mestro Detalle con DBXpress
1. Configurar el componente SQLConnection. Ahora suponemos dos talbas TABLA_MAESTRA y TABLA_DETALLE. Colocar en un DataModule los siguientes componentes:
- Dos SQLDataSet (dstMestro y dst Detalle) - Un DataSetProvider (dspMaestro) - Dos ClientDataSet (cdsMaestro y cdsDetalle) 2. en un Fomulario colocar - Tres DataSource (dsLinkMaestro, dsMaestro y dsDetalle) 3. Escribir la setencia SQL en la propiedad Command Text del dstMaestro SELECT <columnas_de_tabla_maestra> FROM TABLA_MAESTRA WHERE <columna_PK_de_la_tabla_maestra> = :Parametro 4. Configurar el la propiedad Params, "Parametro" conforme su tipo, mejor que sea Integer entonces DataType = ftInteger 5. Cambiar la propiedad DataSet de dsLinkMaestro para que apunte a dstMaestro 6. Escribir la sentencia SQL de dstDetalle en la propiedad CommandText: SELECT <columnas_de_la_tabla_detalle> FROM TABLA_DETALLE WHERE <columna_PK_de_la_tabla_detalle> = :<columna_PK_de_la_tabla_maestra> NOTA IMPORTANTE: El nombre del parametro en la tabla detalles tiene que ser obligatoriamente igual al nombre de la columna que se corresponde en la tabla maestra. 7. Cambiar la propiedad DataSource de dstDetalle 8. Cambiar la propiedad DataSet de dspMaestro a dstMaestro 9. Cambiar la propiedad ProviderName de cdsMaestro a dspMaestro 10. Agregar los TFields del cdsMaestro. Se tiene que poder ver un campo "nuevo", de tipo anidado que va a ser el responsable de la relacion con la tabla de detalles. 11. Cambiar la propiedad DataSetField de cdsDetalle , colocando en ella el nombre del campo anidado. 12. Cambiar la propiedad DataSet de dsMaestro a cdsMaestro 13. Cambiar la propiedad DataSet de dsDetalle a cdsDetalle 14. Agregar los TFields de cdsDetalle A partir de ahora lo unico que hay que hacer es "insertar" un valor en "Parametro" y abrir eñ cds_Maestro, el resto se hace automaticamente. OBSERVACIONES Si se quiere utilizar la propiedad CommandText del ClientDataSet (y no del SQLDataSet) se tiene que colocar TRUE en la propiedad poAllowCommandText del DataSetProvider ligado al ClientDataSet. |
|
|
|