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 !

ADODB.STREAM, ENTRÉE D'OBJET OLE DANS UNE BASE DE DONNÉE, RÉCUPÉRATION D'OBJET OLE D'UNE BASE POUR EN FAIRE UN FICHIER


Information sur la source

Catégorie :Base de données Classé sous : stream, binaire, ole, objet, base Niveau : Débutant Date de création : 25/11/2005 Date de mise à jour : 25/11/2005 15:05:11 Vu : 13 206

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

Bien entendu ce n'est pas de moi et c'est vu revu et tout le toutim sur internet mais je n'ai pas trouvé cela ici alors je le mets. Il s'agit ici de créer a partir d'un fichier existant sur votre disque dur un objet OLE ( fichier ) dans une base de donnée ACCESS et par la suite de le ressortir de la base de données pour en refaire un fichier nommé comme vous le désirez.
 

Source

  • <!--METADATA TYPE="typelib"
  • UUID="00000205-0000-0010-8000-00AA006D2EA4"
  • NAME="ADODB Type Library"
  • -->
  • 'Surtout vous ne devez pas oublier ces premières lignes
  • 'Elles définissent la dll à importer pour l'objet que nous allons utiliser
  • 'PREMIERE PARTIE ----- ON ENTRE LE FICHIER DANS LA BASE
  • 'Je passe ici la connection avec la base que l'on peut trouver abondemment
  • Dim Stream
  • Dim Rs
  • 'J ouvre la table qui va recueillir mon fichier
  • Set Rs = Server.CreateObject("ADODB.Recordset")
  • Rs.open "matable", conn, 3, 3
  • 'Je crée mon objet Stream
  • Set Stream = Server.CreateObject("ADODB.Stream")
  • 'on définit le type de fichier à lire ici je met 1 mais vous pouvez aussi mettre adTypeBinary
  • Stream.Type = 1
  • Stream.Open
  • 'On envoi l'objet Stream lire le contenu du fichier en question
  • Stream.loadFromFile server.MapPath("fichier.extension")
  • 'On crée un nouvel enregistrement dans la table
  • rs.addnew
  • 'Et lors on affecte au champ désiré le contenu binaire du fichier
  • rs.fields("fichier") = Stream.read
  • 'On met a jour
  • rs.update
  • 'On oublie pas de fermer les objets
  • rs.close
  • stream.close
  • Set rs=nothing
  • Set stream=nothing
  • response.redirect "laoulonveut.extension"
  • 'SECONDE PARTIE ----- RECUPERATION DU FICHIER DANS LA BASE DE DONNEES
  • <!--METADATA TYPE="typelib"
  • UUID="00000205-0000-0010-8000-00AA006D2EA4"
  • NAME="ADODB Type Library"
  • -->
  • 'Ne pas oublier d'invoquer la dll
  • 'Comme precedemment, je passe la connection avec la base
  • 'Connection avec la table a l'endroit ou est mon fichier
  • Set rs = server.CreateObject("ADODB.Recordset")
  • SQL="SELECT * FROM photos WHERE id like 1"
  • RS.open SQL, conn, 3, 3
  • 'Creation Objet ADODB.Stream
  • Set Stream = server.CreateObject("ADODB.Stream")
  • 'Le type de contenu qui va lui être proposé
  • Stream.Type = adTypeBinary
  • Stream.Open
  • 'On envoi le code binaire dans le cache
  • Stream.write rs.fields("photo").value
  • 'Puis on enregistre le fichier avec le code binaire enregistré
  • 'En mode Ecrasement adSaveCreateOverWrite
  • Stream.SaveToFile "repertoire:\sous-rep\nomdufichier.ext", adSaveCreateOverWrite
  • 'et on ferme tous les objets comme precedemment ( partie 1 )
  • 'Vous pouvez aller voir le fichier est créé
<!--METADATA TYPE="typelib"
      UUID="00000205-0000-0010-8000-00AA006D2EA4"
     NAME="ADODB Type Library"
-->

'Surtout vous ne devez pas oublier ces premières lignes
'Elles définissent la dll à importer pour l'objet que nous allons utiliser

'PREMIERE PARTIE ----- ON ENTRE LE FICHIER DANS LA BASE

'Je passe ici la connection avec la base que l'on peut trouver abondemment
Dim Stream
Dim Rs

'J ouvre la table qui va recueillir mon fichier
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.open "matable", conn, 3, 3

'Je crée mon objet Stream
Set Stream = Server.CreateObject("ADODB.Stream")

'on définit le type de fichier à lire ici je met 1 mais vous pouvez aussi mettre adTypeBinary
Stream.Type = 1
Stream.Open

'On envoi l'objet Stream lire le contenu du fichier en question
Stream.loadFromFile server.MapPath("fichier.extension")

'On crée un nouvel enregistrement dans la table
rs.addnew

'Et lors on affecte au champ désiré le contenu binaire du fichier
rs.fields("fichier") = Stream.read

'On met a jour
rs.update
'On oublie pas de fermer les objets
rs.close
stream.close
Set rs=nothing
Set stream=nothing
response.redirect "laoulonveut.extension"

'SECONDE PARTIE ----- RECUPERATION DU FICHIER DANS LA BASE DE DONNEES

<!--METADATA TYPE="typelib"
      UUID="00000205-0000-0010-8000-00AA006D2EA4"
     NAME="ADODB Type Library"
-->
'Ne pas oublier d'invoquer la dll
'Comme precedemment, je passe la connection avec la base

'Connection avec la table a l'endroit ou est mon fichier
Set rs = server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM photos WHERE id like 1"
RS.open SQL, conn, 3, 3

'Creation Objet ADODB.Stream
Set Stream = server.CreateObject("ADODB.Stream")

'Le type de contenu qui va lui être proposé
Stream.Type = adTypeBinary
Stream.Open

'On envoi le code binaire dans le cache
Stream.write rs.fields("photo").value

'Puis on enregistre le fichier avec le code binaire enregistré
'En mode Ecrasement adSaveCreateOverWrite
Stream.SaveToFile "repertoire:\sous-rep\nomdufichier.ext", adSaveCreateOverWrite

'et on ferme tous les objets comme precedemment ( partie 1 )
'Vous pouvez aller voir le fichier est créé

Conclusion

Il est a noter que ce script ne fonctionnera bien entendu pas si vous avez fais la mise a jour de sécurité Windows puisque celle-ci bloque la creation d'objet stream purement et simplement. Cette mise à jour a été faite suite à une faille exploitée par les virusmen :D. Pour plus d'informations à ce sujet allez donc voir le site de microsoft...

Je vous souhaite une bonne fin de journée.
 

Historique

25 novembre 2005 15:05:11 :
oupsss mise à jour des mots clés ( rapide non ? ;) je suis sur que personne est venu avant )

Commentaires et avis

signaler à un administrateur
Commentaire de Nurgle le 26/11/2005 10:19:53 administrateur CS

intéressant en effet ! c'est simplissime et ça fonctionne :D

Par contre tu pourrais préciser un petit peu pour cette histoire de mise à jour Windows, car mon PC est à jour et pourtant j'utilises les Stream assez souvent...et ça marche toujours !

Nurgle

signaler à un administrateur
Commentaire de Nicolas_kojack le 26/11/2005 17:37:26

Lis cet article, tu pourras constater que le correctif desactive la fonction adodb.stream...
http://www.zdnet.fr/actualites/internet/0,39020774,39160026,00.htm

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

(2) ASP et ORACLE [ par JclO ] Bonjour,Merci pour l'aide apporté il est vrai qu'en utilisant OLE DB apparement je me connecte à la Base car je n'est plus de message d'erreur. Malheu Problème d'ajout de données dans base SQL [ par HolyDev ] Cher ASPsienVoila je voudrais ajouter des données dans une base SQL, mais à à la ligne :RecordSet("Nom du champ")=Valeurj'ai l'erreur :Microsoft OLE D Aficher un champs d'une table ACCESS de type Objet OLE [ par usef80 ] Bonjour,J'ai un problème: Dans ma base de données ACCESS, j'ai une table employé dont les champs sont: id_employe, nom, département adresse et photo. Probleme Autorisation SELECT refusée sur l'objet 'xxxx', base de données 'xxxxDatabase', schéma 'dbo'. [ par tarek1967 ] j ai finalement trouve comment ajouter aspnet.mais j ai ce problemeAutorisation SELECT refusée sur l'objet 'xxxx', base de données 'xxxxDatabase', sch impression champ ole [ par nadovchka ] J'ai un controle richtextrtf  sur la feuille par le quel on peut saisir des données textes graphiques. j'ai une base de données  dans laquelle j'ai un Ouvrir Objet OLE [ par Le newbie ] Salut,Je voudrais savoir comment je peux ouvrir un fivhier pdf ou snp sachant que cela fait parti des enregistrements de ma base access (en OLE). N'ay erreur de connection base access [ par francki67 ] Bonjours je suis sous vista et je crée une page ASP avec une base ACCESS ou je veut me connecter voila mon script:&lt;html&gt; &lt;head&gt;&lt;meta Comment lire et ecrire dans une base Access [ par Claude Azoulai ] Bonjour à tousJe travail sous Visual Web Developer 2005 Express edition et je suis nouveau dans ce domaine.Mon Problème :J'ai une première page qui en Comment connecter ma base SQL 2005 pour gérer la gestion des utilisateurs [ par vinzemuls ] Bonjour, voilà je suis en entreprise et la gestion des utilisateurs qui avait été géré par ASP.net avec sa base de données (aspnetdb.mdl) ne fonctionn Recherche Dans base de données [ par gatita_dev ] Bonjour,Je veux effectuer un moteur de recherche dans une base de données, quand je cherche un seul mot ça marche mais dés qu'il y a plusieurs mot ça


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.