基础构架是按照李维Datasnap 游记写的一个程序都完成一大半了..后来我在程序要读取服务器传来的一个Image字段,却怎么也得不到内容..
在服务器端写的TSQLDataSet里面使用
TBlobField(cltDsLoadMm.FieldByName('F_ScanInfo')).SaveToFile('C:\'
        +cltDsLoadMm.FieldByName('F_Name').AsString+'.bmp')
是能保存到文件并且能有图像信息..
但是使用TDataSet传出来,在Datasnap的客户端读取后也能保存到文件(F_Name能正常读取到的),但是保存的图像文件信息为空..看了所有连接的属性,都没什么问题啊~~这方面的资料太少了,难道Datasnap中间层不支持Image字段???
原来也碰到过使用Sql 的decimal 字段,数据库里设置的是6位小数,可是读取到客户端的小数后面怎么也没有,就是一整数..
这个问题后来没办法吧SQL的字段更改为Real 类型,在客户端再强制四舍五入才搞定....
这个JSON这么多问题????请教高手啊...李维在莫?呵呵.....解决了送大餐..

解决方案 »

  1.   

    blob字段比较特殊,看一下Provider组件的设置(ProviderOptions),否则需要在ClientData当中调用FetchBlobs.
      

  2.   

    ProviderOption的说明:
    poFetchBlobsOnDemand   BLOB fields are not included in data packets. Instead, client applications must request these values on an as-needed basis. If the client dataset's FetchOnDemand property is true, the client requests these values automatically. Otherwise, the client application uses the FetchBlobs method to retrieve BLOB data.   
      

  3.   

    谢谢,不过我将 poFetchBlobsOnDemand   设置为TRUE后,跟踪调试会发现提示这个错误:
    ---------------------------
    Debugger Exception Notification
    ---------------------------
    Project JsonClient.exe raised exception class TDBXError with message 'Remote error: Dbx.SQL is an unrecognized command type'.
    ---------------------------
    Break   Continue   Help   
    ---------------------------
    也是取不到image的值。
      

  4.   

    Dbx.SQL  是TSqlDataset的DbxCommandType的值.. 
      

  5.   

    poFetchBlobsOnDemand:若包含此项,则表示数据包中不包括BLOB字段。那么默认的设置为false应该是对的了..期待解决方法..
      

  6.   

    poFetchBlobsOnDemand  BLOB fields are not included in data packets. Instead, client applications must request these values on an as-needed basis. If the client dataset's FetchOnDemand property is true, the client requests these values automatically. Otherwise, the client application uses the FetchBlobs method to retrieve BLOB data.poFetchBlobsOnDemand  (在一般情况下)BLOB字段并不包含在(基础)数据报文当中,客户端应用程序视需求另行请求.如果客户端数据集的FetchOnDemand属性被设置为"真",则客户端(内建机制会)自动请求这些(BLOB字段)数据.否则,客户端应用程序需要调用FetchBolobs方法检索BLOG数据.
      

  7.   

    谢谢,不过我将 poFetchBlobsOnDemand  设置为TRUE后,跟踪调试会发现提示这个错误: 
    --------------------------- 
    Debugger Exception Notification 
    --------------------------- 
    Project JsonClient.exe raised exception class TDBXError with message 'Remote error: Dbx.SQL is an unrecognized command type'. 
    --------------------------- 
    Break  Continue  Help  
    --------------------------- 
    也是取不到image的值。 Dbx.SQL  是TSqlDataset的DbxCommandType的值.. 因为我是将服务器的TSQLDataSet Open以后,作为TDataSet返回给客户端的..客户端使用SqlMethod执行方法后,将执行结果的Dataset付给Provider
    Provider再给TClientDataset.让后通过TDataSource与数据组件关联..请教为什么传不回image值,我在连接打开时使用跟踪发现image字段的size为0。其他字符类型的字段传过来都很正常..按照
     unsigned 大侠设置 poFetchBlobsOnDemand  设置为TRUE后出现 以上描述的错误...期待更新解决方法。。
      

  8.   

    你把2009的update2装上试试,我装过的,可以读取不过保存还是不行