Foxtable(狐表)用户栏目专家坐堂 → 代码解读


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

主题:代码解读

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


加好友 发短信
等级:小狐 帖子:386 积分:3904 威望:0 精华:0 注册:2012/2/9 20:09:00
代码解读  发帖心情 Post By:2014/6/10 17:41:00 [只看该作者]

'设置表样式

DataTables("选房窗口_Table1").AddUserStyle("a", Color.Red, Color.White) '定金的房态表样式
DataTables("选房窗口_Table1").AddUserStyle("b", Color.DarkGreen, Color.White) '确认的房态表样式
DataTables("选房窗口_Table1").AddUserStyle("c", Color.blue, Color.White) '可靠的房态表样式
DataTables("选房窗口_Table1").AddUserStyle("d", Color.FromARGB(255,255,128,0), Color.White) '入住的房态表样式


Dim mon As Integer = Tables("userb").current("zcldidariqi").Month
Dim days As Integer = Date.DaysInMonth(Tables("userb").current("zcldidariqi").Year,Tables("userb").current("zcldidariqi").Month)
Dim s As String


If Tables("userb").current("zcldidariqi").adddays(3).day < Tables("userb").current("zcldidariqi").day Then  '如果跨月
      For j As Integer = Tables("userb").current("zcldidariqi").adddays(-13).day To days
          s + = "' ' As " & mon & "月" & j & "日,"
      Next

  Else   '正常一个月
      For j As Integer = Tables("userb").current("zcldidariqi").adddays(-1).day  To Tables("userb").current("zcldidariqi").adddays(3).day
          s + = "' ' As " & mon & "月" & j & "日,"
      Next
End If

 

s = "Select  房型, '        ' As 房间号 ,  " & s.trim(",") & "    from {客房信息表} order by 排序  "                      ' where 房型='标准间'  " & s.trim(",") & "  

 

Dim dt As DataTable = DataTables("选房窗口_table1")

dt.Fill( s ,  True)
Tables("选房窗口_table1").Cols("房间号").Width = 55
Tables("选房窗口_table1").Cols("房型").Width = 55


If dt.DataRows.Count < DataTables("客房信息表").datarows.Count Then
    dt.AddNew(DataTables("客房信息表").datarows.Count - dt.DataRows.Count)  'Select("[房型]='标准间'").
End If
For i As Integer = 0 To DataTables("客房信息表").DataRows.Count - 1
    For j As Integer = 0 To dt.DataRows.Count - 1
        If i = j Then
            dt.DataRows(j)("房间号") = DataTables("客房信息表").DataRows(i)("房间号")
        End If
    Next
Next
For Each ftdr As DataRow In dt.DataRows
    For Each ftdc As DataCol In dt.DataCols
       ' For Each xcdr As DataRow In DataTables("zclxingcheng").DataRows
        For Each xcdr As DataRow In DataTables("zclxingcheng").Select(" [日期] >= # " &  Tables("userb").current("zcldidariqi").adddays(-1)   & " # And [日期] <= # " &  Tables("userb").current("zcldidariqi").adddays(3) & " #    " )


            If xcdr("日期").Year = Date.Today.Year AndAlso xcdr("日期").Month & "月" & xcdr("日期").Day & "日" = ftdc.Name AndAlso xcdr("房间号").Contains(ftdr("房间号")) Then
                Dim dr As DataRow = DataTables("userb").Find("ID = '" & xcdr("客户ID") & "'")
                If dr IsNot Nothing
                    ftdr(ftdc.Name) + = dr("name") & ","
                End If
            End If
        Next
        ftdr(ftdc.Name) = ftdr(ftdc.Name).Trim(",")
    Next
Next

e.Form.Text = Date.Today.Year & "年" & Date.Today.Month & "月房态表"


'以下是把原有的房间号的行的复选框勾选上.
Dim zcl As String= Tables("userb.zclxingcheng").current("房间号")
Dim zcls As String =zcl.Replace(" ","") 
For Each r As Row In Tables("选房窗口_table1").Rows
    If zcls.Contains(r("房间号"))    Then
        r.Checked = True
    End If
Next

 

 

---------------------------------------

 

有关以上代码的问题如下:

 

问题1: 红色部分代码,    '        ' As 房间号 ,  " & s.trim(",") & "      这是什么意思?  

问题2: 如果我想筛选出房型是标准间的怎么改代码,  我改成:    s = "Select  房型, '        ' As 房间号 ,  " & s.trim(",") & "    from {客房信息表}   where 房型='标准间'    order by 排序  "         ,但列出的表格里是只列出了标准间, 但却列出了全部的房间号(包括其他房型的).

问题3: 全部房型都显示的房态表,有几十行,屏幕显示不下,需要下拉滚动查看,很不方便.  如何控制分段显示,  比如标准间显示在左边,  多人间显示在中间,  床位显示在右侧.

 

 

 


此主题相关图片如下:343444.jpg
按此在新窗口浏览图片

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/6/10 17:45:00 [只看该作者]

1. S变量拼接会多出 一个 逗号 Trim是为了去掉
2.这个没什么道理
2.你可以分两个表分别查询

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


加好友 发短信
等级:小狐 帖子:386 积分:3904 威望:0 精华:0 注册:2012/2/9 20:09:00
  发帖心情 Post By:2014/6/10 17:50:00 [只看该作者]

1.  '        ' As 房间号      这是什么意思?  为何要加两个单引号?

 

 

2. 分两个表查询,  试过了,不行 (和问题2有关),  无法掌控表格里显示的房间号,请注意看女床位里的显示, 房型女床位对应的房间号不对劲(房间号都是标准间的).

 

我是这么改的:

 

 

s = "Select  房型,   房间号 , " & s.trim(",") & "  from {客房信息表}  where 房型='女床位' order by 排序  "

Dim dt As DataTable = DataTables("选房窗口_table2")

dt.Fill( s ,  True)
Tables("选房窗口_table2").Cols("房间号").Width = 55
Tables("选房窗口_table2").Cols("房型").Width = 55


If dt.DataRows.Count < DataTables("客房信息表").Select("[房型]='女床位'").Count Then
    dt.AddNew(DataTables("客房信息表").Select("[房型]='女床位'").Count - dt.DataRows.Count)
End If
For i As Integer = 0 To DataTables("客房信息表").Select("[房型]='女床位'").Count - 1
    For j As Integer = 0 To dt.DataRows.Count - 1
        If i = j Then
            dt.DataRows(j)("房间号") = DataTables("客房信息表").DataRows(i)("房间号")
        End If
    Next
Next

[此贴子已经被作者于2014-6-10 17:58:36编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/10 17:55:00 [只看该作者]

 1、意思是多加一列;

 

 2、请上传例子


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/6/10 17:55:00 [只看该作者]

1.就是新增一个列 叫做 房间号

2. 具体还是请上例子吧

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


加好友 发短信
等级:小狐 帖子:386 积分:3904 威望:0 精华:0 注册:2012/2/9 20:09:00
  发帖心情 Post By:2014/6/10 18:30:00 [只看该作者]

dt.DataRows(j)("房间号") = DataTables("客房信息表").dataRows(i)("房间号")

上面这句代码,我要改成筛选 女床位 的DATATABLES,怎么写?

 

 

以下是我改的:(错误的)

dt.DataRows(j)("房间号") = DataTables("客房信息表").Select("[房型]='女床位'").dataRows(i)("房间号")


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


加好友 发短信
等级:小狐 帖子:386 积分:3904 威望:0 精华:0 注册:2012/2/9 20:09:00
  发帖心情 Post By:2014/6/10 18:44:00 [只看该作者]

会写了,应该是:

 

dt.DataRows(j)("房间号") = DataTables("客房信息表").Select("[房型]='女床位'")(i)("房间号")


 回到顶部