Vous n'êtes pas identifié(e).
Oui, je viens de regarder c'est parfait
Merci bien pour le partage
@+
Je partage le lien peut être utile pour d'autre personnes
http://doc.ubuntu-fr.org/tutoriel/comme … s_internet
Merci quand même
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 )
Merci beaucoup pour l'aide
@++
Parfait, Merci beaucoup !
A+
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.
OK, merci !
Salut Gaullime,
J'espère que tu es bien
La je me trouve obligé de creuser les API libpq.
Peux-tu STP expliquer un peu plus ?
Complexe dans quel sens ?
Merci
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 !
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.
Merci bien!
ça fonctionne parfaitement.
pour LIMIT 1 ==> il y a que une seule mvt pour chaque code_intervention.
encore une fois merci.
Tawfik
A+
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;
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.
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
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.
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.
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+
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.
MERCI
ç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();
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
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
...
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.
MERCI Guillaume
Merci pour tous vos renseignements
ç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
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 …)