怎样从客户端详应用程序服务器存储新记录?急急急(50分)

  • 主题发起人 主题发起人 小匆匆
  • 开始时间 开始时间

小匆匆

Unregistered / Unconfirmed
GUEST, unregistred user!
我编了一个三层结构的程序,运行正常。我现在要做的是:
在客户端,有个Form,包含了tedit控件,我想把他们得知传送给应用程序
服务器作为新记录保存。我用的是insert into语句,但始终出错!
请问各位高手我通过什么样的方式好呢?
 
use clientdataset
tdbedit

eg:../delphi 5/demos/midas
 
能不能具体一点。我有的是ADO方式,运行的好好的。你可以试试ADO库。
 
在clientdataset控件中调用commandtext属性,一定要注意command的格式,然后调用execute
方法,在datasetprovider控件中使options:=allowcommandtext;另外你的数据操纵集应设为
false.你的edit.text值可作为参数传入commandtext.
 
教你一个简单的方法:
tclientdataset中的append方法,
你不需要区写sql语句了.
Fields.Fieldbyname('canshu1').value:=
...
post;
就可以了,就这么简单.
 
post后可不会保存的。要ApplyUpdates(-1)
 
我想把他们得知传送给应用程序服务器作为新记录保存????
是什么意思?

 
实现你的功能应该有三种方法:
其中最简便的方法是使用ADO数据集连接数据库,你只需选用一个ADODataset/ADOQuery
控件,将其激活,然后你在按钮中调用Applyupdate方法,即可实现你需要的数据处理功能;
如果按照你的做法,采用commandtext传递sql叙述,你需要调用clientdataset的execute
方法.(因为你要进行的是无返回值的操作);
第三种方法较麻烦,适合你在多表的更新时使用,在这里应该用不上.
 
采用commandtext传递sql叙述,你需要调用clientdataset的execute
方法
eg:
trans:=CreateTransactionContextEx;
try
olecheck(Trans.createinstance(class_trainrdm,iid_itrainrdm,idm));
//ipp:=cotrainrdm.create;
ipp:=idm as Iappserver;
cds:=TClientDataSet.create(nil);
cds1:=TClientDataSet.create(nil);
cds.data:=datamaster;
s:='insert tb_train_master(sheetid,senddate,worker) values(''%s'',''%s'',''%s'')';
cds1.data:=datadetail;
s1:='insert tb_train_detail(sheetid,gname,number,price) values(''%s'',''%s'',%s,%g)';
n:=0;
try
cds1.first;
for icount:=0 to cds1.RecordCount-1do
begin
s2:=format(s1,[cds1.fieldbyname('sheetid').asstring,
cds1.fieldbyname('gname').asstring,
cds1.fieldbyname('number').asstring,
cds1.fieldbyname('price').asfloat]);
ipp.AS_Execute('DataSetProvider1',s2,p,k);
cds1.Next;
n:=n+1;
end;

cds.first;
for x:=0 to cds.recordcount-1do
begin
s3:=format(s,[cds.fieldbyname('sheetid').asstring,
cds.fieldbyname('senddate').asstring,
cds.fieldbyname('worker').asstring]);
ipp.AS_Execute('DataSetProvider1',s3,p,k);
cds.next;
end;
 
多人接受答案了。
 
多人接受答案了。
 
后退
顶部