contrôle

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

contrôle

Messagepar Hugues » 09 Jan 2003 à 14:24

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
Hugues
 

Re: contrôle

Messagepar Stéphane » 09 Jan 2003 à 14:54

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 ?
Stéphane
 

Re: contrôle

Messagepar Hugues » 09 Jan 2003 à 15:59

Pas compris!!!!PEUX TU DETAILLER LES CONTROLES STP
Hugues
 

Re: contrôle

Messagepar Jerome Capodano » 13 Jan 2003 à 11:39

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 !"))
Jerome Capodano
 

Re: contrôle

Messagepar Stéphane » 13 Jan 2003 à 18:27

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 ?
Stéphane
 

Re: contrôle

Messagepar Hugues » 15 Jan 2003 à 11:09

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
Hugues
 

Re: contrôle

Messagepar Stéphane » 15 Jan 2003 à 12:16

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...
Stéphane
 

Re: contrôle

Messagepar Hugues » 16 Jan 2003 à 14:19

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+
Hugues
 

Re: contrôle

Messagepar Hugues » 16 Jan 2003 à 15:12

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"
Hugues
 

Re: contrôle

Messagepar Stéphane » 16 Jan 2003 à 16:08

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
Stéphane
 

Re: contrôle

Messagepar Hugues » 16 Jan 2003 à 16:10

Ok ça fonctionneMerci encore
Hugues
 


Retour vers Développement