如何将dbgridEh.datasource.dataset的locktype 用代码设置为ltbatchoptimistic?

秋天之落叶 2018-05-25 12:44:56
如何将dbgridEh.datasource.dataset的locktype 用代码设置为ltbatchoptimistic?
能不能这样设置?
ADOquery不用说。
...全文
532 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
无聊的猪 2018-05-29
  • 打赏
  • 举报
回复
引用 15 楼 leavesguth 的回复:
如何将dbgridEh.datasource.dataset的locktype 用代码设置为ltbatchoptimistic? 晚上回家还没有人回答,就结贴了,哈
不是直接设置就行了吗? (dbgridEh.datasource.dataset as TADOQuery).LockType := ltbatchoptimistic;
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
引用 16 楼 hj3000 的回复:
有很多组件吗?结构复杂就遍历窗体上的TDBGridEh组件就不乱了。
为了通用性
hj8090 2018-05-25
  • 打赏
  • 举报
回复
有很多组件吗?结构复杂就遍历窗体上的TDBGridEh组件就不乱了。
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
如何将dbgridEh.datasource.dataset的locktype 用代码设置为ltbatchoptimistic? 晚上回家还没有人回答,就结贴了,哈
  • 打赏
  • 举报
回复
引用 10 楼 leavesguth 的回复:
太复杂了,脑袋不够用,真希望以后的智能化开发语言有这样的功能代码: begin close this page; initialize this page all control; close this page all ADO; end; 然后一切搞定,哈哈哈
然后程序猿失业了...
  • 打赏
  • 举报
回复
引用 9 楼 leavesguth 的回复:
[quote=引用 8 楼 DelphiGuy 的回复:] 语法上是没有问题的,实际运行可能有问题。 PageControl1.Pages[index].Controls[i] as TGroupBox有点风险,应该也先用is判断一下
嗯,这是已经 if is 判断的循环里的其中一条一句,对各种控件的判断、ado、table、keypreview,如果是groupbox还要再次遍历里面的控件,转换嵌套太多,多人使用时,不会影响效率吧?[/quote] 又不是密集计算,15年以来的处理器都不要考虑效率问题。
天行归来 2018-05-25
  • 打赏
  • 举报
回复
应该遵循谁用谁
引用 10 楼 leavesguth 的回复:
太复杂了,脑袋不够用,真希望以后的智能化开发语言有这样的功能代码: begin close this page; initialize this page all control; close this page all ADO; end; 然后一切搞定,哈哈哈
你的设计可能有点问题,如果每个TGroupBox里头签入Frame,每个frame可以自己负责资源申请,资源释放,或者提供统一接口供其他模块总调度,就不会这么复杂。
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
引用 11 楼 lynmison 的回复:
应该遵循谁用谁 你的设计可能有点问题,如果每个TGroupBox里头签入Frame,每个frame可以自己负责资源申请,资源释放,或者提供统一接口供其他模块总调度,就不会这么复杂。
我也想搞得好一点,可惜我能力有限,搞成这样已经使了洪荒之力了,哈哈哈
引用 12 楼 DelphiGuy 的回复:
又不是密集计算,15年以来的处理器都不要考虑效率问题。
那我就放心了,哈哈
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
太复杂了,脑袋不够用,真希望以后的智能化开发语言有这样的功能代码: begin close this page; initialize this page all control; close this page all ADO; end; 然后一切搞定,哈哈哈
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
引用 8 楼 DelphiGuy 的回复:
语法上是没有问题的,实际运行可能有问题。 PageControl1.Pages[index].Controls[i] as TGroupBox有点风险,应该也先用is判断一下
嗯,这是已经 if is 判断的循环里的其中一条一句,对各种控件的判断、ado、table、keypreview,如果是groupbox还要再次遍历里面的控件,转换嵌套太多,多人使用时,不会影响效率吧?
  • 打赏
  • 举报
回复
语法上是没有问题的,实际运行可能有问题。 PageControl1.Pages[index].Controls[i] as TGroupBox有点风险,应该也先用is判断一下
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
转换太多了,我想知道这么多次的转换有什么问题吗? if ((PageControl1.Pages[index].Controls[i] as TGroupBox) .Controls[ig] is TDBGridEh) then if ((PageControl1.Pages[index].Controls[i] as TGroupBox) .Controls[ig] as TDBGridEh).DataSource.DataSet is TADOTable then (((PageControl1.Pages[index].Controls[i] as TGroupBox) .Controls[ig] as TDBGridEh).DataSource.DataSet as TADOTable) .LockType := ltOptimistic;
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
不过,我还是很好奇: 如何将dbgridEh.datasource.dataset的locktype 用代码设置为ltbatchoptimistic?
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
引用 4 楼 georgeye 的回复:
可以强制转换一下 (dbgridEh.datasource.dataset as TADOQuery).LockType
哈哈,脑袋真是木了,光想着如何设置locktype了,忘了还有强制转换,问题解决了,多谢
无聊的猪 2018-05-25
  • 打赏
  • 举报
回复
可以强制转换一下 (dbgridEh.datasource.dataset as TADOQuery).LockType
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
引用 2 楼 DelphiGuy 的回复:
Delphi中的对象是引用类型,所以可以直接用=判断: if DBGrideh1.DataSource.DataSet = ADOQuery1 then ...
我是做了一个页面关闭的过程,统一调用关闭不同页面时,判断激活页面上的控件然后初始化,而ADo是在DM上的,发现DBGRIDEH可以通过DataSource.DataSet关联,进而设置页面使用的ADO的locktype为某一个状态。 也不能在dm上遍历激活的ADO,因为可能有几个页面打开,而误关闭ADO。 这种判断也能实现,就是要每次都送一个dbgrideh(n)过去,不是太通用
  • 打赏
  • 举报
回复
Delphi中的对象是引用类型,所以可以直接用=判断: if DBGrideh1.DataSource.DataSet = ADOQuery1 then ...
秋天之落叶 2018-05-25
  • 打赏
  • 举报
回复
或者 如何判定tabsheet页面上的DBgrideh关联的是哪一个ADOquery? 或者 如何判定button里用的是哪一个ADOquery? 总之是这一类问题,有办法解决吗?

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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