datagrid表头的序号在筛选后就乱了,怎么重新生成呢?
NO Tester ID Cell ID Group Mode Yield
1 6084 01 S11 J1B 25%
2 6083 02 S12 J1B 5%
3 6082 03 S13 J1B 45%
4 6081 04 S21 J1B 21%
5 6080 05 S12 J1B 33%
筛选后就变成了
NO Tester ID Cell ID Group Mode Yield
1 6084 01 S11 J1B 25%
2 6083 02 S12 J1B 5%
3 6082 03 S13 J1B 45%
5 6080 05 S12 J1B 33%
我想让它自动编号为:
NO Tester ID Cell ID Group Mode Yield
1 6084 01 S11 J1B 25%
2 6083 02 S12 J1B 5%
3 6082 03 S13 J1B 45%
4 6080 05 S12 J1B 33%
该如何实现?
问题二:
统计出Group列下S1的记录个数显示到Label1中,请各位高手帮忙解答.
13 个解决方案
#1
不是乱了,是排除了不符合条件的记录后自动序号不连续了。
如果你一定要一个连续显示的序号,就需要增加一个字段,在筛选后逐个记录改写这个字段为连续的编号。然后再 ReQuery。当然了,你查询的时候,也去掉原来的自动序号字段,加上这个新字段,也就是说不能用 * 号了。
如果你一定要一个连续显示的序号,就需要增加一个字段,在筛选后逐个记录改写这个字段为连续的编号。然后再 ReQuery。当然了,你查询的时候,也去掉原来的自动序号字段,加上这个新字段,也就是说不能用 * 号了。
#2
如果你要用上面的方式逐个记录改写编号,那当然就知道记录数了。
否则:
ADODC2.Recordset.MoveLast
ADODC2.Recordset.MoveFirst
Label1.Caption = ADODC2.Recordset.RecordCount
否则:
ADODC2.Recordset.MoveLast
ADODC2.Recordset.MoveFirst
Label1.Caption = ADODC2.Recordset.RecordCount
#3
楼上的解答:
Label1.Caption = ADODC2.Recordset.RecordCount
不能解决我的问题,
如果我需要统计datagrid2中的"S1"记录数量呢?
NO Tester ID Cell ID Group Mode Yield
1 6084 01 S11 J1B 25%
2 6083 02 S12 J1B 5%
3 6082 03 S13 J1B 45%
4 6081 04 S21 J1B 21%
5 6080 05 S12 J1B 33%
Label1.Caption = ADODC2.Recordset.RecordCount
不能解决我的问题,
如果我需要统计datagrid2中的"S1"记录数量呢?
NO Tester ID Cell ID Group Mode Yield
1 6084 01 S11 J1B 25%
2 6083 02 S12 J1B 5%
3 6082 03 S13 J1B 45%
4 6081 04 S21 J1B 21%
5 6080 05 S12 J1B 33%
#4
你是说Group=S1的记录数?
那sql语句就是:select count(*) as 记录数 from AllZone where [group] = 'S1'
如果是S1打头的记录数:select count(*) as 记录数 from AllZone where [group] like 'S1%'
如果是含有S1的记录数:select count(*) as 记录数 from AllZone where [group] like '%S1%'
以上结果中的【记录数】就是你要的结果。
如果是绑定给了Adodc2,那就这个记录数的值就是:ADODC2.Recordset!记录数
#5
#6
select 序号= IDENTITY(INT,1,1),
a.Tester ID,
a.Cell ID,
a.Group,
a.Mode,
a.Yield
into #temp
from AllZone where [group] like 'S1%'
go
select * from #temp
go
drop table #temp
go
楼上的code我加了个文字特效,显示不对,用这个。
#7
楼主,你问题二的前提不是下面这段代码吗:
Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\mdb.mdb;Persist Security Info=False"
Adodc2.CommandType = adCmdText
Adodc2.RecordSource = "select * from AllZone where [group] like 'S1%'"
Set DataGrid2.DataSource = Adodc2
datagrid2.columns(5).numberformat="#0%"
后面加上
ADODC2.Recordset.MoveLast
ADODC2.Recordset.MoveFirst
Label1.Caption = ADODC2.Recordset.RecordCount
得到的就是你需要的记录数。
如果你的条件改变了,方法当然也要变。这要看你的需求究竟是什么了。
Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\mdb.mdb;Persist Security Info=False"
Adodc2.CommandType = adCmdText
Adodc2.RecordSource = "select * from AllZone where [group] like 'S1%'"
Set DataGrid2.DataSource = Adodc2
datagrid2.columns(5).numberformat="#0%"
后面加上
ADODC2.Recordset.MoveLast
ADODC2.Recordset.MoveFirst
Label1.Caption = ADODC2.Recordset.RecordCount
得到的就是你需要的记录数。
如果你的条件改变了,方法当然也要变。这要看你的需求究竟是什么了。
#8
如果你的sql是2005以上,上面的查询语句还可进一步简化成:
另外字段名称别在中间加空格,比如你的Cell ID字段,写成Cell_ID较妥当。
select RANK() OVER (ORDER BY Cell ID ) AS 序号,
Tester ID,
Cell ID,
Group,
Mode,
Yield
from AllZone where [group] like 'S1%'
另外字段名称别在中间加空格,比如你的Cell ID字段,写成Cell_ID较妥当。
#9
首先,谢谢你的耐心解答!
我用的是Access 2003,没有用SQL,应怎么做呢?
#10
of123:
不好意思,可能是我的问题没有描述清楚,现重新说明如下:
我的最终目的是:
with datagrid1
.row=0
.col=3
.text= datagrid5中的group=S1%记录数量
end with
with datagrid1
.row=1
.col=3
.text= datagrid5中的group=S2%记录数量
end with
红色字体部分不知如何写代码了,请帮忙,谢谢!
不好意思,可能是我的问题没有描述清楚,现重新说明如下:
我的最终目的是:
with datagrid1
.row=0
.col=3
.text= datagrid5中的group=S1%记录数量
end with
with datagrid1
.row=1
.col=3
.text= datagrid5中的group=S2%记录数量
end with
红色字体部分不知如何写代码了,请帮忙,谢谢!
#11
另外做一个查询:
Select Left([Group], 2) As Sub_Group, Count([NO]) As Num_Rec From AllZone Group By Left([Group], 2) Order By Left([Group], 2)
这样可以得到一个记录集:
S1, xx
S2, yy
...
实际上方法很多,看怎样适合你的操作过程。
Select Left([Group], 2) As Sub_Group, Count([NO]) As Num_Rec From AllZone Group By Left([Group], 2) Order By Left([Group], 2)
这样可以得到一个记录集:
S1, xx
S2, yy
...
实际上方法很多,看怎样适合你的操作过程。
#12
of123:
谢谢您!
我想要得到的结果就是10楼的描述,我试了11楼的做法,但如何保存和读取这个记录集呢?
由于我对数据库也是刚刚开始入手,很多地方都还不知道,属于那种边做边学习的.
请详细说明一下具体的做法吗?如有VB code那是最好不过了.
谢谢您!
我想要得到的结果就是10楼的描述,我试了11楼的做法,但如何保存和读取这个记录集呢?
由于我对数据库也是刚刚开始入手,很多地方都还不知道,属于那种边做边学习的.
请详细说明一下具体的做法吗?如有VB code那是最好不过了.
#13
各位高手请帮忙解决一下,急呀!
#1
不是乱了,是排除了不符合条件的记录后自动序号不连续了。
如果你一定要一个连续显示的序号,就需要增加一个字段,在筛选后逐个记录改写这个字段为连续的编号。然后再 ReQuery。当然了,你查询的时候,也去掉原来的自动序号字段,加上这个新字段,也就是说不能用 * 号了。
如果你一定要一个连续显示的序号,就需要增加一个字段,在筛选后逐个记录改写这个字段为连续的编号。然后再 ReQuery。当然了,你查询的时候,也去掉原来的自动序号字段,加上这个新字段,也就是说不能用 * 号了。
#2
如果你要用上面的方式逐个记录改写编号,那当然就知道记录数了。
否则:
ADODC2.Recordset.MoveLast
ADODC2.Recordset.MoveFirst
Label1.Caption = ADODC2.Recordset.RecordCount
否则:
ADODC2.Recordset.MoveLast
ADODC2.Recordset.MoveFirst
Label1.Caption = ADODC2.Recordset.RecordCount
#3
楼上的解答:
Label1.Caption = ADODC2.Recordset.RecordCount
不能解决我的问题,
如果我需要统计datagrid2中的"S1"记录数量呢?
NO Tester ID Cell ID Group Mode Yield
1 6084 01 S11 J1B 25%
2 6083 02 S12 J1B 5%
3 6082 03 S13 J1B 45%
4 6081 04 S21 J1B 21%
5 6080 05 S12 J1B 33%
Label1.Caption = ADODC2.Recordset.RecordCount
不能解决我的问题,
如果我需要统计datagrid2中的"S1"记录数量呢?
NO Tester ID Cell ID Group Mode Yield
1 6084 01 S11 J1B 25%
2 6083 02 S12 J1B 5%
3 6082 03 S13 J1B 45%
4 6081 04 S21 J1B 21%
5 6080 05 S12 J1B 33%
#4
你是说Group=S1的记录数?
那sql语句就是:select count(*) as 记录数 from AllZone where [group] = 'S1'
如果是S1打头的记录数:select count(*) as 记录数 from AllZone where [group] like 'S1%'
如果是含有S1的记录数:select count(*) as 记录数 from AllZone where [group] like '%S1%'
以上结果中的【记录数】就是你要的结果。
如果是绑定给了Adodc2,那就这个记录数的值就是:ADODC2.Recordset!记录数
#5
#6
select 序号= IDENTITY(INT,1,1),
a.Tester ID,
a.Cell ID,
a.Group,
a.Mode,
a.Yield
into #temp
from AllZone where [group] like 'S1%'
go
select * from #temp
go
drop table #temp
go
楼上的code我加了个文字特效,显示不对,用这个。
#7
楼主,你问题二的前提不是下面这段代码吗:
Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\mdb.mdb;Persist Security Info=False"
Adodc2.CommandType = adCmdText
Adodc2.RecordSource = "select * from AllZone where [group] like 'S1%'"
Set DataGrid2.DataSource = Adodc2
datagrid2.columns(5).numberformat="#0%"
后面加上
ADODC2.Recordset.MoveLast
ADODC2.Recordset.MoveFirst
Label1.Caption = ADODC2.Recordset.RecordCount
得到的就是你需要的记录数。
如果你的条件改变了,方法当然也要变。这要看你的需求究竟是什么了。
Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\mdb.mdb;Persist Security Info=False"
Adodc2.CommandType = adCmdText
Adodc2.RecordSource = "select * from AllZone where [group] like 'S1%'"
Set DataGrid2.DataSource = Adodc2
datagrid2.columns(5).numberformat="#0%"
后面加上
ADODC2.Recordset.MoveLast
ADODC2.Recordset.MoveFirst
Label1.Caption = ADODC2.Recordset.RecordCount
得到的就是你需要的记录数。
如果你的条件改变了,方法当然也要变。这要看你的需求究竟是什么了。
#8
如果你的sql是2005以上,上面的查询语句还可进一步简化成:
另外字段名称别在中间加空格,比如你的Cell ID字段,写成Cell_ID较妥当。
select RANK() OVER (ORDER BY Cell ID ) AS 序号,
Tester ID,
Cell ID,
Group,
Mode,
Yield
from AllZone where [group] like 'S1%'
另外字段名称别在中间加空格,比如你的Cell ID字段,写成Cell_ID较妥当。
#9
首先,谢谢你的耐心解答!
我用的是Access 2003,没有用SQL,应怎么做呢?
#10
of123:
不好意思,可能是我的问题没有描述清楚,现重新说明如下:
我的最终目的是:
with datagrid1
.row=0
.col=3
.text= datagrid5中的group=S1%记录数量
end with
with datagrid1
.row=1
.col=3
.text= datagrid5中的group=S2%记录数量
end with
红色字体部分不知如何写代码了,请帮忙,谢谢!
不好意思,可能是我的问题没有描述清楚,现重新说明如下:
我的最终目的是:
with datagrid1
.row=0
.col=3
.text= datagrid5中的group=S1%记录数量
end with
with datagrid1
.row=1
.col=3
.text= datagrid5中的group=S2%记录数量
end with
红色字体部分不知如何写代码了,请帮忙,谢谢!
#11
另外做一个查询:
Select Left([Group], 2) As Sub_Group, Count([NO]) As Num_Rec From AllZone Group By Left([Group], 2) Order By Left([Group], 2)
这样可以得到一个记录集:
S1, xx
S2, yy
...
实际上方法很多,看怎样适合你的操作过程。
Select Left([Group], 2) As Sub_Group, Count([NO]) As Num_Rec From AllZone Group By Left([Group], 2) Order By Left([Group], 2)
这样可以得到一个记录集:
S1, xx
S2, yy
...
实际上方法很多,看怎样适合你的操作过程。
#12
of123:
谢谢您!
我想要得到的结果就是10楼的描述,我试了11楼的做法,但如何保存和读取这个记录集呢?
由于我对数据库也是刚刚开始入手,很多地方都还不知道,属于那种边做边学习的.
请详细说明一下具体的做法吗?如有VB code那是最好不过了.
谢谢您!
我想要得到的结果就是10楼的描述,我试了11楼的做法,但如何保存和读取这个记录集呢?
由于我对数据库也是刚刚开始入手,很多地方都还不知道,属于那种边做边学习的.
请详细说明一下具体的做法吗?如有VB code那是最好不过了.
#13
各位高手请帮忙解决一下,急呀!