Insertion de photo

cs_hassoub Messages postés 33 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 25 avril 2011 - 26 oct. 2010 à 23:20
cs_hassoub Messages postés 33 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 25 avril 2011 - 30 oct. 2010 à 13:08
Bonsoir,

J'utilise une base de donnée Access que je modifie à l'aide d'une vue distante.
Dans l'une de ces tables, il y a un champ photo.
Comment insérer une photo (extension .bmp ou .jpg) dans le champ de la table à partie de ma vue ?

Merci.

A.MAHALLA

13 réponses

michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
27 oct. 2010 à 17:57
Bonjour,

quel est le type de données de ce champ dans Access ? (quelle version d'Acess, au fait?)
quel est le code de ta vue distante, et en particulier la partie qui donne le mappage des champs?
0
cs_hassoub Messages postés 33 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 25 avril 2011
28 oct. 2010 à 08:48
Bonjour,

la base de donnée est au format access 2000.
le champs(Heberges.Photo) est de type Objet OLE

voici le code de ma vue distante( code SQL de la vue)

SELECT Heberges.nomf, Heberges.prenomf, Heberges.matricule, Heberges.ddn,;
Heberges.anneetude, Heberges.nom, Heberges.prenom, Heberges.ncode,;
Heberges.codepav, Heberges.NEtage, Heberges.nchmbre, Heberges.obser,;
Heberges.codef, Heberges.anneeatr, Heberges.ncarte, Heberges.Photo;
FROM ;
heberges Heberges;
WHERE Heberges.anneeatr = ( '2010/2011' )

.....
.....
DBSetProp(ThisView+".photo","Field","DataType","G")
DBSetProp(ThisView+".photo","Field","UpdateName","heberges.Photo")
DBSetProp(ThisView+".photo","Field","KeyField",.F.)
DBSetProp(ThisView+".photo","Field","Updatable",.T.)

J'espère avoir apporter les précisions nécessaires.

Merci pour votre aide.

A.MAHALLA
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
28 oct. 2010 à 10:05
Désolé, je n'ai plus Access 2000, je ne peux donc pas faire de tests.

As-tu essayé la commande APPEND GENERAL pour modifier le contenu de ce champ? si oui, quelles erreurs as-tu avec la vue que tu as défini?
0
cs_hassoub Messages postés 33 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 25 avril 2011
29 oct. 2010 à 12:45
bonjour,

Je m'y retrouve plus.

Ma vue distante, vteste, est dans l'environnement de donnée du forme.

lorsque j'utilise append general sue l'enregistrement courant, je n'ai aucun message d'erreur. Je n'ai jamais manipulé d'objet OLE auparavant.

Cependant, j'ai inséré dans ma table access une photo bitmap dans le champ 'Heberges.Photo'. Si je parcoure vteste, mon champ photo contient 'GEN'. en double clickant dessus, j'obtiens la photo que j'ai inséré dans ma table access.Les autres enregistrement contiennent '.NULL.'.
Remarque: En double clickant sur le champ photo de ma table access j'ai la photo insérée qui apparait dans le logiciel 'PAINT'.

Quelqu'un a t il une idée comment lire et/ou écrire une image à partir d'un champ par programmation ???

Merci de votre aide.

A.MAHALLA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
29 oct. 2010 à 13:32
Eh bien tout est bon, si la photo est bien dans ta table sur Access, et si ta vue Fox la remonte bien.

Il te reste juste à nous expliquer ce que tu veux faire maintenant, parce que la phrase
Quelqu'un a t il une idée comment lire et/ou écrire une image à partir d'un champ par programmation ???
ne veut pas dire grand chose

ça veut dire quoi, lire ou écrire...? tu veux afficher le contenu du champ sur un form, le mettre dans un report?

Quelle est ta version de FoxPro?
0
cs_hassoub Messages postés 33 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 25 avril 2011
29 oct. 2010 à 14:30
Bonsoir et pardon pour le manque de précision,

J'utilise VFP9. J'ai une forme sur laquelle j'ai entre autre un contrôle image. Je voudrais que la photo associé à un enregistrement donné 'apparaisse' au niveau du contrôle image.A noter que j'ai utilisé ou mal utilisé 'forme.image.picture = vteste.photo'.

Merci pour votre patience.

A.MAHALLA
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
29 oct. 2010 à 14:44
Pour une form, il te faut dans ce cas utiliser un controle ActiveX Bound (OLEboundControl), et non pas un controle image. Et c'est la propriété ControlSource qui sera utilisée pour lier le controle au champ de la vue (alias.champ)

Mais le mieux serait de ne pas utiliser de champ de type OLE dans Access, et de ne pas utiliser de champ General du coté Fox.
0
cs_hassoub Messages postés 33 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 25 avril 2011
29 oct. 2010 à 15:07
Merci,

La base de donnees access est construite ainsi, je ne peux la modifiée, et par conséquent veste.photo sera de type Général.
Effectivement, en utilisant un OLEboundControl, et en liant sa propriété au champ 'vteste.photo' la photo s'affiche.

N'ayant jamais utilisé les objets OLE, pouvez vous m'indiquer comment 'insérer' une photo dans ce contrôle.

Merci pour votre aide.

A.MAHALLA
0
cs_hassoub Messages postés 33 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 25 avril 2011
29 oct. 2010 à 18:49
bonsoir,

J'ai résolu le problème à moitié.

j'insère une photo de type bmp dans le champ de type Général avec la commande APPEND GENERAL. Si je parcoure la vue et double clicke sur le champ vteste.photo, je trouve bien ma photo.

Cependant, en voulant sauvegarder ma vue, c.a.d en voulant mettre à jour ma table access j'ai le message suivant :

"Les champs de type Général ne peuvent être utilisés dans la condition WHERE d'une instruction de mise à jour.Changer la propriété WhereType de la vue."

Dans le générateur de vue, onglet ' Mettre à jour avec ' , j'ai sélectionné 'SQL UPDATE' puis 'SQL DELETE puis INSERT' j'ai le même message.

Pouvez vous m'indiquer ou chercher.

Merci

A.MAHALLA
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
29 oct. 2010 à 19:30
Tu avances, tu avances.

Dans une vue (comme dans un Cursor Adapter), il te faut choisir ce qu'on appelle en abbrégé le WHERETYPE. Tu trouveras ça dans l'onglet "Critères de Mise à Jour" de ta vue. Tu y étais, mais tu as regardé la deuxième propriété, et le WHERETYPE, c'est la première!

En 2 mots, si le wheretype définit la clause where qui sera automatiquement rajoutée à ton update pour définir le (ou les) enregistrement(s) à mettre à jour:
sur 1 (champ clé seulement), ta vue va rajouter une clause where qui indiquera les champs clés et les valeurs de ces champs pour les enreg à updater
sur 2 ou 3, ton champ photo va être inclus dans cette clause where additionnelle: et ça, c'est justement impossible, ce type de champ ne peut pas être dans cette clause where.
Et donc c'est pour ça qu'on a le 4, qui va utiliser un champ de type TimeStamp pour vérifier la concurrence en mise à jour.

Si tu as un champ de type horodatage sur ta table dans Access, tu vas utiliser un wheretype à 4 en lui donnant le nom de ce champ dans ta vue. Mais je ne suis pas certain que Access propose ce type de champ.

Donc tu mets ton wheretype à 1, et ton update écrasera systématiquement ceux qui auraient été faits par d'autres utilisateurs sur cet enregistrement pendant ta saisie.

pour plus d'infos sur les wheretype tu peux te référer à mon article sur AtoutFox(même si je traite de .net, il y a de quoi lire sur VFP)
0
cs_hassoub Messages postés 33 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 25 avril 2011
29 oct. 2010 à 21:00
Bien, j'avance , j'ai beaucoup avancé mais ,

en mettant le wheretype à 1 et en voulant changer d'enregistrement ou après un 'tableupdate de la vue( tableupdate(.T.,.T.,"vteste) j'ai le message suivant :

" Erreur de connectivité:[Microsoft][Pilote ODBC Microsoft
Access]Chaîne de donnée, tronquée à droite(null)"

Pouvez m'aider encore?? Merci

Je voudrais bien lire votre article sur ATOUTFOX. pouvez vous me donner exactement l'intitulé de l'article. Merci

Bonne soirée

A.MAHALLA
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
30 oct. 2010 à 12:13
Quel est ton bufferMode?
Pourquoi utilises-tu cette vieille syntaxe pour le TableUpdate ?
regarde dans l'aide la syntaxe actuelle, qui te permet de définir un tableau qui recevra le détail de l'erreur envoyée par Access.

Pour mieux cerner le problème, fait 2 vues: une qui ne contient que le champ clé et la photo, et une autre qui contient tous les champs sauf la photo. Tu fais des essais de tableupdate sur chaque vue. Pour la deuxième vue, si tu as la même erreur, alors tu testes en supprimant un champ de cette vue, jusqu'à isoler le champ qui dysfonctionne.

le lien vers mon article était déjà dans le message (sur le mot AtoutFox), mais je te le redonne en clair : http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000727
0
cs_hassoub Messages postés 33 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 25 avril 2011
30 oct. 2010 à 13:08
Bonjour et merci pour la réponse,

je teste

Bonne journée

A.MAHALLA
0
Rejoignez-nous