起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 172|回复: 7

【结】文本类型事务提交

[复制链接]
发表于 2008-4-22 16:23:37 | 显示全部楼层 |阅读模式
我想用事务提交两个表的数据,其中有几个字段为文本类型,以前没写过文本类型的事务提交,在论坛里也没有找到相关的内容,知道的能贴出几个例子可以供参考吗?(我是新手,最好详细点),谢谢了
回复

使用道具 举报

发表于 2008-4-22 16:47:33 | 显示全部楼层
用数据集来提交,像字符型字段一样赋值就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-22 17:05:49 | 显示全部楼层
//自定义保存按钮
function TFRM_TRAINPLAN.ApplySave: boolean;
var
  SqlStr,TempStr,BMID,DocID,PersonID:string;
  lTransHandle:TTransactionHandle;
  params:TParams;
begin
  result := true;
  lTransHandle := Conn.Transaction.Start(false);
  params:=TParams.Create;
  try
    try
      if not Conn.Connected then Conn.Connected:=True;
      sqlstr := 'insert into 表A (A,B,C'))values(':A,:B,:C);
      params.CreateParam( TFieldType.ftString,'A',TParamType.ptInput).Value := DataSetBroker.DataSet.FieldByName('A').AsString;
params.CreateParam(TFieldType.ftdatetime,'B',TParamType.ptInput).Value := DataSetBroker.DataSet.FieldByName('B').Asdatetime;
params.CreateParam(TFieldType.ftString,'C',TParamType.ptInput).Value := DataSetBroker.DataSet.FieldByName('C').AsString;
.................
       Conn.ExecuteSQL(SqlStr,params,-1,'Error');
       params.Clear;
       Conn.Transaction.Commit(lTransHandle);
   except
     Conn.Transaction.Rollback(lTransHandle);
     JsDialogs.ShowMsg('失败!','提示');
   end;
   finally
      params.Free;
   end;
END;
我以前是这种方法 提交事务
但这里 C为文本类型  时就 会报错
回复 支持 反对

使用道具 举报

发表于 2008-4-22 17:43:35 | 显示全部楼层
直接通过数据集提交
类似这样
var
  th: TTransactionHandle;
begin
  th := Transaction.Start(False);
  try
    sdsMaster1.Open;
    sdsMaster2.Open;
    sdsMaster1.Append;
    sdsMaster1.FieldByName('A').asString : = '';
    sdsMaster1.FieldByName('B').asString : = '';
    sdsMaster1.FieldByName('C').asString : = '';
    ...
    sdsMaster1.ApplyUpdates;
    sdsMaster2.ApplyUpdates;
    Transaction.Commit(th);
  except
    Transaction.Rollback(th);
    raise;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-22 18:46:13 | 显示全部楼层
这个方法的确可以提交,谢谢。不过适合拖控件界面。如果是功能层调用信息层表单结构的的时候怎么写事务,因为这时没有EDIT之类控件提供付值,可是下面的写法报错
DataSetBroker.DataSet.FieldByName('A').AsString:=DataSetBroker.DataSet.FieldByName('A').AsString;
能提供‘表单’结构的事物提交方法吗?我在修改原有的成品,之前是3个表单结构,不是事物提交,但却是互相关联的3个表。所以我想加个事物(如果作成拖控件界面,时间会太长)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-23 09:07:49 | 显示全部楼层
怎么没人回答  问题是不是太幼稚了 .......
如果知道 2进制流的 事物提交,顺便帮忙说一下
谢谢了
回复 支持 反对

使用道具 举报

发表于 2008-4-23 10:15:35 | 显示全部楼层
如果相关联的3个表对应的数据集是在一个信息下,不用写事务,同一个信息下的数据集平台默认就是在一个事务里的
你直接提交数据集就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-23 15:01:05 | 显示全部楼层
原来是这样,那结贴吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-10 19:14 , Processed in 0.038202 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表