cs_hassoub
Messages postés33Date d'inscriptionlundi 3 octobre 2005StatutMembreDernière intervention25 avril 2011
-
26 oct. 2010 à 23:20
cs_hassoub
Messages postés33Date d'inscriptionlundi 3 octobre 2005StatutMembreDernière intervention25 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 ?
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 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?
cs_hassoub
Messages postés33Date d'inscriptionlundi 3 octobre 2005StatutMembreDernière intervention25 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_hassoub
Messages postés33Date d'inscriptionlundi 3 octobre 2005StatutMembreDernière intervention25 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'.
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 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.
cs_hassoub
Messages postés33Date d'inscriptionlundi 3 octobre 2005StatutMembreDernière intervention25 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.
cs_hassoub
Messages postés33Date d'inscriptionlundi 3 octobre 2005StatutMembreDernière intervention25 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.
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 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)
cs_hassoub
Messages postés33Date d'inscriptionlundi 3 octobre 2005StatutMembreDernière intervention25 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
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 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.