zoukankan      html  css  js  c++  java
  • cds.data:=dsp.data赋值有时会出现AV错误剖析

    cds.data:=dsp.data赋值有时会出现AV错误剖析

    如果QUERY没有查询到任何数据,cds.data:=dsp.data赋值会触发AV错误。

    大家知道,DATASNAP有许多远程方法就是返回OLEVARIANT类型的数据,当远程方法没有返回任何数据的时候,cds.data:=远程方法函数赋值的时候,同样会触发AV错误。

    那么怎样解决此类问题呢?

    1)中间件远程方法作如下处理

    function TServerMethods1.QuerySql(const accountNo, sql: WideString): OleVariant;
    var
    d: TfrmDB;
    begin
    Result := null;  // 默认返回NULL
    if (accountNo = '') or (sql = '') then
    Exit;

    2)客户端调用远程方法作如下处理

    function TdmSys.QuerySQL(const sql: string; cds: TClientDataSet; accountno: string = '0'): Boolean;
    var
    v: OleVariant;
    m: TServerMethods1Client;
    begin
    Result := False;
    try
    waitInfo.Show;
    waitInfo.Update;

    if appInfo.tier = 3 then
    begin
    if ConnectAppServer and (sql <> '') and (cds <> nil) then
    begin
    m := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
    v := m.QuerySQL(accountno, sql);
    m.Free;
    if not VarIsNull(v) then  // VarIsNull(v) 判断远程方法是否有返回数据
    begin
    cds.Data := v;
    Result := True;
    end;
    end;

  • 相关阅读:
    Spring 09 : AOP实例
    Spring08 AOP概念
    Spring 07 : 动态代理
    Spring06 Spring+Junit
    Spring05 : 基于注解的IOC
    Spring03 : 依赖注入
    jupyter修改python核(使用不同的python虚拟环境)
    线性代数的本质——引入几何视角
    图像的去雾与加雾
    从MATLAB看一个IDE应该具有的素质
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/5887490.html
Copyright © 2011-2022 走看看