起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 415|回复: 10

动态设置某一字段的查找属性**

[复制链接]
发表于 2007-5-24 09:47:40 | 显示全部楼层 |阅读模式
用databroker2代理一个信息,动态设置该信息所对应的表中某一字段的查找属性,使dataedit显示查找结果,应该显示多个数据,并且显示下拉框,可是出现错误:弹出对话框显示Access violation at address 77D37721 in module 'user32.dll'. Read of address FEEEFEEE。
再单击下拉框又弹出对话框,无效的连接参数(空)
不知该怎么办。把代码贴出来如下:
procedure TMainForm.DataEdit7Change(Sender: TObject);
var
     item:string;//存放设备类型名称
     sqltable_name:string;//存放sql查询语句
      lStream: TMemoryStream;
begin

    item:=DataEdit7.Text;
     sysutils.Trim(item);
  with tsqldataset(datasetbroker1.DataSet)do
     begin
       close;
       sql.Clear;
       sql.Text:='select sDevTab from BD_P_DEVTYPECOMP where sDevTypeName='''+item+'''';
       open;
       if  fieldbyname('sDevTab').AsString<>'' then
            begin
                sqltable_name:=fieldbyname('sDevTab').AsString;
                sysutils.Trim(sqltable_name);
                jsdialogs.ShowMsg(sqltable_name,'dd');
             with tsqldataset(datasetbroker4.DataSet)do
             begin
               //close;

                  bizfieldbyname('sRunId').LookupDef.Kind:=tlookupkind.lkDataValues;
                   bizfieldbyname('sRunId').LookupDef.ValidateKind:=tlookupValidateKind.vkMust;

                 bizfieldbyname('sRunId').LookupDef.SQL.Text:='select sRunId from '+sqltable_name+'';
                 bizfieldbyname('sRunId').LookupDef.KeyField:='sRunId';
                 bizfieldbyname('sRunId').LookupDef.DisplayField:='sRunId';
                 bizfieldbyname('sRunId').LookupDef.DropDownButton:=true;
                 bizfieldbyname('sRunId').LookupDef.AutoRefresh:=true;
                 lStream := TMemoryStream.Create;

      Open;
      try
      SaveToStream(lStream, TDataPacketFormat.dfXML);
      lStream.Position := 0;
      bizfieldbyname('sRunId').LookupDef.Values.LoadFromStream(lStream);
      TBizDataSet(datasetbroker4.DataSet).LayoutChange;
    finally
      lStream.Free;
    end;
  end;
end;

    end;
end;

end.
回复

使用道具 举报

发表于 2007-5-24 10:09:47 | 显示全部楼层
sql语句出错,'select sRunId from '+sqltable_name+'';
sRunId 好像要加表名才能用。
呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:22:15 | 显示全部楼层
语句应该没问题,我在代码中用jsdialogs.ShowMsg(sqltable_name,'dd');可以弹出选择的表名。
如果向你说的表名有错的话,改成'select sRunId from '''+sqltable_name+'''';应该没问题了吧 ,但还是同样的错误
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:28:22 | 显示全部楼层
哪位高手可帮帮我 ,急急急!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2007-5-24 10:50:57 | 显示全部楼层
你设置查找属性之前先open一下数据集试一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:51:22 | 显示全部楼层

期盼高人!!!!!!!!

设置断点后,单步调试,当运行到 TBizDataSet(datasetbroker4.DataSet).LayoutChange;时,再调试就会跳过 finally,直接又返回到item:=DataEdit7.Text;往下运行,这是什么意思阿。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:59:08 | 显示全部楼层
open数据集试了试也不行!不知该怎么办了
回复 支持 反对

使用道具 举报

发表于 2007-5-24 13:03:45 | 显示全部楼层
每人顶了,顶一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 13:26:29 | 显示全部楼层
再顶,不怕顶不出来!!!
回复 支持 反对

使用道具 举报

发表于 2007-5-24 13:38:04 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-21 07:49 , Processed in 0.041099 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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