关于ClinectDataSet数据定位的问题

crazy_boom 2016-04-24 09:07:32
delphi 7.0


在左边侧 单号中输入单号 获取明细放入dbgrideh 中 在条码处 输入条码 回车后读取出该行条码的那条技术 在数量出输入实际数量回车 。。
如何进行数据定位啊?
...全文
441 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazy_boom 2016-05-06
  • 打赏
  • 举报
回复
risesoft2012 你能说的再具体一些吗 表字段没有唯一的ID值 因为这个是业务明细表的内容。如果非要增加一个 可以加一个 自增列可以达到唯一的ID值 用sql的like 你说的不是 直接从数据库服务器重新提取数据的意思吧。。
一葉輕舟 2016-05-03
  • 打赏
  • 举报
回复
你可以通过中间过程来locate的:你的表字段,应该有一个唯一的ID之类的吧,先用sql的like,找出你需要的类似记录的ID,再locate定位 .
crazy_boom 2016-05-02
  • 打赏
  • 举报
回复
lyhoo163 大哥你的方法解决了问题 现在有一个问题就是 使用 ClientDataSet.Locate('ID', 'A12', [loCaseInsensitive ,loPartialKey]); 这个方法 只能找到开头字母是A12的记录 找不到 中间字母是A12的 比如 记录中ID 的值为A12C003 输入A12 是可以查找到这条记录的但是如果输入 12C 就不可以了 有什么方法可以实现 输入 12C 也可以查找到这条记录呢。 也就是包含查找记录
crazy_boom 2016-05-02
  • 打赏
  • 举报
回复
这个ClientDataSet数据集中的数据 随时都在做操作 比如修改数据集中的一些数值 如果通过sql来过滤数据 就会影响之前的操作了吧
lyhoo163 2016-05-02
  • 打赏
  • 举报
回复
1、locate的参数 [ loPartialKey] 匹配部分名字(只能以首字母开始的模糊搜索), 当然达不到低迷的要求了。 2、建议使用,SQL语句中的Like模糊搜索语句: SQL:='select * from 表名 where 姓名 like ''%'+A12+'%'' 这样,完全可以达到你的要求了。
ttbook001 2016-04-29
  • 打赏
  • 举报
回复
定位就是在相关dataset里面找到对应的主关键字的信息。 查到对于得关键字信息就可以找到对应的记录行。 DataSet.DisableControls; try with DataSet do while not Eof do begin if //比较dataset里面对于字段的值与你要查找的值是否相同 then Break; Next; end; finally DataSet.EnableControls; end;
lyhoo163 2016-04-29
  • 打赏
  • 举报
回复
clientdataset1.locate是在clientdataset原有的数据下,搜索过滤相关数据的一种办法。 一、方法的说明 clientdataset1.locate(const KeyFields: String; const KeyValues: Variant;Options: TLocateOptions): Boolean; 参数 :KeyFields 是查询的字段名; KeyValues 是查询的条件值; Options 是查询标准 ,分为 [ loCaseInsensitive] 不分大小写 [ loPartialKey] 部分字符 [ ] 一模一样 二、使用实例 1、搜索原样(一模一样) ClientDataSet.Locate('NAME', '刘利' , []); 2、搜索二个字段,其它字段有“上海”“虹口区” ClientDataSet.Locate('City;District', VarArrayOf(['上海,虹口区']),[]); 3、搜索Mane中,首字符是“李”的数据 ClientDataSet.Locate('NAME', '李', [loPartialKey]); 4、搜索ID字段中,包含“ABC”,且不分大小写的数据。 ClientDataSet.Locate('ID', 'A12', [loCaseInsensitive ,loPartialKey]);
crazy_boom 2016-04-28
  • 打赏
  • 举报
回复
能否写一个例子呀
crazy_boom 2016-04-26
  • 打赏
  • 举报
回复
TClientDataset.Locate() 这个方法怎么使用啊
hj8090 2016-04-26
  • 打赏
  • 举报
回复
Locate
Frank6600 2016-04-26
  • 打赏
  • 举报
回复
是不是TClientDataset.Locate()方法?
Frank6600 2016-04-26
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_9e2e84050101jmk5.html
crazy_boom 2016-04-25
  • 打赏
  • 举报
回复
lyhoo163大哥 我这个做的是 复核的功能 左边DBGRIDEH中显示的是 出库记录 右侧是复核的区域。出库管理员 拿实货扫码 得到右侧的销售记录 将记录的信息显示在右侧的 框框中。输入 实际的出库数量 进行复核。 我现在想知道 在条码那输入条码后 如何能定位到 该商品的出库记录。
lyhoo163 2016-04-25
  • 打赏
  • 举报
回复
建议: 1、窗口左边,显示库存情况; 2、窗口右边,作为出库的数据录入。 3、右边条形码录入后,通过OnChang事件,显示库存: (1)如果库存数据行不多,可以全部显示。通过浏览(Next)进入行。 (2)如果库存数据行较多,可以通过SQL语句显示条形码的一条库存(也可以几行) 4、同时显示库存数据,这样用户的出库,不能大于库存数。 5、确定出库数后,要建立至少二个SQL语句: (1)库存表: 库存=库存-出库数。注意:如果库存=0,可能还得删除该行。 (2)出库表:增加一条出库信息。 (3)通过SQL的事务机制,让二条SQL语句,同时实现。
lyhoo163 2016-04-25
  • 打赏
  • 举报
回复
1、将TClientDataset对应DBGridEh1 2、将DB类控件对应表的相应字段 3、录入单号,此时的单号不能使用DB类控件,Edit1即可 4、建立SQL语句,读取数据 SQL:=‘select * From 表名 where 单号='+#39+Edit1.Text+#39; ClientDataSet1.Active:=False; ClientDataSet1.DataRequest(SQL); ClientDataSet1.Active:=True; DBGridEh1.DataSource:=DataSource1; 5、录入其它数据,更新数据。 更新数据最好也使用SQL语句: SQL:='Update 表名 set '; SQl:=SQL+'日期='+#39+Trim(DBEdit2.Text)+#39+','; 。。。。。。 SQl:=SQL+' where 单号='+#39+Edit1.Text+#39;
crazy_boom 2016-04-25
  • 打赏
  • 举报
回复
先 感谢 lyh00163大哥提供的方法 我做的这个功能是 一个出库复核的功能窗口。操作流程是 先输入单号 读取出出库单 然后在条码中输入商品的条形 码 回车后 在出库数量输入该条条码的商品的出库数量 再回车 焦点回到条码处 继续输入条码 然后输入出库数量 知道全都复核完。点击保存 复核完成 输入单号的 提取明细数据和汇总数据 的功能已经实现。 现在要实现的是 第一: 在条码的 编辑框中 输入商品的条形码 (或者扫码枪扫码)按回车后 记录自动定位到DBGRIDEH1 中的那条记录 上。 第二:出库数量的 编辑框中输入 实际的出库数量 按回车。更新该条码的对应那条记录的出库数量.(这个功能我也实 现了 貌似用DBEdit 输入就是直接更新 出库数量了) 第三:然后继续扫描其他的条码 继续操作 . 单号和条码 使用的控件是 Edit 其他都使用的DBEdit

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧