none
Affichage d'un objet OLE suivant valeur vrai/faux RRS feed

  • Question

  • Bonjour,

    je veux afficher un objet OLE (une photo) dans un état en fonction de la valeur vrai/faux d'un champ:

    =VraiFaux([Diff_photo]=Vrai;[photo];" ") où:

    - Diff_photo contient la valeur oui/non

    - photo est le champ OLE

    Le résultat est qu'il ne s'affiche jamais rien, j'en conclus que ce n'est pas comme cela qu'il faut paramétrer la formule ?

    merci pour votre aide;

    samedi 27 janvier 2018 09:09

Toutes les réponses

  • Bonjour,

    Oui, effectivement...

    A qui se rapporte cette instruction ?

    =VraiFaux([Diff_photo]=Vrai;[photo];" ")

    Dans l'absolu, il faut écrire :

    Me.Photo.Visible=Nz(Me.Diff_photo.Value, False)


    Ce qui souis entend que rien apparaît si Diff_photo est à FAUX.Mais pour faire plus joli et dans les différents cas qui peuvent être rencontrés, le mieux est de ne pas mettre de bordure autour  du contrôle de formulaire qui contient la photo et de dessiner un cadre autour qui le jouxte ; ainsi, cela fera plus esthétique.


    Argy


    mardi 30 janvier 2018 11:43
    Modérateur
  • Bonjour et merci pour ta réponse.

    Malheureusement, ça ne marche pas: j'ai placé cette instruction dans la "source" du champ photo mais, il me demande de saisir une valeur pour cette instruction (ce qui veut dire qu'il ne reconnait pas les champs). Comme je l'avais précisé dans ma demande, il s'agit d'un état, pas d'un formulaire.

    cdlt

    mardi 30 janvier 2018 13:18
  • Que ce soit un état ou un formulaire ne change rien si ce n'est là où l'on place le code...

    Il faut faire en sorte que l'état ait sa source où l'information du champ Diff_photo est bien présente.

    Il faut alors placer le code sur l'événement approprié à savoir :

    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
        Me.Photo.Visible = Me.Diff_photo.Value
    End Sub
    Et là, votre photo sera masquée si La valeur de Diff_Photo est à False.


    Argy


    mardi 30 janvier 2018 16:09
    Modérateur
  • Ca ne marche pas et dans ce code, la valeur "true" ou "false" n'apparait pas ???.

    je l'ai codée de cette façon:

    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
        Me.photo.Visible = Nz(Me.Diff_photo.Value, False)
    End Sub

    mardi 30 janvier 2018 17:30
  • Ca ne réagit pas (aucun effet) ou bien il y a un message d'erreur ?

    Quelle est la valeur de Me.Diff_photo ?

    Est-ce que l'image est toujours affichée quelle que soit la valeur de Me.Diff_photo ?


    Argy

    mercredi 31 janvier 2018 07:14
    Modérateur
  • Bonjour,

    Si je code comme cela:

    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
        Me.photo.Visible = Nz(Me.Diff_photo.Value) ou Me.photo.Visible = Me.Diff_photo.Value
    End Sub

    je n'ai pas de message d'erreur, mais la photo s'affiche quelle que soit la valeur de Diff_photo (champ O/N)

    mercredi 31 janvier 2018 08:05
  • Eh bien c'sst que le champ Diff_photo ne contient pas une valeur booléenne à savoir -1 ou 0 (True ou False)

    La propriété Visible ne peut revevoir que ces deux valeurs.

    Si votre champ renvoie O ou N, il est normal que la visibilité ne soit pas opérante.

    Il faut convertir en integer/boolean et affecter la variable à la propriété Visible dans l'événement

    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
    Dim vntVisible As Variant
        vntVisible = Nz(Me.Diff_photo.Value, 0)
        'On procède par l'absurde à savoir, si ce n'est pas 0 c'est donc Oui, True -1 etc...
        If vntVisible <> 0 Then
            Me.photo.Visible = True
        End If
    End Sub


    Argy

    mercredi 31 janvier 2018 08:20
    Modérateur
  • Je me suis mal exprimé:le champ Diff_photo est en format oui/non dans ma table, il ne contient pas la valeur O ou N.
    mercredi 31 janvier 2018 08:29
  • Eh bien il faut adapter votre routine en fonction de ce qu'il contient...

    Dans votre état,

    1. posez ce champ de manière visible à côté de la photo,
    2. effectuez un aperçu
    3. précisez-moi alors qeulle est sa valeur... 
    • -1, True, Vrai... ?
    • 0, False, Faux... ?

    Argy

    mercredi 31 janvier 2018 11:24
    Modérateur
  • eh bien il apparait comme cela:


    mercredi 31 janvier 2018 12:12
  • Donc on est bien d'accord que si la case est cochée, la photo doit être visible.

    Là, sur votre image, je vois bien qu'elle est cochée, non ?

    Lorsque cette case est cochée, elle foit renvoyer une valeur :

    • -1 si elle affectée à un Integer
    • True (Vrai) si elle est affectée à un Boolean

    dans votre requête source, vous pouvez ajouter champ AfficherPhoto... Avec la fonction CInt (en US)

    AfficherPhoto : CInt(Diff_photo)


    de là, dans votre état, vous modifiez le code, après- avoir mis le champ dans la section où se trouve le champ Photo avec la propriété visible à Oui (pour vérifier et vous rendrez invisible par la suite) :

    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
    	Me.photo.Visible = AfficherPhoto
    End Sub
    Mais je n'arrive pas à comprendre pourquoi ça ne fonctionne pas chez vous et que l'ion soit obligé de biaiser par ces palliatifs superflus ; cette opération, je l'ai faite des dizaines de fois sans problème...


    Argy

    mercredi 31 janvier 2018 13:17
    Modérateur
  • Je vous remercie pour votre réponse et votre patience mais je vais revenir à la solution que j'avais mise en place en attendant de résoudre ce problème car ça devient un peu compliqué !

    j'ai modifié la requête (source de l'état) en dupliquant le SELECT et ajout d'un UNION ALL

    - dans le 1er, je mets le champ photo si Diff_photo est vrai

    - dans le 2ème, je mets le champ à blanc si Diff_Photo est faux.

    bien cordialement

    mercredi 31 janvier 2018 13:53
  • Pouvez-vous faire parvenir un extrait de votre base où se trouve la table, 2 ou trois photos et votre état afin que je contrôle ce qui ne va pas ou ce que vous n'avez pas fait ?

    Argy

    mercredi 31 janvier 2018 15:20
    Modérateur
  • bonsoir,

    Je vous remercie pour votre proposition de vous envoyer un extrait de ma table, mais ça va être un peu long car elle contient toutes informations de nos adhérents, il faudra donc que je modifie ces informations et remplacer les photos. Je fais cela au plus tôt.

    bonne soirée

    mercredi 31 janvier 2018 19:27
  • Bonjour,

    J'ai fait un extrait de ma base comme vous me le proposez, comment puis-je vous l'envoyer ?

    jeudi 1 février 2018 08:57
  • Bonjour,

    En cliquant ici...

    Je vous tiens au courant


    Argy

    jeudi 1 février 2018 11:56
    Modérateur
  • Bonjour,

    Je n'ai rien reçu...

    Avez-vous finalement trouvé une solution ?


    Argy

    samedi 10 février 2018 15:42
    Modérateur
  • Arrf...

    Désolé, votre mail était passé en SPAM...


    Votre était opérationnel en fait, mais l'affichage des photos est opérant comme vous le souhaitez qu'en mode aperçu avant impression.



    Argy

    samedi 10 février 2018 16:03
    Modérateur
  • bonjour,

    Je vous avais envoyé le 1/2, un extrait de ma base sur votre adresse qui apparaissait via votre lien mais via Windows live mail car il m'était demandé de créer un compte de messagerie et ça n'aboutit pas si je précise mon adresse mail habituelle.

    N'est-il pas possible de vous l'envoyer directement via WLM ?

    cordialement


    samedi 10 février 2018 16:07
  • Nos messages se sont croisés...

    Comme précisé ci-avant : Votre état est opérationnel en fait, mais l'affichage des photos est opérant comme vous le souhaitez qu'en mode aperçu avant impression.


    Argy


    samedi 10 février 2018 16:17
    Modérateur
  • Eh bien, je n'avais pas pensé à cela n'ayant pas encore imprimé à cause de ce problème !

    merci encore pour votre aide.

    samedi 10 février 2018 17:16