这个与你那个出错的数据表有关,EMP_ID字段的值有问题,超出了范围。你检查下那个表的这个字段的定义。
解决方案 »
- Delphi怎么取返回内容中的指定部分.
- 问个delphhi的搜索的问题
- [讨论] 用delphi做个客户端程序模拟jsp网页上的注册功能
- 请支持我的兄弟们来接分喽!^_^
- 没人能帮我吗?表的快速查找问题(只有10分了!千万别介意,帮帮小妹吧)在线等待!!!
- 急急急,,,如何释放一个动态数组占用的内存,解决就给分,分不够在加
- 点击窗口上的小叉和用Close()关闭窗口有什么不同吗?
- 怎样将Tstring转换为TChar,具体怎么用?
- 写一个控件,继承于TComponent,想在此控件中处理它的父窗口的按键事件,该怎么做。
- 怎么从文件流或API的文件系统中读取一文本行?
- delphi,oracle,模糊查询
- 100分 求 win8下postmessage的解决方法
最近学习下三层,先写了Server端,数据库用的是ORacle ,远程数据模块如下图;用了ADOConnection*1,AdoQuery*1 (命名OraQryData);AdoSproc*1(OraSpc), DataSetProvider*2(命名:oraQry,OraSproc);控件件若干,分别设定连接关系 如下图 ,中间没加任何代码,运行服务端;
然后写Client 端,用的是ClientDataset*2(命名为Qry1,Sproc), TScokConnetion*(SockCon1)1, SockCon1 设置边到Server 端的数据模块,其它属性设置为:Qry1.RemoteServer=SockCon1,qry1.DatasetProvide=oraQry;Sproc.remoteServer=SockCon1,Sproc.DataSetProvider=OraSproc
Client 代码:
Button1.clink;
with qrydata do
begin
close;
commandtext:='select * from sys_emp where rownum<500';
open;
end;
错误提示如下图
O
(注:Emp_id 为Number 类型 ,如果我把Server 连接控件改成 BDE 控件(TDATABAS,Tssieon,TQuery)不加任何代码 查询不会报错)调用数据库存储过程的代码如下:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with sproc do
begin
Close;
Params.Clear;
DataRequest('SJ_CKRT_SN') ;
FetchParams;
ShowMessage(IntToStr(Params.Count));//参数个数是0
// Params.ParamByName('TREV').AsString:='SSSN';
// Execute;
// ShowMessage(Params.ParamByName('TRes').AsString); end;
end;
运行结果显示的为0,就是得不到参数!!请各位高手帮指导下这个Delphi 三层结构下,怎么调用ORACLE 存储过程?
我是做MES系统二次开发的,模式为D7+Oracle 三层;MES系统是Apserver+Client; 以上同样的代码连到MES系统的Apserver不会有任何问题 苦于没有源码,不知道他做了如何处理, 用DEDE 反编译下他的Apserver Exe
其APERVER 远程数据模块如下图,处理代码写在DatasetProvider 的OnDataRequest 事件下看了些书上说的三层 ,书上介绍的就是几个控件的用法,其他均未提,此开贴望各们给点思路,介绍点学习资料 谢谢
SAJET的系统是COM+的三层架构,我贴一个我之前写的APSERVER
unit Unit2;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
DBClient, Apserver_TLB, StdVcl, Provider, DB, ADODB;type
TApSqlConn = class(TRemoteDataModule, IApSqlConn)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DspQueryData: TDataSetProvider;
procedure RemoteDataModuleCreate(Sender: TObject);
procedure RemoteDataModuleDestroy(Sender: TObject);
private
{ Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
public
{ Public declarations }
end;implementation{$R *.DFM}
uses Unit1 ;class procedure TApSqlConn.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
if Register then
begin
inherited UpdateRegistry(Register, ClassID, ProgID);
EnableSocketTransport(ClassID);
EnableWebTransport(ClassID);
end else
begin
DisableSocketTransport(ClassID);
DisableWebTransport(ClassID);
inherited UpdateRegistry(Register, ClassID, ProgID);
end;
end;procedure TApSqlConn.RemoteDataModuleCreate(Sender: TObject);
begin
Form1.UpdateClientCount(1);
end;procedure TApSqlConn.RemoteDataModuleDestroy(Sender: TObject);
begin
Form1.UpdateClientCount(-1);
end;initialization
TComponentFactory.Create(ComServer, TApSqlConn,
Class_ApSqlConn, ciMultiInstance, tmApartment);
end.