Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Bases de données > PostgreSQL

PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL

Réponse
 
Outils de la discussion
Vieux 01/11/2008, 14h49   #1 (permalink)
Membre régulier
 
Avatar de dr00w
 
Date d'inscription: septembre 2005
Localisation: Montréal
Messages: 116
Par défaut Gestion des mises à jour effectuées sur un client

Bonjour,

Désolé si je ne suis pas dans le bon forum puisque ma question n'est pas spécifique à PostgreSQL mais je ne sais pas trop quel forum utiliser pour cette question.

Je suis à monter une interface graphique comme client à une base de donnée. Soit un formulaire semblable à une facture avec des informations sur une personne et des lignes contenant des achats affichés dans une liste. La liste est associé à un tableau qui est rempli à l'ouverture du formulaire par une requête sql. L'utilisateur peut ajouter, modifier ou supprimer des lignes et je dois pouvoir identifier les modifications survenues afin de faire les mises à jour dans la base lorsque l'utilisateur validera le formulaire.

Je peut voir plusieurs possibilités pour ce genre de cas (qui j'imagine est très courant).

1- avoir un tableau parallèle pour chaque cas (un contenant les lignes ajoutées, un pour les lignes modifiées et un pour les lignes supprimées). Cette méthode implique de devoir synchroniser 4 tableaux pour le cas où l'utilisateur ajoute une ligne puis la modifie et fini par la supprimer.

2- ajouter un champ (statut) invisible pour l'utilisateur dans chaque ligne contenant un code indiquant si c'est une nouvelle ligne ou une modification (par exemple 0 pour une nouvelle, 1 pour une modifiée). Il faut tout de même un tableau parallèle pour gérer les suppressions puisque la ligne supprimée ne doit plus apparaître dans la liste affichée par le formulaire.

3- faire les mises à jour en temps réel avec la base de données. Ceci implique que les modifications se passe à l'intérieur d'une transaction et de faire un COMMIT ou ROLLBACK selon que l'utilisateur valide ou annule le formulaire. L'autre problème est que le formulaire peut être affiché passablement longtemps si l'utilisateur décide de prendre une pause ou même de quitter le travail en laissant le formulaire ouvert...

Il y a probablement d'autres possibilités et c'est là que j'ai besoin de vous

Merci
dr00w est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/11/2008, 04h09   #2 (permalink)
Membre actif
 
Date d'inscription: novembre 2004
Messages: 196
Par défaut

Bonjour
Questions ?
Votre type interface prog (commandes) > postgresql ?
Votre interface graphique est asynchrone WWW ou STD ?
bustaf est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/11/2008, 16h02   #3 (permalink)
Membre régulier
 
Avatar de dr00w
 
Date d'inscription: septembre 2005
Localisation: Montréal
Messages: 116
Par défaut

Citation:
Votre type interface prog (commandes) > postgresql ?
Le client utilise libpq pour les interactions avec la base et est construit avec Cocoa (Mac OS X).


Citation:
Votre interface graphique est asynchrone WWW ou STD ?
asynchrone.

Question :

Si je choisi le cas #3, quelles sont les implications de garder une transaction ouverte pendant un temps très long ?

Merci pour votre réponse.
dr00w est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/11/2008, 16h56   #4 (permalink)
Membre actif
 
Date d'inscription: novembre 2004
Messages: 196
Par défaut

Bonjour
Ok
Pour la 3..
En asynchrone Il vaut mieux opérer à la base sur l'interface de saisie c'est plus simple..
Si l'utilisateur saisie des valeurs via le browser
Ex:Modification de valeurs existantes

input type=text name=xx0 value=(la même valeur du champs)
input type=hidden name=xx0 value=(la même valeur du champs)


La valeur hidden récupérée à l'ouverture ne changera pas au submit
(l'utilisateur n'a pas accès)
Si la valeur type text est changée ou supprimée vous pouvez le contrôler
par comparaison des 2 variables.
En asynchrone rien n'est simple ....
Bon courage ...
bustaf est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/11/2008, 17h40   #5 (permalink)
Membre régulier
 
Avatar de dr00w
 
Date d'inscription: septembre 2005
Localisation: Montréal
Messages: 116
Par défaut

Citation:
Envoyé par bustaf Voir le message
En asynchrone rien n'est simple ....
Bon courage ...
Merci
dr00w est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/11/2008, 18h24   #6 (permalink)
Membre actif
 
Date d'inscription: novembre 2004
Messages: 196
Par défaut

Dois-je comprendre que je ne répond pas à votre question ???
bustaf est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/11/2008, 00h05   #7 (permalink)
Membre régulier
 
Avatar de dr00w
 
Date d'inscription: septembre 2005
Localisation: Montréal
Messages: 116
Par défaut

Citation:
Envoyé par bustaf Voir le message
Dois-je comprendre que je ne répond pas à votre question ???
Pas du tout. Désolé d'avoir laissé cette impression. Je suis présentement en test avec le cas #3 et pour l'instant ça semble la meilleure solution...

Merci pour votre aide.
dr00w est déconnecté   Envoyer un message privé Réponse avec citation
NEWS POSTGRESQLF.A.Q POSTGRESQLUDF POSTGRESQLLIVRES POSTGRESQL

Réponse

Précédent   Forum des développeurs > Bases de données > PostgreSQL



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide