begin process at 2008 07 25 01:51:52
1 216 040 membres
24 nouveaux aujourd'hui
14 179 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Récupérer image de la BDD [ Divers / Débutant(e) ] (atar64)

Récupérer image de la BDD le 16/01/2008 09:55:11

atar64
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

Re : Récupérer image de la BDD le 16/01/2008 13:18:40

Mike Gagnon
Membre Club
Est-ce que ces images sont dans un champ General? Ou Blob?

Mike Gagnon

Re : Récupérer image de la BDD le 16/01/2008 13:30:50

Mike Gagnon
Membre Club
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

Re : Récupérer image de la BDD le 01/02/2008 15:53:17

atar64
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.

Re : Récupérer image de la BDD le 01/02/2008 22:06:45

Mike Gagnon
Membre Club
>>>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

Re : Récupérer image de la BDD le 02/02/2008 00:33:40

atar64
>>>> 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.

Re : Récupérer image de la BDD le 02/02/2008 14:06:01

Mike Gagnon
Membre Club
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ères
x = FWRITE(handleout, str2) && copier ce qui reste dans le fichier BMP

=FCLOSE(handlein) && fermer le fichier
=FCLOSE(handleout)


Mike Gagnon

Re : Récupérer image de la BDD le 25/02/2008 17:58:03

atar64
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
Mike Gagnonmais 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.

Re : Récupérer image de la BDD le 26/02/2008 17:50:33

atar64
Réponse acceptée !
Problème résolu.
J'ai utilisé OLEDB/.Net et méthode de porc équivalent à la soluce du lien microsoft.


Classé sous : récupérer, image, bdd, foxpro

Participer à cet échange

Pub



Appels d'offres

Creation portail video
Budget : 3 000€
Site de e-commerce
Budget : 5 000€
Demande de devis pour ...
Budget : 7 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS