none
[VB6] Copier un champ BLOB vers un autre champ BLOB RRS feed

  • Question

  • Bonjour Old VB6 world,
    Je suis en train de maintenir une vielle application en VB6.
    Je dois dans cette application (client lourd avec Oracle 9i mais client 11g) copier un champ de type blob vers un champ de type blob. Pour cela j'ai codé la méthode FieldToField :

        

    Public Sub Field2Field(ByRef fldSource As ADODB.Field, ByRef fldDestination As ADODB.Field, ItemJauge As BoWSmartUI.SmartItem)    
    Dim conChunkSize As Long
    Dim st As ADODB.Stream
    Dim lngOffset As Long
    Dim lngTotalSize As Long
    Dim strChunk() As Byte
    On Error GoTo ErrHandler
    Screen.MousePointer = vbHourglass
    Set st = New ADODB.Stream 
    st.Type = adTypeBinary
    st.Open
    st.Write fldSource
    fldDestination.Value = st.Read
    st.Close
    Screen.MousePointer = vbDefault
    Exit SubErrHandler:
    MsgBox ("The copy of the attachment file failed")    Screen.MousePointer = vbDefault
    End Sub

    Le problème est que après la ligne st.close, fldDestination est null, alors que fldSource n'est pas null. Et la copie ne se fait pas.
    Est-ce bien le bon algorithme ?

    Merci de vos réponses.

    mardi 17 mars 2015 10:17

Réponses

  • Pour suite, je viens de trouver le problème et il est référencé sur la page ici

    Il s'agit d'un défaut l'ADODB.Stream qui ne gère pas les champs contenant des objets de plus de 20Mo.

    • Marqué comme réponse CubeAndLeaf mercredi 18 mars 2015 22:27
    mercredi 18 mars 2015 22:27