Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Nous avons un processus de sauvegarde et de lecture de document word dans une base de donnée Sybase. Depuis la migration cela ne fonctionne plus. Le fichier ecrit ne comporte que des caractère inconnus.
On appel une fonction qui est précédé du code SQL de lecture du blob depuis la base, dont voici un exemple :
selectblob blb into :blb from ttestblobmpa where cle = :scle;
Ensuite on Ecrit le blob dans un fichier temporaire sFicTemp puis insertion du fichier temporaire dans l'OLE
Function :
long i, iFile, l blob blb string sfictemp // Nb de blocs de 36765 octets à traiter l = (Len(blb) / 32765) + 1 iFile = FileOpen(sFicTemp, streammode!, write!, LockWrite!, Replace!) if iFile < 1 Then gnv_msgbox.fnv_MessageBox("Error", "Can't open working file " + sFicTemp, "MAIL_SUPPORT_DMC") Return iFile End if // Ecriture dans fichier temporaire For i = 1 to l FileWrite(iFile, BlobMid(blb, ((i - 1) * 32765) + 1, 32765)) Next // Fermeture FileClose(iFile) // Insertion du fichier temporaire dans l'OLE if uf_InsertFile(sFicTemp) <> 0 Then gnv_msgbox.fnv_MessageBox("Error", "Temporary Merge file not generated", "MAIL_SUPPORT_DMC") Return -1 End if Return 0
Merci de votre aide
Xavier
Hors ligne
Bonjour, juste pour info, pourrais-tu préciser les versions de ta migration ?
Hors ligne
Oui je viens de m'apercevoir que j'avais oublié ce point important .
Version 9.0.3 Build 8716 vers 10.5.2 Build 7564
Merci
Xavier
Hors ligne
il faut que tu rajoutes.... EncodingANSI!
Hors ligne
Merci
A quel endroit je precise l'encodage
Hors ligne
selectblob blb into :blb from ttestblobmpa where cle = :scle; blb = blob(blb,EncodingANSI!)
un truc de ce genre la... regardes l'aide en ligne...
A+
Hors ligne
J'ai essayé
blb = blob(blb,EncodingANSI!)
cela ne passe pas à la compile il attend une string
iFile = FileOpen(sFicTemp, streammode!, write!, LockWrite!, Replace!,EncodingANSI!)
ne semble pas fonctionner non plus
Le selectblob convertie en un Unicode blob. Il faut une methode quie convertise du Unicode blob en Ansi Blob
Hors ligne
Tu n'arrives pas à lire les anciens ennregistrements ou meme les nouveaux ?
Ne serait pas un parametre du style DisableUnicode=1 à mettre dans le DbParm ?
Hors ligne
Effectivement il faut preciser
In code, before calling SELECTBLOB or UPDATEBLOB with a PowerBuilder blob that contains ANSI string data or binary data, set the BinTxtBlob parameter to 1:
SQLCA.DBParm = "BinTxtBlob=1"
Merci pour votre aide
Hors ligne
Merci pour tes explications
Merci de mettre [RESOLU] dans le titre du premier message
Hors ligne