Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Fri 14 June 2019 13:59

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1620

Pb objet métier dans Vmap (basé sur Mapserver)

Bonjour,

J'ai un objet métier lié à une vue "v_pav_bis" qui représente les Points d'Apport Volontaire de mon interco. Voici d'ailleurs le sql dans postgre:

-- View: dechet.v_pav_bis

-- DROP VIEW dechet.v_pav_bis;

CREATE OR REPLACE VIEW dechet.v_pav_bis AS
SELECT pav.id_pav,
    pav.id_com,
    pav.commune,
    pav.no_colonne,
    pav.denominat,
    pav.geom
   FROM dechet.pav,
    s_cadastre.v_vmap_commune
  WHERE pav.id_com::text ~ similar_escape(( SELECT "user".restriction
           FROM s_vitis."user"
          WHERE "user".login::name = "current_user"()), NULL::text) AND v_vmap_commune.id_com = pav.id_com::bpchar;

ALTER TABLE dechet.v_pav_bis
    OWNER TO jcascales;

GRANT TRIGGER, REFERENCES, TRUNCATE, DELETE, UPDATE, SELECT ON TABLE dechet.v_pav_bis TO jcascales;

GRANT INSERT ON TABLE dechet.v_pav_bis TO jcascales WITH GRANT OPTION;
GRANT ALL ON TABLE dechet.v_pav_bis TO lunel_admin;
GRANT ALL ON TABLE dechet.v_pav_bis TO u_vitis;
GRANT SELECT ON TABLE dechet.v_pav_bis TO vmap_user;

-- Rule: delete_v_pav_bis ON dechet.v_pav_bis

-- DROP Rule delete_v_pav_bis ON dechet.v_pav_bis;

CREATE OR REPLACE RULE delete_v_pav_bis AS
    ON DELETE TO dechet.v_pav_bis
    DO INSTEAD
DELETE FROM dechet.pav
  WHERE pav.id_pav = old.id_pav;

-- Rule: insert_v_pav_bis ON dechet.v_pav_bis

-- DROP Rule insert_v_pav_bis ON dechet.v_pav_bis;

CREATE OR REPLACE RULE insert_v_pav_bis AS
    ON INSERT TO dechet.v_pav_bis
    DO INSTEAD
INSERT INTO dechet.pav (id_pav, id_com, commune, no_colonne, denominat)
  VALUES (new.id_pav, new.id_com, new.commune, new.no_colonne,new.denominat);

-- Rule: update_v_pav_bis ON dechet.v_pav_bis

-- DROP Rule update_v_pav_bis ON dechet.v_pav_bis;

CREATE OR REPLACE RULE update_v_pav_bis AS
    ON UPDATE TO dechet.v_pav_bis
    DO INSTEAD
UPDATE dechet.pav SET denominat = new.denominat
  WHERE pav.id_pav = new.id_pav;


Lorsque je veux insérer un point, j'ai ce message d'erreur (en PJ)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Fri 14 June 2019 20:41

francis_31
Participant actif
Date d'inscription: 24 Nov 2010
Messages: 86

Re: Pb objet métier dans Vmap (basé sur Mapserver)

Bonsoir,

à priori c'est PostgreSQL qui envoi une erreur (ça n'a pas l'air lié à vMap directement). Pour en savoir plus, dans vMap allez dans l'option "Journaux" pour faire apparaître les logs et regardez dans le fichier "error.log"" il doit y avoir un message explicite (il vous faut être connecté avec un identifiant administrateur) ? Ce sera plus simple pour savoir l'origine de l'erreur.

Une dernière petite chose dans le rule insert à la fin je pense qu'il vaudrait mieux que vous passiez une clause RETURING car sinon il y a des risques que votre vue n'affiche pas le point (pour forcer la mise à jour de la vue, uniquement dans le rule insert).

Bon week-end.

Hors ligne

 

Pied de page des forums

Powered by FluxBB