以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  错在哪里?!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=19870)

--  作者:luohanyuluo
--  发布时间:2012/5/23 18:51:00
--  错在哪里?!

紧急求助,谢谢!!!

Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("值班表")
If e.DataCol.Name = "姓名" And dr.IsNull("姓名") = False And dt("日期") >= #2012-05-01# And dt("日期") <= #2012-05-31# Then
                                                                            类“DataTable” 没有默认属性,因此无法被索引。为什么此处不能用dt(“日期”)该如何改?!

 

    \'星期一至星期五:[节假日]=False
    dr("星期一") = dt.Compute("Count(正班)", "[星期] = \'星期一\' And [正班] = \'" & dr("姓名") & "\'and [节假日]=false" )
    dr("星期二") = dt.Compute("Count(正班)", "[星期] = \'星期二\' And [正班] = \'" & dr("姓名") & "\'and [节假日]=false" )
    dr("星期三") = dt.Compute("Count(正班)", "[星期] = \'星期三\' And [正班] = \'" & dr("姓名") & "\'and [节假日]=false" )
    dr("星期四") = dt.Compute("Count(正班)", "[星期] = \'星期四\' And [正班] = \'" & dr("姓名") & "\'and [节假日]=false" )
    \'如果星期六或星期日照常上班,则将其作为平班,加到星期五上
    dr("星期五") = dt.Compute("Count(正班)", "[星期] = \'星期五\' And [正班] = \'" & dr("姓名") & "\'and [节假日]=false" ) + dt.Compute("Count(正班)", "[星期] = \'星期六\' And [正班] = \'" & dr("姓名") & "\'and [副班]<>\'\' And [节假日]=false" ) + dt.Compute("Count(正班)", "[星期] = \'星期日\' And [正班] = \'" & dr("姓名") & "\'and [副班]<>\'\' And [节假日]=false" )
    \'星期六,日的记录数:[副班]为空且[节假日]为False
    dr("星期六") = dt.Compute("Count(正班)", "[星期] = \'星期六\' And [正班] = \'" & dr("姓名") & "\'and [副班] Is Null and [节假日]=false" )
    dr("星期日") = dt.Compute("Count(正班)", "[星期] = \'星期日\' And [正班] = \'" & dr("姓名") & "\'and [副班] Is Null and [节假日]=false" )
    dr("节假日") = dt.Compute("Count(正班)", "[正班] = \'" & dr("姓名") & "\' and [节假日] = True" )
    dr("副班") = dt.Compute("Count(正班)", "[副班] = \'" & dr("姓名") & "\'" )
End If


--  作者:yan2006l
--  发布时间:2012/5/23 19:03:00
--  
dt("日期")改成dr("日期")
--  作者:luohanyuluo
--  发布时间:2012/5/23 19:08:00
--  
以下是引用yan2006l在2012-5-23 19:03:00的发言:
dt("日期")改成dr("日期")

非常谢谢,但当前表 即dr中没有日期字段,我是要引用“值班表”中的日期字段(列)。


--  作者:yan2006l
--  发布时间:2012/5/23 19:18:00
--  

dt("日期")改成dt.datarows(这里自己输入第几行)("日期")

比如你日期在表中第一行。那就是dt.datarows(0)("日期")


--  作者:mr725
--  发布时间:2012/5/23 19:43:00
--  

Dim dr1 As DataRow =DataTables("值班表").Find("日期 = #" & e.Datarow("日期") & "# "

再这样 :

dr1("日期") >= #2012-05-01# And dr1("日期") <= #2012-05-31#

[此贴子已经被作者于2012-5-23 20:32:50编辑过]

--  作者:luohanyuluo
--  发布时间:2012/5/23 19:44:00
--  
以下是引用yan2006l在2012-5-23 19:18:00的发言:

dt("日期")改成dt.datarows(这里自己输入第几行)("日期")

比如你日期在表中第一行。那就是dt.datarows(0)("日期")

再次深表感谢,编译通过了,但 dt.DataRows(0)("日期") >= #5/1/2012# And dt.DataRows(0)("日期") <= #5/31/2012# 没能起到先筛选出5月份,再统计的目的,为何?!

[此贴子已经被作者于2012-5-23 19:44:46编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/5/23 19:53:00
--  

你这段代码的意思是什么,我都看糊涂了。

最好配合例子提问,并说明设计目的。


--  作者:yan2006l
--  发布时间:2012/5/23 19:54:00
--  

因为你的代码的意思是:如果符合条件就执行后面的代码,而后面的代码你本来就没有设置筛选条件啊。所以你本身思路就有问题,那个如果那边根本就不用设时间条件,而是在后面的Compute的()里面设置时间条件


--  作者:程兴刚
--  发布时间:2012/5/23 19:56:00
--  

Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("值班表")

Dim r As row =Tables("值班表").Current
If e.DataCol.Name = "姓名" And dr.IsNull("姓名") = False and
dt("日期") >= #2012-05-01# And r("日期") <= #2012-05-31# Then
…………


--  作者:mr725
--  发布时间:2012/5/23 20:36:00
--  
以下是引用程兴刚在2012-5-23 19:56:00的发言:

Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("值班表")

Dim r As row =Tables("值班表").Current
If e.DataCol.Name = "姓名" And dr.IsNull("姓名") = False and dt("日期") 
>= #2012-05-01# And r("日期") <= #2012-05-31# Then
…………

dt("日期")        笔误吧:  》    r("日期")