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;

  • 相关阅读:
    DOM基本介绍
    BOM的基本介绍
    对象
    函数
    时钟
    双色球
    JS数据结构
    微信扫二维码根据系统下载apk
    javascript相关积累
    ajax精华
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/5887490.html
Copyright © 2011-2022 走看看