Récupérer image de la BDD

Résolu
atar64 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 26 février 2008 - 16 janv. 2008 à 09:55
atar64 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 26 février 2008 - 26 févr. 2008 à 17:50
Bonjour,

Ayant récupérer un existant projet sous foxpro, je cherche à extraire des fichiers bmp de la base foxpro. Mais je n'y arrive pas pouvez vous m'indiquez une source ou une procédure à mettre en place.

Merci par avance

8 réponses

atar64 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 26 février 2008
26 févr. 2008 à 17:50
Problème résolu.
J'ai utilisé OLEDB/.Net et méthode de porc équivalent à la soluce du lien microsoft.
3
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
16 janv. 2008 à 13:18
Est-ce que ces images sont dans un champ General? Ou Blob?

Mike Gagnon
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
16 janv. 2008 à 13:30
Si les images sont dans un champs General voici le concept.
1. Faire un select sur la table pour créer une table temporaire qui contient seulement le record qui te préoccupe.
2. L'image est contenue dans le fichier fpt, donc pas besoin des deux autres fichier (dbf et cdx)
3. Utiliser FILETOSTR() sur ton fichier fpt pour en faire une chaine charactère.
4. L'image techniquement commence a peu près au 599 ième charactère (ce qui est avant est l'information de l'association du fichier image avec le programme qui va ouvrir l'image sur ton ordinateur. Donc utilise la fonction RIGHT() pour enlever les premiers 599 charactere.
5. Ce qui te reste est ton image, utilise STRTOFILE () pour créer un fichier image

Mike Gagnon
0
atar64 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 26 février 2008
1 févr. 2008 à 15:53
Et t'on obliger de faire un select avec un seul record.

J'utilise un autre langage(.Net), j'accède à la base via ODBC. Puis je retirer les 599 caractères du champ qui est en général.

Merci
Dsl pour avoir mis autant de temps à répondre.
0

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

Posez votre question
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
1 févr. 2008 à 22:06
>>>Et t'on obliger de faire un select avec un seul record.

Pour y retirer une seule image, oui .    Tu dois savoir utilise SELECT from.....en .net?

>>>J'utilise un autre langage(.Net), j'accède à la base via ODBC. Puis je retirer les 599 caractères du champ qui est en général.

Alors tu pose la question dans le mauvais forum. Je ne connais pas l'équivalent de FILETOSTR() en .net (qui n'est pas un language en soi), mais peut-etre poser la question sur un forum .net

Mike Gagnon
0
atar64 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 26 février 2008
2 févr. 2008 à 00:33
>>>> Pour y retirer une seule image, oui .    Tu dois savoir utilise SELECT from.....en .net?

L'entête n'est donc pas lié au champs même, mais à un ensemble de résultat? Sinon je pourai les parcourir un par un avec un SELECT général, non ?
Oui je sais utiliser un select, j'ai déjà récuperer toutes les info en dehors de l'image qui est contenu dans un champs général.

>>>> Alors tu pose la question dans le mauvais forum
Non car la bdd est Foxpro, et le problème tient à l'encapsulation de l'image dans la bdd Foxpro (A ma connaissance il y a pas de forum spécifique à la bdd, d'ou l'utilisation de ce forum).

>>>> .net (qui n'est pas un language en soi)
Oui, mais je maitrise C# et vb.Net donc n'importe quel exemple est compréhensible, de plus les méthodes sont identiques dans tout le framework donc pas spécifique à un langage.

Résumé :
1. Je fais un SELECT sur un enregistrement particulier
2. J'optiens une chaine de charactère, à la quelle j'ote les 598 premiers caractères.
3. J'optiens un fichier image.

C'est sa?

Merci d'avance pour le temps que tu m'accorde.
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
2 févr. 2008 à 14:06
Je ne sais pas vraiment si la technique fonctionne en C# ou VB.net mais voici comment on fait en VFP, avec des fonctions de bas-niveau
COPY TO temp FIELDS photo NEXT 1 && Copier le champs que l'on désire dans une table

handlein = FOPEN(temp.fpt) && ouvrir le fichier fpt qui contient l'image
handleout = FCREATE(temp.bmp) && créer un fichier bmp temporaire
gnEnd = FSEEK(handlein,0,2) && trouver la fin du fichier
gnTop = FSEEK(handlein,0) && commencer au début du fichier
str1 = FREAD(handlein, gnEnd) && rammasser l'information binaire d'image
stop=AT('BM',str1) && trouver le début de l'image, normallement au 599 charctère
str2 = RIGHT(str1, LEN(str1)-stop+1) && retirer le restant des charactèresx FWRITE(handleout, str2) && copier ce qui reste dans le fichier BMPFCLOSE(handlein) && fermer le fichier
=FCLOSE(handleout)

Mike Gagnon
0
atar64 Messages postés 5 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 26 février 2008
25 févr. 2008 à 17:58
Je suis toujours sur mon probleme.
Je souhaite passer d'une base foxpro à une SQL Server 2005.
La table ressemble à ceci :
+-------+--------+--------+
|   Nom  | Prenom | Photo   |
+-------+--------+--------+
| Dupont | Albert  |              |

L'image est dans un champs général.
J'arrive très bien à extraite les données que ce soit en ODBC, OLEDB, ...sauf les images. Je n'arrive à les extraire qu'en utilisant cet exemple : http://support.microsoft.com/kb/894819/fr
(J'ai également réussi en utilisant OLEDB mais j'ai un  gros tot de perte (30%) pour une raison qui m'échape)

Cependant maintenant je n'arrive pas a relier les 2 parties de l'information (Nom et Photo) car sur des tables volumineuses, un décalage se créer (Du au fait que certaines fiches n'ont pas de photos)

Et t'il possible de rajouter un numero auto à la table. Puis de nommer les images, par ce numero?

Merci
[auteur/MIKEGAGNON/360415.aspx Mike Gagnon]mais vu que tu part sur le .fpt je ne pense pas pouvoir relier le tout.

J'ai beaucoup de mal, à trouver une doc complête, si il n'est pas possible de répondre à ma question, pouvez vous m'indiequer vos sources.

Merci d'avance, un développeut qui galère bcp.
0
Rejoignez-nous