Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   modificacion de resultado Consulta multiple (https://www.clubdelphi.com/foros/showthread.php?t=72870)

Yulka 16-03-2011 15:03:03

modificacion de resultado Consulta multiple
 
Hola, tengo un problema, cree una consulta utilizando varias tablas ( BD interbase) me muestra bien los datos en un formulario pero no me deja modificarlo,
Tengo un dataset donde esta guardada la siguiente consulta :

Código SQL [-]
select historiaclinica.hcnombre, historiaclinica.hcnro, historiaclinica.hcdni,
             historiaclinica.hcapellido, siniestro.strnro, siniestro.strfechaacc, siniestro.strart, observaciones.obsnrosin, observaciones.obsfecha, observaciones.obsprofesional, observaciones.obsobservacion,
observaciones.obsfechapc, observaciones.obsadmin,observaciones.obsfechaenv
from (historiaclinica inner join siniestro on historiaclinica.hcnro=siniestro.strhc) inner join observaciones on siniestro.strnro = observaciones.obsnrosin
where observaciones.obsfechaenv is NULL
order by historiaclinica.hcapellido;

Lo que tengo que me debe dejar modificar es todo lo de la tabla observaciones pero no me lo permite
Desde ya muchas gracias

Caro 16-03-2011 15:42:43

Hola Yulka, no te deja hacer el update porque en tu consulta estas interactuando con 3 tablas, por lo cual tu manejador de BD no sabe sobre cual de las tablas va hacer el update. Tienes que hacer un update solo sobre la tabla observaciones tomando el obsnrosin de tu consulta.

Saluditos

Yulka 16-03-2011 16:17:59

Tengo un IBDataset en donde en la propiedad Modifysql tengo lo siguiente:

Código SQL [-]
update OBSERVACIONES
set
  OBSNROSIN = :OBSNROSIN,
  OBSFECHA = :OBSFECHA,
  OBSPROFESIONAL = :OBSPROFESIONAL,
  OBSOBSERVACION = :OBSOBSERVACION,
  OBSFECHAPC = :OBSFECHAPC,
  OBSADMIN = :OBSADMIN,
  OBSFECHAENV = :OBSFECHAENV
where
  OBSNROSIN = :OLD_OBSNROSIN and
  OBSFECHA = :OLD_OBSFECHA and
  OBSPROFESIONAL = :OLD_OBSPROFESIONAL and
  OBSOBSERVACION = :OLD_OBSOBSERVACION and
  OBSFECHAPC = :OLD_OBSFECHAPC and
  OBSADMIN = :OLD_OBSADMIN and
  OBSFECHAENV = :OLD_OBSFECHAENV
pero aun así no funciona, sabes como lo tendría que hacer
Gracias

Casimiro Notevi 16-03-2011 16:45:21

Cita:

Empezado por Yulka (Mensaje 393801)
[..] pero aun así no funciona, sabes como lo tendría que hacer

¿Y por qué no funciona?, ¿qué hace?, ¿qué error sale?, ¿qué estás haciendo?, ¿cómo lo llamas?, ¿qué código estás usando?

Por cierto, bienvenido a clubdelphi, no olvides leer las normas básicas del club.

Yulka 16-03-2011 16:58:40

Gracias por la bienvenida,
no sale ningún error, solo no me deja ni agregar ni modificar
lo que hace es que se pueda ver las observaciones que escribió el medico y que el usuario pueda arreglarla para pasarla a una ART
¿cómo lo llamas? ahi tal vez este el problema ,no lo llamo en el código dentro del formulario, solo asigno cada campo del IB a cada campo del formulario.

rastafarey 17-03-2011 03:08:18

resp
 
Hermanito esto es mas facilq ue pelar mandarinas. Crea una vista con la consulta y le creas los disparadores a la vista y hay madas a actualizar en la tabla que quieras hacer las insercione smodificciono borrados.

Yulka 17-03-2011 03:15:17

Rastafarey no se como se crea una vista con la consulta y tampoco los disparadores

Yulka 17-03-2011 04:29:42

Gracias, estoy buscando algún buen ejemplo para entender mejor a lo que te referís rastafarey

rastafarey 22-03-2011 02:34:08

Resp
 
Si es con codigo que se entiende aqui hay codigo.

Código SQL [-]
CREATE TABLE "Variables" (
    "Id"                            BIGINT NOT NULL,
    "Id usuario que creo"           BIGINT DEFAULT -1 NOT NULL,
    "Fecha y hora de creacion"      TIMESTAMP DEFAULT Current_timestamp NOT NULL,
    "Id usuario que modifico"       BIGINT DEFAULT -1 NOT NULL,
    "Fecha y hora de modificacion"  TIMESTAMP DEFAULT Current_timestamp NOT NULL,
    "Id externo"                    BIGINT,
    "Nombre"                        VARCHAR(70) NOT NULL ,
    "Valor"                         DOUBLE PRECISION,
    "Memo"                          BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    "Binario"                       BLOB SUB_TYPE 0 SEGMENT SIZE 2048,
    "Cadena"                        VARCHAR(120) 
);

INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (1, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'MONEDA_LOCAL', NULL, 'Bolivar(es)');
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (2, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'SIGLAS_MONEDA_LOCAL', NULL, 'Bs');
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (3, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'MONEDA_DE_REFERENCIA', NULL, 'Dolar(es)');
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (4, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'SIGLAS_MONEDA_DE_REFERENCIA', NULL, '$');
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (5, -1, '2009-09-21 23:54:13', -1, '2009-09-22 01:13:18', NULL, 'FACTOR_DE_CAMBIO_MONEDA_DE_REFERENCIA', 7, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (6, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:58:02', 1, 'DEPOSITO_POR_DEFECTO', NULL, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (7, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:55:25', NULL, 'REPRESENTANTE_EMPRESA', NULL, 'Pedro perez');
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (8, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'LOGO_EMPRESA', NULL, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (9, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'DIRECCION_EMPRESA', NULL, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (10, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'TELEFONOS_EMPRESA', NULL, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (11, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'EMAILS_EMPRESA', NULL, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (12, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'WEBS_EMPRESA', NULL, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (13, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'NUMERO_DE_DECIMALES', 2, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (14, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'MONEDA_COMPRA', 1, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (15, -1, '2009-09-21 23:54:13', -1, '2009-09-22 00:15:54', NULL, 'ID_CLIENTE_POR_DEFECTO', 2, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (16, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'IMPUESTO', 1, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (17, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'PERMITIR_DESCUENTO_PARCIAL', 1, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (18, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:58:04', 1, 'DEPOSITO_DE_VENTA', NULL, NULL);
INSERT INTO "Variables" ("Id", "Id usuario que creo", "Fecha y hora de creacion", "Id usuario que modifico", "Fecha y hora de modificacion", "Id externo", "Nombre", "Valor", "Cadena")
                 VALUES (19, -1, '2009-09-21 23:54:13', -1, '2009-09-21 23:54:13', NULL, 'PORCENTAJE_UTILIDAD_PVP', 10, NULL);

CREATE VIEW "V empresa"(
    "Id",
    "Representante empresa",
    "Logo empresa",
    "Direccion empresa",
    "Telefono(s) empresa",
    "Email(s) empresa",
    "Web(s) empresa")
AS
Select 1
     , (Select "Cadena" From "Variables" Where "Nombre" = 'REPRESENTANTE_EMPRESA')
     , (Select "Binario" From "Variables" Where "Nombre" = 'LOGO_EMPRESA')
     , (Select "Memo" From "Variables" Where "Nombre" = 'DIRECCION_EMPRESA')
     , (Select "Memo" From "Variables" Where "Nombre" = 'TELEFONOS_EMPRESA')
     , (Select "Memo" From "Variables" Where "Nombre" = 'EMAILS_EMPRESA')
     , (Select "Memo" From "Variables" Where "Nombre" = 'WEBS_EMPRESA')
From RDb$DataBase;

CREATE OR ALTER TRIGGER "V empresa_AP" FOR "V empresa"
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
  -- Insercion o Modificacion
  If (Inserting or Updating) Then Begin

   Update Or Insert Into "Variables"("Nombre", "Cadena") Values('REPRESENTANTE_EMPRESA', New."Representante empresa")   Matching ("Nombre");
   Update Or Insert Into "Variables"("Nombre", "Binario") Values('LOGO_EMPRESA', New."Logo empresa")   Matching ("Nombre");
   Update Or Insert Into "Variables"("Nombre", "Memo") Values('DIRECCION_EMPRESA', New."Direccion empresa")   Matching ("Nombre");
   Update Or Insert Into "Variables"("Nombre", "Memo") Values('TELEFONOS_EMPRESA', New."Telefono(s) empresa")   Matching ("Nombre");
   Update Or Insert Into "Variables"("Nombre", "Memo") Values('EMAILS_EMPRESA', New."Email(s) empresa")   Matching ("Nombre");
   Update Or Insert Into "Variables"("Nombre", "Memo") Values('WEBS_EMPRESA', New."Web(s) empresa")   Matching ("Nombre");

  End

  -- Borrado
  Else If (Deleting) Then Begin
    Delete From "Variables" Where "Nombre" = 'REPRESENTANTE_EMPRESA';
    Delete From "Variables" Where "Nombre" = 'LOGO_EMPRESA';
    Delete From "Variables" Where "Nombre" = 'DIRECCION_EMPRESA';
    Delete From "Variables" Where "Nombre" = 'TELEFONOS_EMPRESA';
    Delete From "Variables" Where "Nombre" = 'EMAILS_EMPRESA';
    Delete From "Variables" Where "Nombre" = 'WEBS_EMPRESA';
  End
end

rastafarey 22-03-2011 02:36:30

Resp
 
Te puse el ejemplo mas lo mas raro que pude. Convirtiendo registros a campos y luego actualizando o insertanto sobre los registro dependiendo del nombre.

Crea uan bd y ejecuta todo este codigo.

Yulka 25-03-2011 21:11:28

Gracias, ya lo pude solucionar


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

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