PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#3 Général » [Résolu] [Linux - Ubuntu] Installation Postgre SQL / Pgadmin3 offline » 11/03/2014 16:33:57

NOURI
Réponses : 3

Bonjour les amis,

Je cherche à installer Postgresql et pgamin3 sur un OS Linux (Ubuntu 10 ou 12 par exemple) en mode déconnecte (sans accès internet)

Pourrez-vous m'indiquer les packages .deb à installer et l'ordre d'installation (surtout pgadmin)
(Si vous avez des liens je suis preneur smile)

Merci beaucoup pour l'aide

@++

#5 Général » [Resolu]Chemin fichier binaire dans postgre » 14/12/2012 14:38:53

NOURI
Réponses : 2

Salut à tous,

J'ai réussi à stocker des captures dans une base postgres, en revanche je ne sais pas leur emplacement réel sous Windows
ainsi sous Linux (Mandriva).

En fait  j'ai utilisé une fonction dans la libpq qui permet de stocker l'image dans la base par la suite je stock l'id (oid) retourné par la fonction
dans une table avec d'autres infos supplémentaires comme l'SN ......

Bref, je voulais savoir le chemin d'emplacement des fichiers binaire sous pg ?

Merci d’avance.

#7 Re : C et C++ » [RESOLU] Enregistrement d'une image dans une base pg » 07/12/2012 15:45:34

Salut Gaullime,

J'espère que tu es bien wink

La je me trouve obligé de creuser les API libpq.

Peux-tu STP expliquer un peu plus ?
Complexe dans quel sens ?

Merci

#8 Re : C et C++ » [RESOLU] Enregistrement d'une image dans une base pg » 07/12/2012 14:49:54

Salut,

Merci pour votre réponse !

En fait, j'ai bien vérifié le chemin de l'image sur mon poste client, nickel pas de problème
Également j'ai testé  avec 'c:\\Capture.JPG' même erreur.

Par contre le message d'erreur indique bien le serveur ( ERREUR: n'a pas pu ouvrir le fichier serveur)
Autrement le moteur du serveur à cherché l'image sur le disque dur du pc serveur c'est pas sur le disque client.
On est en phase ?

Merci !   wink

#9 C et C++ » [RESOLU] Enregistrement d'une image dans une base pg » 07/12/2012 13:09:04

NOURI
Réponses : 7

Salut à tous,


Voila,  je souhaite enregistrer des captures dans une base postgres.

J'arrive pas à utiliser correctement les deux fonction lo_export  et lo_import.

La requête suivante ne fonctionne pas sur un poste client ...

Code SQL :

INSERT INTO capturesv2 (numserie_capture,nom_capture,data_capture,utilisateur,datecreation,datemaj) values 
('SN_CARTE01','solodata',lo_import('c:/Capture.JPG'),'solo',current_timestamp,current_timestamp); 

Voici le message d'erreur :

 ERREUR:  n'a pas pu ouvrir le fichier serveur « c:/Capture.JPG » : No such file or directory


********** Error **********

ERREUR: n'a pas pu ouvrir le fichier serveur « c:/Capture.JPG » : No such file or directory
SQL state: 58P01

Comment faire pour importer / exporter des images sur un PC Client (Appli windev avec libpq.dll)?

NB : La même requête fonctionne correctement si je l'exécute sur le PC serveur.


Merci infiniment pour le support.   wink  wink  wink

#10 Re : PL/pgSQL » Fonction pgSQL » 25/11/2011 10:12:10

Merci bien!
ça fonctionne parfaitement.

pour LIMIT 1 ==> il y a que une seule mvt pour chaque code_intervention.

encore une fois merci.

wink

Tawfik

A+

#11 Re : PL/pgSQL » Fonction pgSQL » 23/11/2011 16:26:41

Merci pour votre repense !
je viens de modifier mon code, ça fonction mais incorrectement, en fait la fonction transfert que un seul action avec id_action_gamme pas bonne.

cette partie ne pose pas de problème
(gmao_id_intervention,(select id_action_gamme from actions_gammes where id_gamme = gmao_id_gamme) ?

Comment faire pour inserer toutes les actions de la tables actions_gammes en passant par  gmao_id_gamme ?

voici mon code

-- Function: creation_actions_preventives(character varying, character varying, character varying)

-- DROP FUNCTION creation_actions_preventives(character varying, character varying, character varying);

CREATE OR REPLACE FUNCTION creation_actions_preventives(code_intervention character varying, code_gamme character varying, usergmao character varying)
  RETURNS bigint AS
$BODY$
DECLARE
v_nb integer;-- nombre
ret bigint := 0; -- variable de retour
gmao_id_intervention bigint; -- id de l'intervention
gmao_id_gamme bigint; -- id de la gamme
gmao_nb_action_gamme bigint; -- nombre des actions pour une gamme

        /* gestion de la valeur de retour :
	>0 : retour 
	-1 : le code intervention n'existe pas
	-2 : le code gamme n'existe pas
	-3 : pas d'action pour cette gamme
	-3 : erreur transfert actins 
	*/	
BEGIN	
-- Récupération id_intervention
select id_intervention into gmao_id_intervention from interventions where code = code_intervention limit 1;
GET DIAGNOSTICS v_nb := ROW_COUNT;

if v_nb=0 then
		ret := -1;
		return ret;
	end if;
-- Récupération id_gamme
select id_gamme into gmao_id_gamme from gammes_preventives where gamme = code_gamme limit 1;
GET DIAGNOSTICS v_nb := ROW_COUNT;

if v_nb=0 then
		ret := -2;
		return ret;
	end if;

-- Calcule nombre des action pour une gamme
select count(id_action_gamme) into gmao_nb_action_gamme from actions_gammes where id_gamme = gmao_id_gamme; 

if gmao_nb_action_gamme = 0 then
		ret := -3;
		return ret;
	end if;

-- Creation d'une table temp, et on mettre dans cette table la liste des id_action_gamme pour une gamme x

insert into suivi_actions_gammes_preventives (id_intervention,id_action_gamme,statut,createur,datecreation,datemaj) values (gmao_id_intervention,(select id_action_gamme from actions_gammes where id_gamme = gmao_id_gamme),'0',usergmao,current_timestamp,current_timestamp);
GET DIAGNOSTICS v_nb := ROW_COUNT;

if v_nb=0 then
		ret := -4;
		return ret;
	end if;


RETURN 0; -- Transfert actions de actions_gammes vers suivi actions_gammes ...

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION creation_actions_preventives(character varying, character varying, character varying) OWNER TO postgres;

#12 Re : PL/pgSQL » Fonction pgSQL » 23/11/2011 14:55:25

Bonjour Marc,

En effet je voudrais insérer les data (id_action_gamme) de la table actions_gammes dans la table suivi_actions_gammes_preventives

Voici mon code que manque la partie en question

CREATE OR REPLACE FUNCTION creation_actions_preventives(code_intervention character varying, code_gamme character varying, usergmao character varying)
  RETURNS bigint AS
$BODY$
DECLARE
v_nb integer;-- nombre
ret bigint := 0; -- variable de retour
gmao_id_intervention bigint; -- id de l'intervention
gmao_id_gamme bigint; -- id de la gamme
gmao_nb_action_gamme bigint; -- nombre des actions pour une gamme

        /* gestion de la valeur de retour :
	>0 : retour 
	-1 : le code intervention n'existe pas
	-2 : le code gamme n'existe pas
	-3 : pas d'action pour cette gamme
	*/	
BEGIN	
-- Récupération id_intervention
select id_intervention into gmao_id_intervention from interventions where code = code_intervention limit 1;
GET DIAGNOSTICS v_nb := ROW_COUNT;

if v_nb=0 then
		ret := -1;
		return ret;
	end if;
-- Récupération id_gamme
select id_gamme into gmao_id_gamme from gammes_preventives where gamme = code_gamme limit 1;
GET DIAGNOSTICS v_nb := ROW_COUNT;

if v_nb=0 then
		ret := -2;
		return ret;
	end if;

-- Calcule nombre des action pour une gamme
select count(id_action_gamme) into gmao_nb_action_gamme from actions_gammes where id_gamme = gmao_id_gamme; 

if gmao_nb_action_gamme = 0 then
		ret := -3;
		return ret;
	end if;

-- étape 1 création d'une table temp, et on mettre dans cette table la liste des id_action_gamme, gmao_id_intervention,  pour une gamme x
-- etape 2 c'est insérer les data de la table temp dans la table suivi_actions_gammes_preventives
RETURN 0; -- Transfert actions OK

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION creation_actions_preventives(character varying, character varying, character varying) OWNER TO postgres;

Merci d'avance.

#13 PL/pgSQL » Fonction pgSQL » 22/11/2011 13:27:00

NOURI
Réponses : 6

Bonjour à tous,

Encore une fois j'ai besoin de l'aide.

Voici la contexte :

j'ai une table interventions

CREATE TABLE interventions
(
  id_intervention bigserial NOT NULL,
  code character varying(300) NOT NULL,
  id_gamme bigint NOT NULL

)
WITH (
  OIDS=FALSE
);
ALTER TABLE interventions OWNER TO postgres;

et une autre table gammes_preventives

CREATE TABLE gammes_preventives
(
  id_gamme bigserial NOT NULL,
  id_famille bigint NOT NULL,
  gamme character varying(200) NOT NULL,
  designation character varying(300),
  frequence character varying(100)

)
WITH (
  OIDS=FALSE
);
ALTER TABLE gammes_preventives OWNER TO postgres;

et une table actions_gammes

CREATE TABLE actions_gammes
(
id_action_gamme bigserial NOT NULL,
id_gamme bigint NOT NULL,
 action_gamme character varying(9000) NOT NULL,
  commentaire character varying(9000)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE actions_gammes OWNER TO postgres;

et finalement une table suivi_actions_gammes_preventives

CREATE TABLE suivi_actions_gammes_preventives
(
  id_suivi_action_gamme bigserial NOT NULL,
  id_intervention bigint NOT NULL,
  id_action_gamme bigint NOT NULL,
  statut character varying(50)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE suivi_actions_gammes_preventives OWNER TO postgres;

Je voudrais savoir comment faire pour copier la liste des actions (id_action_gamme) ... de la table actions_gammes dans la table suivi_actions_gammes_preventives, En passant par la TABLE interventions (id_intervention)

Pouvez-vous m'aider SVP ?

Merci d'avance

#15 Re : Général » pg_dump & password » 22/08/2011 11:54:23

Merci gleu,

Voila ,

J'ai une application (exécutable et leur runtime bien sur des DLL ...), dans le même dossier de mon exe j'ai ajouté le pg_dump.exe et libpq.dll, gssapi32.dll, ...
l'appli est disponible en réseaux usine, chaque personne peut lancer l'exécutable, et logger avec leur compte.
pour le dump, l'utilisateur doit mettre le chemin de sauvegarde puis clique sur valider c'est tout, la solution que j'ai trouvé actuellement c'est de créer le dossier  C:\Documents and Settings\USER\Application Data\postgresql et le fichier pgpass.conf d'une manière software et j'ajoute par la suite la ligne ip:5432:*:user:pass dans le pgpass.conf et après sauvegarde je supprime le fichier.

Que pensez-vous pour cette solution ?, avez-vous d'autre idée ?

Merci d'avance.

#16 Re : Général » pg_dump & password » 22/08/2011 11:07:25

Bonjour,

Merci pour votre réponse !
j'ai réussi à dumper la base de données avec l'utilisation de pgpass.conf, mais c'est pas TOP en sécurité, comme ça n’importe qui peu accéder à  C:\Documents and Settings\USER\Application Data\postgresql et regarde le password depuis le pgpass.conf.

Merci.

#17 Général » pg_dump & password » 21/08/2011 10:57:39

NOURI
Réponses : 6

Bonjour à tous,

Je voudrais faire un dump pour une base pg (9.0) via une application clientèle.
Avec mon appli je lance la commande pg_dump ... oup l'invite DOS demande le password de la base pour faire le dump ...
Y-a-t'il un moyen pour passer le password en paramètre pour la commande pg_dump ?
si non y-a-t'il d'autre solutions ?

Cordialement.
A+

#18 Re : PL/pgSQL » Trigger gestion stock » 17/05/2011 10:17:59

Bonjour à tous,

Euh … encore une fois SQLpro avec ces commentaires de …, à l’instant ou j’ai répandu à Marc j’ai pas vue leur message de merde, je parle de ça c’est juste pour dire que le MERCI c’est pour Marc, c’est pas pour toi Mr Pro !


J’ai regardé coté developpez.com et autre sites, toujours la même personne parle les même phrases (ne connaissez rien, difficile, bêtise, merde, bizarre, blabla, …)

SQLpro essayer d’être plus professionnelle, arrêter de traiter les choses de cette façon, les personnes viennent ici pour prendre c’est pas pour voir vos messages …

Regarde bien la qualité des réponses de Marc, de Guillaume, … c’est vraiment un vrai support pour partager, pour prendre, pour connaître, pour respecter les autres …

A Propos, c’est hors sujet, mais pour info, je ne suis pas ni DBA, ni un spécialiste SQL, je code essentiellement en  C / WinDev, je suis un spécialiste bancs de tests & mesures …

Encore une fois MERCI d’être plus ouvert, plus professionnelle …

Guillaume, Marc, exécutez-moi de cette façon, mais vraiment …

Allez Bonne journée, conteniez à développez ce super forum.

#19 Re : PL/pgSQL » Trigger gestion stock » 16/05/2011 15:37:14

MERCI wink

ça marche

Voila mon code

CREATE FUNCTION maj_etat_stock() RETURNS trigger AS $maj_etat_stock$
    BEGIN
    
         -- Verifie que etat_article est donnés
        IF NEW.etat_article IS NULL THEN
            RAISE EXCEPTION 'etat_article ne peut pas être NULL';
        END IF;
        
        -- Verifie si la quantité en à ajouter / mettre à jour est > a la qte min en stock
        IF NEW.quantite_stock > NEW.quantite_stock_min THEN

        -- Mettre l'état 'EN STOCK'
         NEW.etat_article  := 'EN STOCK';
         
         ELSE
          -- Mettre l'état 'A COMMANDER'
          NEW.etat_article  := 'A COMMANDER';
 
        END IF;
        
        RETURN NEW;
        
    END;
$maj_etat_stock$ LANGUAGE plpgsql;

CREATE TRIGGER maj_etat_stock BEFORE INSERT OR UPDATE ON articles
    FOR EACH ROW EXECUTE PROCEDURE maj_etat_stock();

#20 Re : PL/pgSQL » Trigger gestion stock » 16/05/2011 13:37:24

Merci Marc pour l'aide.

je voudrais mettre à jour l'état du stock (c'est à dire la valeur de la colonne etat_article)

pour un UPDATE OR INSERT je dois vérifier si quantite_stock > quantite_stock_min si c'est le cas je mettre à jour la colonne  :
etat_article = 'EN STOCK'


sinon (quantite_stock < quantite_stock_min), je mettre etat_article = 'A COMMANDER'

merci

#21 Re : PL/pgSQL » Trigger gestion stock » 16/05/2011 12:16:46

MERCI Marc !

après passage de la commande :

CREATE TRIGGER maj_etat_stock
  after INSERT or update
  ON articles
  FOR EACH ROW
  EXECUTE PROCEDURE maj_etat_stock();

je lance la commande :

UPDATE articles SET quantite_stock = '200' WHERE id_article = '35';

pg_admin me répandre :
ERREUR:  dépassement de limite (en profondeur) de la pile
HINT:  Augmenter le paramètre « max_stack_depth » après vous être assuré que la
limite de profondeur de la pile de la plateforme est adéquate.
CONTEXT:  instruction SQL « SELECT 1 FROM ONLY "public"."fournisseurs" x WHERE "id_fournisseur" OPERATOR(pg_catalog.=) $1 FOR SHARE OF x »
instruction SQL « UPDATE articles SET etat_article = 'EN STOCK' WHERE articles.id_article = NEW.id_article »
PL/pgSQL function "maj_etat_stock" line 25 at instruction SQL
instruction SQL « UPDATE articles SET etat_article = 'EN STOCK' WHERE articles.id_article = NEW.id_article »
PL/pgSQL function "maj_etat_stock" line 25 at instruction SQL
instruction SQL « UPDATE articles SET etat_article = 'EN STOCK' WHERE articles.id_article = NEW.id_article »
PL/pgSQL function "maj_etat_stock" line 25 at instruction SQL
instruction SQL « UPDATE articles SET etat_article = 'EN STOCK' WHERE articles.id_article = NEW.id_article »
PL/pgSQL function "maj_etat_stock" line 25 at instruction SQL
instruction SQL « UPDATE articles SET etat_article = 'EN STOCK' WHERE articles.id_article = NEW.id_article »
PL/pgSQL function "maj_etat_stock" line 25 at instruction SQL
instruction SQL « UPDATE articles SET etat_article = 'EN STOCK' WHERE articles.id_article = NEW.id_article »
PL/pgSQL function "maj_etat_stock" line 25 at instruction SQL
instruction SQL « UPDATE articles SET etat_article = 'EN STOCK' WHERE articles.id_article = NEW.id_article »
PL/pgSQL function "maj_etat_stock" line 25 at instruction SQL
instruction SQL « UPDATE articles SET etat_article = 'EN STOCK' WHERE articles.id_article = NEW.id_article »
PL/pgSQL function "maj_etat_stock" line 25 at instruction SQL

...

#22 PL/pgSQL » Trigger gestion stock » 16/05/2011 10:20:34

NOURI
Réponses : 10

Bonjour à tous,

j'ai un problème avec un trigger qui me permet de mettre à jour l’état d'un stock ('EN STOCK' / 'A COMMANDER')

la table est la suivante :

CREATE TABLE articles
(
  id_article bigserial NOT NULL,
  id_sous_famille bigint NOT NULL,
  code character varying(300) NOT NULL,
  article character varying(300) NOT NULL,
  designation character varying(300) NOT NULL,
  id_fournisseur bigint NOT NULL,
  quantite_stock integer NOT NULL,
  quantite_stock_min integer NOT NULL,
  etat_article character varying(60) NOT NULL,
  type_derniere_mouvement character varying(40) NOT NULL,
  utilisateur character varying(50),
  datecreation timestamp with time zone,
  datemaj timestamp with time zone,
  CONSTRAINT pk_article PRIMARY KEY (id_article),
  CONSTRAINT articles_fournisseurs_fk1 FOREIGN KEY (id_fournisseur)
      REFERENCES fournisseurs (id_fournisseur) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE RESTRICT,
  CONSTRAINT articles_sousfamilles_fk1 FOREIGN KEY (id_sous_famille)
      REFERENCES sousfamilles (id_sous_famille) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE RESTRICT,
  CONSTRAINT un_article_designation UNIQUE (designation)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE articles OWNER TO postgres;

et le code du trigger est :

CREATE OR REPLACE FUNCTION maj_etat_stock()
  RETURNS trigger AS
$BODY$
DECLARE
	
int_quantite_stock integer;
int_quantite_stock_min integer;
intId_id_article bigint;

BEGIN
-- pour chaque mouvement on cherche la quantité, et la quantité min ...
SELECT articles.id_article,
articles.quantite_stock,
articles.quantite_stock_min 

INTO intId_id_article,
int_quantite_stock,
int_quantite_stock_min

FROM articles

WHERE articles.id_article = NEW.id_article; -- pour chaque INSERT / UPDATE

-------------------------------------------------------------------------------------------

IF (int_quantite_stock > int_quantite_stock_min) THEN

UPDATE articles SET etat_article = 'EN STOCK' WHERE articles.id_article = NEW.id_article;

ELSE

UPDATE articles SET etat_article = 'A COMMANDER' WHERE articles.id_article = NEW.id_article;

END IF;

RETURN NULL;

END;

$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION maj_etat_stock() OWNER TO postgres;

je fais UPDATE, INSERT dans la table articles, mais toujours l'etat du stock reste la même !

Pourrez-vous m'aider à trouver une solution ?

MERCI d'avance.

#24 Re : C et C++ » connexion automatique à la base de données » 30/01/2011 16:30:43

ça c'est le bon test ou non ?

if (PQstatus(conn) != CONNECTION_OK)
{
if(MessageBox(vchwnd,"Notre système a détecté un problème de connexion réseaux \nVoulez-vous tenter de vous reconnecter à la base de données ?","PostgreSQL :",MB_YESNO + MB_ICONQUESTION) == IDYES)

{
       //ici j'appelle la fonction de connexion
}

}

MERCI pour le retour

#25 Re : C et C++ » connexion automatique à la base de données » 30/01/2011 16:21:19

MERCI Guillaume,

Effectivement j'ai déjà fais un test sur PGRES_TUPLES_OK avant de poser la question.
Bon voila ce que je voudrais savoir :
Si j’ai une table nommé test avec deux champs nom,prenom

1 er cas :
Si j’envoie cette requête au serveur

SELECT nom,prenom FROM test

La si il y a un problème réseau c’est normal d’afficher le message de reconnexion.
2 ème cas :
Si j’envoie cette requête au serveur

SELECTx nom,prenom FROM test

La il y a un erreur SQL c’est SELECTx par contre le message indique un problème réseau

Je résume je voudrais savoir si il y a un code d’erreur relative a l’echec de connexion au serveur (pas d’erruer fatal comme PGRES_FATAL_ERROR
Ou autre …)

Pied de page des forums

Propulsé par FluxBB