之前没用过delphi开发
现在碰到个问题
s_sql:='SELECT * FROM table ';
      ADOl.Close();
      ADOl.SQL.Clear();
      ADOl.SQL.Add(s_sql);
      ADOl.Open;
表有一个字段1,字段1类型为image,试问ADOdzbl.FieldByName('字段1).Value为什么取不出值。

解决方案 »

  1.   

     这个这个使用blob流取出!
      

  2.   

    TBlobField(ADOdzbl.Fieldbyname('字段1')).SaveToFile(ExtractFilePath(Application.ExeName)+'a.jpeg');
      

  3.   

    这样我知道 跟
          ms:=TMemoryStream(ADOdzbl.CreateBlobStream(ADOdzbl.FieldByName('病历内容'),bmRead));
          ms.SaveToFile('c:\ddd1.xml');
     差不多,把二进制流保存成文件了,我现在是要用这个二进制流,把取出来的二进制流赋值给一个变量,传给另外一个函数,保存成文件就复杂了。这个二进制流怎么赋值给变量,再以参数形式传给别的函数(参数类型为OleVariant)
      

  4.   


    var
      ms: TMemoryStream;
    begin
      TBlobField(ADOdzbl.FieldbyName('字段1')).SaveToStream(ms);
    end;
      

  5.   

    Sream转OleVariant是试下下面的函数:引用自:http://blog.csdn.net/xt_chaoji/article/details/6891360
    function TForm1.StreamToVariant(Stream: TStream): OleVariant;
    var
    p: Pointer;
    begin
      Result := VarArrayCreate([0, Stream.Size - 1], varByte);
      p := VarArrayLock(Result);
      try
        Stream.Position := 0;
        Stream.Read(p^, Stream.Size);
      finally
        VarArrayUnlock(Result);
      end;
    end;
      

  6.   

    这个保存成TMemoryStream类型,传给另外一个函数参数类型是OleVariant,类型不匹配,就纠结到这了,
      

  7.   


    试下上面的函数:StreamToVariant