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;
cds.data:=dsp.data赋值有时会出现AV错误剖析的更多相关文章
- $.data()、$().data
两个方法很相似,但是有区别,简单说一下: $.data():jq的静态方法,也就是jQuery.data()直接调用 $().data():实例方法,先有实例,才能调用这个方法,例如:$(" ...
- $data[$i++]+=2;不等于$data[$i++]=$data[$i++]+2;
$data=array(1,2,3,4); $i=1; $data[$i++]+=2; var_dump($data); echo $i; //输出:array(1,4,3,4) 和 2 $data= ...
- System.Data.SqlClient.SqlError: FILESTREAM 功能被禁用”的错误
还原sql2008数据库时遇到"System.Data.SqlClient.SqlError: FILESTREAM 功能被禁用"的错误,在网上搜索解决方案如下: 1.在" ...
- ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
一直用的是SQL 数据库,突然改用Access了,使用起来就是没有SQL 顺畅,老是出来些意想不到的错误.今天用Access做的网站程序进行添加数据,调试了一下午,总是异常…… 提示ACCESS的Sy ...
- Data truncation: Data too long for column 'gender' at row 1 出现的原因
创建数据库的代码如下: create database day15 ; use day15 ; create table customer( id varchar(100) primary key, ...
- Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'content' a
1.错误描述 org.hibernate.exception.DataException: could not execute statement at org.hibernate.exception ...
- Data truncation: Data too long for column 'content' at row 1
项目运行报错: Data truncation: Data too long for column 'content' at row 1 是由于字段长度太小导致的 搜索mysql 中text 字段长度 ...
- error: 'Can't connect to local MySQL server through socket '/data/3307/data/mysql.sock' (2)'
centos7.5 重启mysql报错 问题: [root@db01-51 ~]# mysqladmin -uroot -p123 -S /data/3307/data/mysql.sock shut ...
- Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'img' at row 1故障
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'img' at ro ...
随机推荐
- django模板系统的基本原则
写模板,创建template对象,创建 context ,调用render()方法
- JavaSE-27 JDBC
学习要点 JDBC 查询数据 添加数据 修改数据 删除数据 JDBC 1 JDBC的定义 JDBC是Java数据库连接技术的简称,提供连接和操作各种常用数据库的能力. 2 JDBC工作原理 3 ...
- onPullDownRefresh函数没有被正确执行
原因 问题原因很多,我遇到的这个问题的原因是: 页面有两个同名的onPullDownRefresh函数,导致只执行最后的一个. 解决 只留一个onPullDownRefresh函数
- poj 1664放苹果(转载,不详细,勿点)(递归)
题目和别人的解析传送门 我的代码 #include<bits/stdc++.h> using namespace std; int f(int m,int n) { ) ; ||m==) ...
- CF550 DIV3
A - Diverse Strings CodeForces - 1144A A string is called diverse if it contains consecutive (adjace ...
- UVa-401-Palindromes(回文)
这一题的话我们可以把映像字符的内容给放入一个字符串常量里面,然后开辟一个二维的字符串常量数组,里面放置答案. 对于回文实际上是很好求的,对于镜像的话,我们写一个返回char的函数,让它接收一个char ...
- [LUOGU] P3469 [POI2008]BLO-Blockade
https://www.luogu.org/problemnew/show/P3469 求无向图分别删去每个点后不连通的点对数. 首先,对于任何一个点,它本身删了,就会和剩下的n-1个点不连通,点对是 ...
- Dijkstra算法简单实现(C++)
图的最短路径问题主要包括三种算法: (1)Dijkstra (没有负权边的单源最短路径) (2)Floyed (多源最短路径) (3)Bellman (含有负权边的单源最短路径) 本文主要讲使用C++ ...
- ssh和sshd服务
1.1 对称加密和非对称加密 对称加密:加密和解密使用一样的算法,只要解密时提供与加密时一致的密码就可以完成解密.例如QQ登录密码,银行卡密码,只要保证密码正确就可以. 非对称加密:通过公钥(publ ...
- ubuntu卸载编译安装的软件
cd 源代码目录 make clean ./configure make make uninstall