起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1230|回复: 35

【结】流程填充图片问题**

[复制链接]
发表于 2009-2-16 16:55:35 | 显示全部楼层 |阅读模式
1个环节A中,当打开窗体时自动对字段F填充一张图片,然后保存并流转到环节B,当打开窗体时自动对K字段填充一张图片,然后点保存,刷新数据集,发现字段F填充的图片消失了,数据库里面该字段的值也被清空了,请问这是什么原因呢?
回复

使用道具 举报

 楼主| 发表于 2009-2-16 16:57:17 | 显示全部楼层
这是打开窗体及填充图片的代码:

procedure TCOMMONUTILS.AutoSignAture(AStingLisValue:string;ADataSetBroker:TDataSetBroker);
var
  lQuery: TQuery;
  SignedList: TStringList;
  i: integer;
begin
  if (ADataSetBroker.DataSet = nil) or not ADataSetBroker.DataSet.Active or
    (ADataSetBroker.DataSet.State <> TDataSetState.dsEdit) then
    exit;

  SignedList := TStringList.Create;
  SignedList.CommaText := AStingLisValue;
  lQuery := TQuery.Create(nil);
  lQuery.ConnectionString := 'DATABASEURL=Biz:\OPERATION\OperationDB.Database';
  try
    for i := 0 to SignedList.Count - 1 do
    begin
      if not(ADataSetBroker.DataSet.FieldByName(SignedList.Names).ReadOnly) then
      begin
        lQuery.CommandText:= 'Select Signed From YUser Where ID = ' +
                      ADataSetBroker.DataSet.FieldByName(SignedList.Names).AsString;
        lQuery.Open;
        if not lQuery.IsEmpty then
           ADataSetBroker.DataSet.FieldByName(SignedList.Values[SignedList.Names]).Assign(lQuery.Fields[0])
        else
           ADataSetBroker.DataSet.FieldByName(SignedList.Values[SignedList.Names]).Clear;
      end;
    end;
  finally
    SignedList.Free;
    lQuery.Close;
    lQuery.Free;
  end;
end;


procedure TMAINFORM.BizFormShow(Sender: TObject);
var
lSignedListCommaText:String;
lCOMMONUTILS:TCOMMONUTILS;
....
begin
.....
  lSignedListCommaText:='XMGLBZYGCS=XMGLBZYGCSQM,XGBMZYGCS=XGBMZYGCSQM,YWBMZYGCS=YWBMZYGCSQM,'+
                        'XMJL=XMJLQM,XGBMJL=XGBMJLQM,YWBMJL=YWBMJLQM';
  lCOMMONUTILS:= TCOMMONUTILS.Create(context);
  try
    lCOMMONUTILS.AutoSignAture(lSignedListCommaText,DataSetBroker);
  finally
    lCOMMONUTILS.Free;
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2009-2-16 17:52:52 | 显示全部楼层
楼主,我把你的问题拆开一下问
1、1个环节A中,当打开窗体时自动对字段F填充一张图片,然后保存
此时检查数据库的相应的表中,F填充字段是否正常。

2、并流转到环节B,当打开窗体时自动对K字段填充一张图片,然后点保存,刷新数据集,发现字段F填充的图片消失了
2.1、如果不刷新数据集,字段F填充的图片是否还存在呢?
2.2、对K字段填充的时候,是否是第一个环节流转下来的那条记录呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-17 09:33:25 | 显示全部楼层
单步跟踪显示的都附了值,但是一点完保存,F字段的值就丢失了
在表单上还有显示,但是从后台中查询该记录,F字段的值是空值
回复 支持 反对

使用道具 举报

发表于 2009-2-17 09:40:06 | 显示全部楼层
你的意思其实在 1个环节A中,当打开窗体时自动对字段F填充一张图片,然后保存。从后台数据库看这个字段就没有保存上,我这样理解对吗?

如果对,请问你这个字段的数据类型是啥,包括在设计环境下看到的,和 从 实际数据库表 看到的。
另外,如果在数据字段字典层,直接通过记录视图的方式来 预览这张表,然后手工添加进去 ,然后点击保存,此时数据库上存上了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-23 10:45:53 | 显示全部楼层
这字段是个2进制流的字段,我从后台数据库中用SQL能写进去,但是在代码中
        if not lQuery.IsEmpty then
           ADataSetBroker.DataSet.FieldByName(SignedList.Values[SignedList.Names]).Assign(lQuery.Fields[0])
后面把ADataSetBroker.DataSet.ApplyUpdates之后
也会出现上面所述的问题
回复 支持 反对

使用道具 举报

发表于 2009-2-23 11:36:42 | 显示全部楼层
楼主,
1、先回答我5楼的问题,
2、跟踪一下 SignedList.Values[SignedList.Names] 是二进制字段吗?还有这个lQuery.Fields[0]
二进制字段之间的赋值,可以参考 http://bbs.justep.com/forum.php?mod=viewthread&tid=1951
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-23 12:19:12 | 显示全部楼层
SignedList.Values[SignedList.Names] 以及lQuery.Fields[0]
中的字段都是二进制字段
回复 支持 反对

使用道具 举报

发表于 2009-2-23 14:36:33 | 显示全部楼层
后台数据库中用SQL能写进去
请问你是怎么写的?

如果SignedList.Values[SignedList.Names]  直接写成这个字段ID呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-24 09:39:50 | 显示全部楼层
都一样的效果,单步调试的时候两个字段都赋值了,但是点完保存,字段F的值就没了
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 00:49 , Processed in 0.038950 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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