社区
Delphi
帖子详情
dbgrid怎么获取当前记录值?
javagxc
2010-05-17 04:29:29
我用DBGrid,ADODataSet和DataSourse三个组件读取数据库的一个表,
数据读出来了,现在想实现如下功能:
可以任意编辑表格内的任意记录,当光标离开这条记录时,获取当前记录的值,并把这条记录发送(TCP/UDP)到另外一个程序。
该怎么获取dbgrid中当前记录的值啊,用什么事件啊。菜鸟发问,请大虾帮忙,不胜感激!
...全文
891
20
打赏
收藏
dbgrid怎么获取当前记录值?
我用DBGrid,ADODataSet和DataSourse三个组件读取数据库的一个表, 数据读出来了,现在想实现如下功能: 可以任意编辑表格内的任意记录,当光标离开这条记录时,获取当前记录的值,并把这条记录发送(TCP/UDP)到另外一个程序。 该怎么获取dbgrid中当前记录的值啊,用什么事件啊。菜鸟发问,请大虾帮忙,不胜感激!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
javagxc
2010-05-20
打赏
举报
回复
最后的问题没解决呢,帖子老沉,结贴给分吧,谢谢大家啦
javagxc
2010-05-19
打赏
举报
回复
等待高人中......
scfanxzq
2010-05-19
打赏
举报
回复
[Quote=引用 16 楼 javagxc 的回复:]
当前值已经可以获取,获取方法如下:
DBGrid1.DataSource.Dataset.Fields[dbgrid1.Columns.Grid.SelectedIndex].AsString;
目前面临的最后一个问题是,我想光标离开的时候获取这个值,不管这个值有没有编辑过,要用什么事件啊
用oncolexit只能解决在同一行切换光标的问题,如果光标在不同行的同一列切换就失去作用了。……
[/Quote]
换一种思路:
准备条件:定义两个全局变量,并且在窗口创建期初始化。
1、当单元格点击的时候(OnCellClick),判断当前的列值和其中一个全局变量是否一致,判断当前的数据记录的值和另一个全局变量是否一致。
2、如果不一致,判断全局变量是否是初始值,如果是初始值,那么把当前的列和记录的值分别赋给两个全局变量。如果不是初始值,说明单元格已经改变,那么把全局变量作为你要的数据保存起来供后面使用。
3、把全局变量修改为当前的列和记录值。
scfanxzq
2010-05-19
打赏
举报
回复
你的绑定方法是不是这样的?
DBGrid->DataSoure->Query(Table)?
那不用考虑什么当前行了,你在dbGrid里面的onCellChange这之类的事件里面,直接写
Query(Table).fieldbyname('字段名').asstring;(……)
如果要深究的话,就是当你在DBGrid中选中一行的时候,数据集中的浮标就已经指到了数据集对应的行中,所以你不用做任何查找或者移动浮标的操作,直接取数据集中字段的值就可以了。
把你要的字段的值取出来之后,保存到变量里面,发送就ok
andylist
2010-05-18
打赏
举报
回复
说得好像很深澳,事实上DataSource好像早有此功能。
xjq2003
2010-05-18
打赏
举报
回复
[Quote=引用 4 楼 bdmh 的回复:]
这根grid无关,当你选中一条记录时,数据集就定位到这条数据上了,你只需要读取数据集中的数据就行了
[/Quote]
edit1.text:=dbgrid.datasource.dataset.fieldbyname('字段').asString;
huangheguyun
2010-05-18
打赏
举报
回复
直接读取数据集中的数据
javagxc
2010-05-18
打赏
举报
回复
[Quote=引用 4 楼 bdmh 的回复:]
这根grid无关,当你选中一条记录时,数据集就定位到这条数据上了,你只需要读取数据集中的数据就行了
[/Quote]
要怎么读取呢?我是菜鸟!
javagxc
2010-05-18
打赏
举报
回复
[Quote=引用 7 楼 hongss 的回复:]
你总要确定下,你要的是哪里的“当前值”吧?
你用什么操作去取“当前值”?鼠标点?
[/Quote]
鼠标点或者->、<-都可以的。
javagxc
2010-05-18
打赏
举报
回复
当前值已经可以获取,获取方法如下:
DBGrid1.DataSource.Dataset.Fields[dbgrid1.Columns.Grid.SelectedIndex].AsString;
目前面临的最后一个问题是,我想光标离开的时候获取这个值,不管这个值有没有编辑过,要用什么事件啊
用oncolexit只能解决在同一行切换光标的问题,如果光标在不同行的同一列切换就失去作用了。用什么控件可以行列切换时都能获取值啊。
贝隆
2010-05-17
打赏
举报
回复
学习
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
zrssweet
2010-05-17
打赏
举报
回复
读取数据集中的数据就行了
wxf999
2010-05-17
打赏
举报
回复
[Quote=引用 4 楼 bdmh 的回复:]
这根grid无关,当你选中一条记录时,数据集就定位到这条数据上了,你只需要读取数据集中的数据就行了
[/Quote]
是的,直接读取数据集
hongss
2010-05-17
打赏
举报
回复
你总要确定下,你要的是哪里的“当前值”吧?
你用什么操作去取“当前值”?鼠标点?
javagxc
2010-05-17
打赏
举报
回复
我想获取的值,可以是任意行任意列的,不能固定取哪一列啊,我取的时候还要判断我当前值在哪一列吗?
hongss
2010-05-17
打赏
举报
回复
你要的是鼠标点击那里的当前值?
比如
DBGrid1.SelectedField.DataSet.FieldValues['Date'];
bdmh
2010-05-17
打赏
举报
回复
这根grid无关,当你选中一条记录时,数据集就定位到这条数据上了,你只需要读取数据集中的数据就行了
guanking
2010-05-17
打赏
举报
回复
DataSource1的DataChange事件中处理
显示dbgrid当前记录的字段值。
DBGrid1.Datasource.Dataset.Fields[0].AsString //当前记录第一个字段值
DBGrid1.Datasource.Dataset.Fields[1].AsString //当前记录第二个字段值
DBGrid1.Datasource.Dataset.Fields[2].AsString //当前记录第三个字段值
。。。
DBGrid1.Datasource.Dataset.Fields[n].AsString //当前记录第n个字段值
winstonbonaparte
2010-05-17
打赏
举报
回复
onCellClick事件或是onkeypress事件都可以判斷的
varick_zhong
2010-05-17
打赏
举报
回复
onmousemove事件
DB
Grid
导出Excel
Delphi中
DB
Grid
导出到Excel权威代码。
BCB刷新
DB
grid
不换行
BCB 刷新
db
grid
列表 不换行
delphi
db
grid
有条件合并单元格
db
grid
eh 实现有条件合并单元格的例子 内含修改的
db
grid
eh 4.2控件
实现
db
grid
中添加checkbox
在
db
grid
中实现checkbox,同时附带的实现formdate的使用,和datetime的使用。仅仅是一个小例子
db
grid
加checkbox的例子
db
grid
加checkbox的例子,添加复选框修改其他
Delphi
5,916
社区成员
262,929
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章