Page 1 sur 1

contrôle

MessagePublié: 09 Jan 2003 à 14:24
par Hugues
Salut,Je cherche à effectuer un contrôle dans un document...Le document ne doit pouvoir être modifié seulement que s'il posséde une date valide.Si la valeur du champ date est échue le document ne être enregistré et mess d'erreur apparait.Merci

Re: contrôle

MessagePublié: 09 Jan 2003 à 14:54
par Stéphane
Tu as plusieurs solutions... (je sais là t'es pas plus avancé !)Soit tu empèche l'ouverture en édition du document si la date est échue (ce qui est pour moi la plus propre), soit tu empèche la sauvegarde.Dans le premier cas, on suppose qu'un document tout juste ne peut être échu... tu place ton contrôle de validité dans le Queryopen, avec un test si l'ouverture se fait en mode édit ET dans le Querymodechange pour controler l'édition d'un document ouvert en lecture, dans les deux cas ton code doit comporter Continue=False si le document ne peut être édité.Pour empècher la sauvegarde, soit tu as un champ calculé qui contrôle si la date est échue et auquels cas place un champ SaveOptions à "0" soit tu faits ton test dans l'évenement QuerySave et place indique Continue = False si la date est échue...C'est assez clair ?

Re: contrôle

MessagePublié: 09 Jan 2003 à 15:59
par Hugues
Pas compris!!!!PEUX TU DETAILLER LES CONTROLES STP

Re: contrôle

MessagePublié: 13 Jan 2003 à 11:39
par Jerome Capodano
Stéphane te propose une méthode par Lotus Script.Sinon, tu peux essayer ( supposons que ton champ s'appelle "Ma_date"Dans la section Validation du champ : @if(Ma_date<@now);@success;@Failure("Non ! Date échue !"))

Re: contrôle

MessagePublié: 13 Jan 2003 à 18:27
par Stéphane
Exact Jerome...Supposons deux choses :1- Ton test sur la date échu ne se fait que sur un document existant, pas sur un document encours de création.2-Ton champs date s'appelle Ma_date.Dans l'évenement QueryOpen de ton masque tu place le test suivant :Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant) Dim doc as Notesdocument Set doc = Source.Document if( Mode ) if( doc.Ma_Date(0) >= Now ) Messagebox "Ce docment est échu, vous ne pouvez l'ouvrir en édition !" Continue = False End If End IfEnd Subet dans l'évenement QueryModeChangeSub Querymodechange(Source As Notesuidocument, Continue As Variant) if not( Source.Editmode ) if( doc.Ma_Date(0) >= Now ) Messagebox "Ce docment est échu, vous ne pouvez l'ouvrir en édition !" Continue = False End If End IfEnd SubCa va mieux ?

Re: contrôle

MessagePublié: 15 Jan 2003 à 11:09
par Hugues
je ne suis pas un pro en developpement!!! J'ai bien intégré le code mais je crois qu'il manque qq chose car erreur:"VARIANT DOES NOT CONTAIN AN OBJET"Merci de votre aide

Re: contrôle

MessagePublié: 15 Jan 2003 à 12:16
par Stéphane
Sorry Hugues...En faite j'ai oublier la ligne de déclaration du doc dans l'evenement Querymodechange.Qui du coup devient :Sub Querymodechange(Source As Notesuidocument, Continue As Variant)Dim doc as Notesdocumentif not( Source.Editmode )Set doc = Source.Documentif( doc.Ma_Date(0) >= Now )Messagebox "Ce docment est échu, vous ne pouvez l'ouvrir en édition !"Continue = FalseEnd IfEnd IfEnd Subou encors plus simplement :Sub Querymodechange(Source As Notesuidocument, Continue As Variant)if not( Source.Editmode )if( Source.document.Ma_Date(0) >= Now )Messagebox "Ce docment est échu, vous ne pouvez l'ouvrir en édition !"Continue = FalseEnd IfEnd IfEnd SubSorry, j'ai été un peu vite...

Re: contrôle

MessagePublié: 16 Jan 2003 à 14:19
par Hugues
Merci cela a bien résolu le message d'erreur,cependant si la date est dépassée j'ai toujours la possibilité de modifier le document??? je vais chercher, si tu as une idée....A+

Re: contrôle

MessagePublié: 16 Jan 2003 à 15:12
par Hugues
C ok il fallait inverser les comparateur:-doc.Ma_Date(0) >= Now par :- doc.Ma_Date(0) <= Now cependant lors de la création d'un document j'ai une erreur:"OBJECT VARIABLE NOT SET"

Re: contrôle

MessagePublié: 16 Jan 2003 à 16:08
par Stéphane
Normal !... lors du QueryOpen d'un doc les champs n'existent pas encore donc pas de test possible sur Ma_Date, il te faut placer tout le code du QueryOpen dans un if ou tu test le paramètre IsNewDoc.If not( IsNewDoc ) then...ton code...End If

Re: contrôle

MessagePublié: 16 Jan 2003 à 16:10
par Hugues
Ok ça fonctionneMerci encore