Foxtable(狐表)用户栏目专家坐堂 → [求助]循环语句求教,继续求解


  共有2610人关注过本帖树形打印复制链接

主题:[求助]循环语句求教,继续求解

帅哥哟,离线,有人找我吗?
cqlwsam
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
[求助]循环语句求教,继续求解  发帖心情 Post By:2015/8/19 12:15:00 [只看该作者]

排班表中有三列,分别是上午、下午、病房值班。现需要分别进行判断,如果“上午”或“下午”列中无值或者“夜班值班”列全部为false,则提示“排班未完成”。如果所有的“上午”及“下午”列全部不为空,且“夜班值班”列至少有一个是“true”,则提示“排班完成” 循环语句怎么弄呀。谢谢!

For Each dr As DataRow In DataTables("医生排班表").DataRows
                    If dr("上午") Is Nothing OrElse dr("下午") Is Nothing OrElse dr("病房夜班") = False Then
                        Exit For
                    End If
messagebox.show("排班未完成")
                Next

[此贴子已经被作者于2015/8/19 15:51:11编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2015/8/19 14:11:00 [只看该作者]

谢谢,哪位大侠帮我看看!

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/19 14:31:00 [只看该作者]

Dim fdr1 As DataRow = DataTables("医生排班表").find("病房夜班 = true")
Dim fdr2 As DataRow = DataTables("医生排班表").find("上午 is null or 下午 is null")
If fdr1 IsNot Nothing AndAlso fdr2 Is Nothing Then
    msgbox("排班完成")
Else
    msgbox("排班未完成")
End If

 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2015/8/19 15:51:00 [只看该作者]

实际上我是想在窗口"排班窗口"左边的小日历中实现这样的功能(限当月):
1. 已完成排班,是一种颜色在相应的单元格中标示(没有实现);
2.如果没排班,用另外的颜色标示;
3.如果排班未完成,则用另外一种颜色。

现在已经实现部分功能,但出现了只要鼠标移到小日历中的某个单元格,就老闪,有没有折中的方法。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:54321.table


 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1014 积分:7535 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2015/8/19 15:55:00 [只看该作者]

 Dim t As Table = Tables("医生排班表")
            t.Filter="日期=#" & MyDate & "#"
            Dim ys As String = t.DataTable.GetComboListString("医生姓名", t.Filter)
            Dim drs As List (of DataRow) = DataTables("医生名单").Select("医生姓名 not in ('" & ys.Replace("|", "','") & "')")
            If drs.count > 0 Then
                e.Graphics.FillRectangle(BJ_排班未完成,单元格)
            Else
                Dim fdr1 As DataRow = DataTables("医生排班表").find("病房夜班 = 'true'")
                Dim fdr2 As DataRow = DataTables("医生排班表").find("上午 is null or 下午 is null")
                If fdr1 IsNot Nothing AndAlso fdr2 Is Nothing Then
                    '                  e.Graphics.FillRectangle(BJ_排班完成,单元格)
                    MessageBox.Show("排本玩")
                Else
                    e.Graphics.FillRectangle(BJ_排班未完成,单元格)
                End If


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/19 16:22:00 [只看该作者]

drawcell事件

 

If e.Form.Controls("BL_日历_当前选择年月").text = "" Then Return
Dim Fnt As Font = New Font("微软雅黑",9)
Dim Fnt1 As Font = New Font("微软雅黑",5)
If  e.Form.Width > 300  Then
    Fnt1 = New Font("微软雅黑",7)
End If
Dim MyMonth =CDate(e.Form.Controls("BL_日历_当前选择年月").text).Month
Dim points(1) As Point
points(0) = New Point(e.x,e.y)
points(1) = New Point(e.x , (e.y + e.Height))
Dim BJ_标题 As New LinearGradientBrush(points(0),points(1),Color.MediumSpringGreen,Color.SeaGreen)   '封装标题栏的背景的渐变色
If e.Row.Index = 0 Then   '绘制标题
    e.Graphics.FillRectangle(BJ_标题,New Rectangle(e.X,e.Y,e.Width,e.Height))
End If
If  e.Row.Index > 0 Then  '非标题
    Dim x,y As Integer
    Dim MyText As String = e.Text
    Dim MyDate As Date
    If (Date.TryParse(MyText,MyDate))  '如果文本可以转为日期
        Dim ZT_当月 As SolidBrush = New SolidBrush(Color.Black)
        Dim ZT_非当月 As SolidBrush = New SolidBrush(Color.OliveDrab)
        Dim BJ_非当月 As SolidBrush = New SolidBrush(Color.DarkGray)
        Dim BJ_当月 As New LinearGradientBrush(points(0),points(1),Color.LightBLue,Color.LightCyan)   '封装当月日期背景的渐变色
        Dim BJ_今天 As New LinearGradientBrush(points(0),points(1),Color.plum,Color.MediumOrchid)   '封装当月日期背景的渐变色
        Dim Int_月 As Integer = MyDate.Month
        Dim BJ_排班完成 As New LinearGradientBrush(points(0),points(1),Color.CornflowerBlue,Color.LightSteelBlue)
        Dim BJ_排班未完成 As New LinearGradientBrush(points(0),points(1),Color.yellow,Color.Beige)
        Dim BJ_没有排班 As New LinearGradientBrush(points(0),points(1),Color.Red,Color.Beige)
        Dim str As String = Functions.Execute("LunarStr",MyDate)   '取农历字符
        If str.Contains("初一") Then
            ZT_当月  = New SolidBrush(Color.Red)
        End If
        Dim sf As New StringFormat(StringFormatFlags.NoClip)
        sf.Alignment = StringAlignment.Center   '文本对中
        Dim 公历 As RectangleF = new RectangleF(e.X + 2,e.Y + 2,(e.Width - 4),e.Height/2)
        Dim 农历 As RectangleF = new RectangleF((e.X +2),(e.Y + e.Height/2),(e.Width - 4),(e.Height-4))
        Dim 单元格 As RectangleF = new RectangleF(e.X,e.Y,e.Width,e.Height)
        If Int_月 = MyMonth Then  '本月日历
            If MyDate = Date.Today Then
                e.Graphics.FillRectangle(BJ_今天,单元格)
            Else
                e.Graphics.FillRectangle(BJ_当月,单元格)
            End If
            Dim t As Table = Tables("医生排班表")
            Dim Filter="日期=#" & MyDate & "#"
            Dim ys As String = t.DataTable.GetComboListString("医生姓名", Filter)
            If ys = Nothing Then
                e.Graphics.FillRectangle(BJ_没有排班,单元格)

            Else
                Dim drs As List (of DataRow) = DataTables("医生名单").Select("医生姓名 not in ('" & ys.Replace("|", "','") & "')")
                If drs.count > 0 Then
                    e.Graphics.FillRectangle(BJ_排班未完成,单元格)
                Else
                   
                    Dim fdr1 As DataRow = DataTables("医生排班表").find("病房夜班 = true and " & Filter)
                    Dim fdr2 As DataRow = DataTables("医生排班表").find("(上午 is null or 下午 is null) and " & Filter)
                    If fdr1 IsNot Nothing AndAlso fdr2 Is Nothing Then
                        e.Graphics.FillRectangle(BJ_排班完成,单元格)
                    Else
                        e.Graphics.FillRectangle(BJ_排班未完成,单元格)
                    End If

                End If
            End If
            If e.Form.Width < 200 Then
                e.Graphics.DrawString(MyDate.Day ,Fnt,ZT_当月,单元格,sf)
            Else
                e.Graphics.DrawString(MyDate.Day ,Fnt,ZT_当月,公历,sf)
                e.Graphics.DrawString(str,Fnt1,ZT_当月,农历,sf)
            End If
        Else         '非本月日历
            e.Graphics.FillRectangle(BJ_非当月 ,单元格)
            If e.Form.Width < 200 Then
                e.Graphics.DrawString(MyDate.Day ,Fnt,ZT_非当月,单元格,sf)
            Else
                e.Graphics.DrawString(MyDate.Day ,Fnt,ZT_非当月,公历,sf)
                e.Graphics.DrawString(str,Fnt1,ZT_非当月,农历,sf)
            End If
        End If
       
       
    End If
End If


 回到顶部