Copier un fichier dans une base de données

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009 - 29 mai 2008 à 20:12
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009 - 28 août 2008 à 23:11
Bonsoir,

Je développe une appli qui traitent les données venant d'une base ACCESS. Dans une de mes tables, j'ai un champ de type objet qui doit recevoir un fichier (.doc par exemple).
Voici donc ma question
Comment récupérer le fichier doc comme tel dans une form (pour l'envoi à la base je devrais m'en sortir) ?

merci d'avance

thierry la fronde

4 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 mai 2008 à 21:11
salut,
le champs doit être de type BLOB (binaire), et tu dois envoyer le tableau qui sera de type STREAM

pas beaucoup plus d'infos (je ne sais pas de dotnet)
bon courage
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
29 mai 2008 à 22:23
il n'y a pas de champs BLOB sous access, j'ai objet OLE
j'arrive à récupérer le fichier mais je ne peux pas le lire j'ai un message d'erreur qui me demande de fermer le serveur OLE quand je clic dessus sous ACCESS et le champ contient l'expression "données binaires" au lieu du nom du fichier..

thierry la fronde
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 mai 2008 à 23:28
c'est normal qu'il y ait le fichier (en binaire)
"j'ai un champ de type objet qui doit recevoir un fichier (.doc par exemple)"

sinon çà serait juste du TEXT avec le chemin du fichier, au risque que le fichier soit supprimé entre temps

quel code as-tu utilisé pour la relecture?
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
28 août 2008 à 23:11
Désolé pour la non réponse mais la voici (puisque j'y suis revenu, j'étais passé aux parties les plus urgentes)

ProceduresCommunes.OuvrirConnexionALaBase()
        Dim reader As OleDbDataReader
        Dim Letexte As String = ""
        Try            command New OleDbCommand("SELECT CV FROM T_Apprenant WHERE Id_Apprenant " & ProceduresCommunes.IdDeLApprenant & ";", MaConnexion)
            reader = command.ExecuteReader(CommandBehavior.SequentialAccess)

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

        Try
            Do While reader.Read
                Letexte &= reader.GetByte(0).ToString
'... j'ai du code qui vient ici récupérer sur les exemples de visual basic avec un stream...
'mais déjà la j'ai un message d'erreur disant que le cast est impossible

            Loop

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
                Try
                    reader.Close()
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
        ProceduresCommunes.FermerLaConnexionALaBase()

pour info, j'essaie juste de récupérer un fichier doc avec une phrase.. (dans l'idéal ce sera un .doc ou .pdf) pour l'afficher dans un RichTextBox
un double clic sur l'objet dans ma base ouvre le document

le code à mettre dans la boucle est celui-ci :

 '          MonCV = reader.GetString(0)
                '        stream = New FileStream("cv" & ".doc", FileMode.OpenOrCreate, FileAccess.Write)
                '        writer = New BinaryWriter(stream)
                '        startIndex = 0
                '        retval = reader.GetString(0)

                '        Do While retval = bufferSize ' avec bufferSize initialisé à 100
                '            writer.Write(outbyte)
                '            writer.Flush()

                '            startIndex = startIndex + bufferSize
                '            retval = reader.GetBytes(1, startIndex, outbyte, 0, bufferSize)
                '        Loop
                '       
                '        writer.Write(outbyte, 0, retval - 1)
                '        writer.Flush()

                '        writer.Close()
                '        stream.Close()

mais je crains que ce code ne me crée un fichier et le sauve sur le PC. je veux juste voir les données et fermer mon appli..

thierry la fronde

ps je relance la discussion
0
Rejoignez-nous