以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按钮代码求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=5609)

--  作者:wqc360
--  发布时间:2009/12/23 15:33:00
--  按钮代码求助
质量日记录表有质量记录窗口,窗口有日期(日期输入框)控件,另有一填充按钮,按钮代码如下:
Dim d As Date = Forms("质量记录").Controls("日期").Value
Dim drs As List(Of DataRow) = DataTables("员工档案").Select("[在岗情况] = \'在岗\'")
For Each dr1 As Datarow In drs
    Dim dr As DataRow = DataTables("质量日记录").Find("姓名 = \'" & dr1("姓名") & "\' And 日期 = \'" & d & "\'")
    if dr Is Nothing Then
        Dim dr2 As DataRow = DataTables("质量日记录").AddNew()
        dr2("日期") = d
        dr2("姓名") = dr1("姓名")
    End If
Next

在质量日记录表中,有年月列,其靠日期列得出,代码如下:
if e.datacol.name = "日期"
    e.datarow("年月") = format(e.datarow("日期"),"yyyy年MM月")
end if
我想按钮代码加上条件:日期控件得出一年月变量代码,此变量与质量日记录表中年月列比较,有,则不填充
Dim d As Date = Forms("质量记录").Controls("日期").Value
Dim drs As List(Of DataRow) = DataTables("员工档案").Select("[在岗情况] = \'在岗\'")
Dim drs1 As string=??????
For Each dr1 As Datarow In drs
    Dim dr As DataRow = DataTables("质量日记录").Find("姓名 = \'" & dr1("姓名") & "\' And 日期 = \'" & d & "\'  And 年月 = \'" & drs1 & "\' ")
    if dr Is Nothing Then
        Dim dr2 As DataRow = DataTables("质量日记录").AddNew()
        dr2("日期") = d
        dr2("姓名") = dr1("姓名")
    End If
Next
代码是否如以上,求问号怎么写,橘黄色能否删掉



--  作者:czy
--  发布时间:2009/12/23 15:45:00
--  
……
Dim dr As DataRow = DataTables("质量日记录").Find("姓名 = \'" & dr1("姓名") & "\' And 日期 = \'" & d & "\'  And 年月 <> \'" & drs1 & "\' ")
……

这样不行吗?

--  作者:wqc360
--  发布时间:2009/12/23 15:50:00
--  
Dim drs1 As string=??????代码怎么写
还有为什么要用<> ,而不用=呢
--  作者:czy
--  发布时间:2009/12/23 16:07:00
--  
我想你应该是想这样吧。

Dim d As Date = Forms("质量记录").Controls("日期").Value
Dim drs As List(Of DataRow) = DataTables("员工档案").Select("[在岗情况] = \'在岗\'")
For Each dr1 As Datarow In drs
    Dim dr As DataRow = DataTables("质量日记录").Find("姓名 = \'" & dr1("姓名") & "\' And 年月 = \'" & dr1("年月") & "\'")
    if dr Is Nothing Then
        Dim dr2 As DataRow = DataTables("质量日记录").AddNew()
        dr2("日期") = d
        dr2("姓名") = dr1("姓名")
    End If
Next

--  作者:wqc360
--  发布时间:2009/12/23 16:11:00
--  按钮代码求助
不行,会报错,目的是一个月填充一次。请见示范文件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目11.table

[此贴子已经被作者于2009-12-23 16:11:06编辑过]

--  作者:wqc360
--  发布时间:2009/12/23 16:31:00
--  按钮代码求助
日期控件我改成组合框,按钮代码我这样达到目的了:谢谢C版
Dim Values As String() = {"日期"}
For Each Va as string In Values
    with e.form
        if .Controls(va).value Is Nothing then
            MessageBox.Show(va &" 资料不全,请录入!", "提示")
        end if
    end with
Next
Dim d As string = Forms("质量记录").Controls("日期").Value
Dim d1 As Date = Forms("质量记录").Controls("日期").Value
Dim drs As List(Of DataRow) = DataTables("员工档案").Select("[在岗情况] = \'在岗\'")
For Each dr1 As Datarow In drs
    Dim dr As DataRow = DataTables("质量日记录").Find("姓名 = \'" & dr1("姓名") & "\' And 年月 = \'" & d & "\'")
    if dr Is Nothing Then
        Dim dr2 As DataRow = DataTables("质量日记录").AddNew()
        dr2("日期") = d1
        dr2("年月") = d
        dr2("姓名") = dr1("姓名")
    End If
Next
[此贴子已经被作者于2009-12-23 16:32:16编辑过]

--  作者:czy
--  发布时间:2009/12/23 16:36:00
--  
你应该早点上传文件。
DataColChanged事件可以取消。


Dim d As Date = Forms("质量记录").Controls("日期").Value
Dim drs As List(Of DataRow) = DataTables("员工档案").Select("[在岗情况] = \'在岗\'")
For Each dr1 As Datarow In drs
    Dim dr As DataRow = DataTables("质量日记录").Find("姓名 = \'" & dr1("姓名") & "\' And 年月 = \'" & Format(d,"y") & "\'")
    if dr Is Nothing Then
        Dim dr2 As DataRow = DataTables("质量日记录").AddNew()
        dr2("日期") = d
        dr2("年月") = Format(d,"y")
        dr2("姓名") = dr1("姓名")
    End If
Next

--  作者:wqc360
--  发布时间:2009/12/23 16:57:00
--  
谢谢出版,比我那个好多了