OVH Cloud OVH Cloud

Problème avec les BLOBS

3 réponses
Avatar
Louis
Rhaaaaaahhhh! les BLOBS quelle prise de tête !

Quelqu'un pourrait-il me dire ce qui ne va pas avec le code suivant :

BLOB_RS.AddNew
stm.Write BlobBuffer()
stm.Position = 0
BLOB_RS.Fields("BLOB").Value = stm.Read
BLOB_RS.Update

Ce code génère l'erreur suivante lorsque BlobBuffer() contient plus de 65536 bytes (donc 64k):

"Run time-error '-2147467259 (80004005)':
Un état E_FAIL a été envoyé par le fournisseur de données ou par un autre service"

Cette erreur est assez méchante puisque Windows ferme VB et me demande si je veux reporter l'erreur à Microsoft.

L'erreur se déclenche au moment du "Update".
BlobBuffer() est un tableau de Bytes et stm est un "Stream"

Une routine équivalente utilisant la fonction "AppendChunk" au lieu d'un objet Stream génère la même erreur.

Merci d'avance pour toute aide.

3 réponses

Avatar
Louis
Précision supplémentaire:
Si j'utilise un champ Memo au lieu d'un champ binaire, il n'y a pas d'erreur générée
mais les données sauvegardées se trouvent tronquées à un max de 62150 bytes.
Avatar
Louis
Bon j'ai trouvé la solution:
Il suffisait de choisir un curseur du coté serveur.
Mais je ne saurai probablement jamais le pourquoi de cette erreur qui plante VB.

J'ai encore un autre problème : Je n'arrive pas à créer un champ BLOB par programmation.

J'utilise par exemple :
tbl.Columns.Append "Blob", adLongVarBinary

Mais le "Visual Data Manager" de VB me dit que j'obtiens un champ
"Date/Time" de longueur 255 avec "VariableLength" coché.

Par la suite j'ai essayé toutes les combinaisons de paramètres de 0 à 500 mais
aucune ne me permet de créer un de champ BLOB.
Le seul champ du même style que j'obtiens est un champ Memo (avec 201).

Config :
JET 4.0 - MSDAC 2.7 - ADO 2.5 - Windows XP Pro - VB 6

AU SECOURS !
Avatar
Louis
Bon j'ai trouvé la solution:
Il suffisait de choisir un curseur du coté serveur.
Mais je ne saurai probablement jamais le pourquoi de cette erreur qui plante VB.

J'ai encore un autre problème : Je n'arrive pas à créer un champ BLOB par programmation.

J'utilise par exemple :
tbl.Columns.Append "Blob", adLongVarBinary

Mais le "Visual Data Manager" de VB me dit que j'obtiens un champ
"Date/Time" de longueur 255 avec "VariableLength" coché.

Par la suite j'ai essayé toutes les combinaisons de paramètres de 0 à 500 mais
aucune ne me permet de créer un de champ BLOB.
Le seul champ du même style que j'obtiens est un champ Memo (avec 201).

Config :
JET 4.0 - MSDAC 2.7 - ADO 2.5 - Windows XP Pro - VB 6

AU SECOURS !