Foxtable(狐表)用户栏目专家坐堂 → 多行填充一行的问题


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

主题:多行填充一行的问题

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


加好友 发短信
等级:超级版主 帖子:115030 积分:585981 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/18 15:19:00 [只看该作者]

不对。回头看看41-45楼,再想想

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


加好友 发短信
等级:五尾狐 帖子:1024 积分:6902 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2024/7/18 16:15:00 [只看该作者]

Dim s As Date = Date.Today() '今日  
For Each dv As DataRow In DataTables("状态表202").Select("日期>=#" & s & "#") '数据来源于表
    Dim dr As DataRow = DataTables("未来7天202").Find("桌台编号 = '" & dv("桌台编号") & "' And 桌台类型 = '" & dv("桌台类型") & "' And 桌台名称 = '" & dv("桌台名称") & "'") 
    If dr Is Nothing Then '如果没找到的话
        dr = DataTables("未来7天202").AddNew()
        dr("桌台编号") = dv("桌台编号")
        dr("桌台类型") = dv("桌台类型")
        dr("桌台名称") = dv("桌台名称") 
    End If
    dr("今日_日期") = s '这里提取的数据正确
    If dr("今日_日期") = s Then
        dr("今日_午餐") = dv("预订宴类_午餐") '这里提取的数据不正确
        dr("今日_晚餐") = dv("预订宴类_晚餐") '这里提取的数据不正确
    End If 
    For i As Integer = 1 To 7 '这里7表示提取2天的数据
        Dim d As Date = s.AddDays(i)
        dr = DataTables("未来7天202").Find("桌台编号 = '" & dv("桌台编号") & "' And 桌台类型 = '" & dv("桌台类型") & "' And 桌台名称 = '" & dv("桌台名称") & "'")
        If dr Is Nothing Then '如果没找到的话
            dr = DataTables("未来7天202").AddNew()
            dr("桌台编号") = dv("桌台编号")
            dr("桌台类型") = dv("桌台类型")
            dr("桌台名称") = dv("桌台名称") 
        End If 
        dr("未来第" & i & "天_日期") = d '这里提取的数据正确
        If dr("未来第" & i & "天_日期") = d Then
            dr("未来第" & i & "天_午餐") = dv("预订宴类_午餐") '这里提取的数据不正确
            dr("未来第" & i & "天_晚餐") = dv("预订宴类_晚餐") '这里提取的数据不正确
        End If 
    Next 
Next

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


加好友 发短信
等级:超级版主 帖子:115030 积分:585981 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/18 16:22:00 [只看该作者]

去掉If dr("今日_日期") = s Then这些判断,完全多此一举

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


加好友 发短信
等级:五尾狐 帖子:1024 积分:6902 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2024/7/18 17:16:00 [只看该作者]

去掉那个判断后,午餐晚餐的数据还是提取不到对应的列,哎真难呀

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


加好友 发短信
等级:超级版主 帖子:115030 积分:585981 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/18 17:34:00 [只看该作者]

我测试没有问题

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


加好友 发短信
等级:五尾狐 帖子:1024 积分:6902 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2024/7/18 17:44:00 [只看该作者]

DataTables("未来7天202").DeleteFor("")
'第一步
Dim s As Date = Date.Today() 
For Each dv As DataRow In DataTables("状态表202").Select("日期>=#" & s & "#") 
    Dim dr As DataRow = DataTables("未来7天202").Find("桌台编号 = '" & dv("桌台编号") & "' And 桌台类型 = '" & dv("桌台类型") & "' And 桌台名称 = '" & dv("桌台名称") & "'") 
    If dr Is Nothing Then 
        dr = DataTables("未来7天202").AddNew()
        dr("桌台编号") = dv("桌台编号")
        dr("桌台类型") = dv("桌台类型")
        dr("桌台名称") = dv("桌台名称") 
    End If
    dr("今日_日期") = s 
    For i As Integer = 1 To 7 
        Dim d As Date = s.AddDays(i)
        dr = DataTables("未来7天202").Find("桌台编号 = '" & dv("桌台编号") & "' And 桌台类型 = '" & dv("桌台类型") & "' And 桌台名称 = '" & dv("桌台名称") & "'")
        If dr Is Nothing Then 
            dr = DataTables("未来7天202").AddNew()
            dr("桌台编号") = dv("桌台编号")
            dr("桌台类型") = dv("桌台类型")
            dr("桌台名称") = dv("桌台名称") 
        End If 
        dr("未来第" & i & "天_日期") = d 
    Next 
Next
MessageBox.Show("第一步数据已生成!","提示")

'第二步
For Each dv0 As DataRow In DataTables("状态表202").Select("日期=#" & s & "#") 
    Dim dr0 As DataRow = DataTables("未来7天202").Find("桌台编号 = '" & dv0("桌台编号") & "' And 桌台类型 = '" & dv0("桌台类型") & "' And 桌台名称 = '" & dv0("桌台名称") & "'And 今日_日期=#" & s & "#") 
    If dr0 IsNot Nothing Then 
        dr0("今日_日期") = s 
        dr0("今日_午餐") = dv0("预订宴类_午餐") 
        dr0("今日_晚餐") = dv0("预订宴类_晚餐")
        dr0("今日_空闲") = dv0("预订宴类_空闲")
    End If 
Next
For i As Integer = 1 To 7 
    Dim d As Date = Date.Today().AddDays(i)
    For Each dv1 As DataRow In DataTables("状态表202").Select("日期=#" & d & "#") 
        Dim dr1 As DataRow = DataTables("未来7天202").Find("桌台编号 = '" & dv1("桌台编号") & "' And 桌台类型 = '" & dv1("桌台类型") & "' And 桌台名称 = '" & dv1("桌台名称") & "'And 未来第" & i & "天_日期=#" & d & "#") 
        If dr1 IsNot Nothing Then 
            dr1("未来第" & i & "天_午餐") = dv1("预订宴类_午餐") 
            dr1("未来第" & i & "天_晚餐") = dv1("预订宴类_晚餐") 
            dr1("未来第" & i & "天_空闲") = dv1("预订宴类_空闲") 
        End If 
    Next 
Next 
我按照笨办法,分两步来完成

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


加好友 发短信
等级:五尾狐 帖子:1024 积分:6902 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2024/7/20 8:26:00 [只看该作者]

'第一部分  自定义一个页面集合
Dim tab1 As WinForm.TabControl '自定义一个页面集合
tab1 = e.Form.CreateControl("tab1", ControlTypeEnum.TabControl)
tab1.width = 650 '调整版面大小的尺寸(宽度)
tab1.height = 500 '调整版面大小的尺寸(高度)
tab1.Left = 10 '控件位置
tab1.Top = 100
e.Form.AddControl(tab1) '将控件加入窗口
e.Form.Controls("tab1").basecontrol.ItemSize = New Size(45, 23) '自定义尺寸
tab1.Multiline = True '是否显示多行页签

'第二部分,自定义一个面板
Dim x As Integer
Dim str As String
Dim pan As WinForm.Panel '自定义一个面板
For x = 65 To 90
    str = chr(x)
    tab1.TabPages.Add(str, str) '新增页面,页面名称和标题均为str
    pan = e.Form.CreateControl("pan" & chr(x), ControlTypeEnum.panel)
    pan.width = 635 '调整面板的尺寸(宽度)
    pan.height = 480 '调整面板的尺寸(高度)
    pan.left = 10
    pan.Top = 10 
    e.Form.Controls("tab1").basecontrol.tabpages(str).addcontrol(pan) 
Next

Dim cmddt As New SQLCommand
'cmddt.ConnectionName = _Connection1
cmddt.CommandText = "sele!ct * fro!m {分类表}  "
Dim dt As DataTable = cmddt.ExecuteReader
Dim btn As WinForm.button '自定义按钮
Dim i As Integer = 0
For x = 65 To 90
    i = 0
    For Each dr As DataRow In dt.DataRows
        ' If left(GetPY(dr("产品名称"), True), 1) = chr(x) Then '原先以拼音格式作为页签。
        If dr("产品分类") = chr(x) Then '现以指定内容为页签,比如产品分类列有经典类、现代类、简约类,外加一个全部
            'Dim Value As String = "全部|经典类|现代类|简约类" '页签标题
            btn = e.Form.CreateControl("btn" & dr("产品名称"), ControlTypeEnum.button)
            btn.width = 90 '自定义按钮尺寸(宽度)75
            btn.height = 52 '自定义按钮尺寸(高度),原32                               
            btn.Text = dr("产品名称") 
            btn.Left = 20 + (i Mod 5) * 125 '125为与左右按钮的横向间距
            btn.Top = 20 + (i \ 5) * 100 '50为与上下按钮的纵向间距            
            btn.basecontrol.tag = 0            
            '  e.Form.Controls("pan" & left(GetPY(dr("产品名称"), True), 1)).AddControl(btn)'原先的
            e.Form.Controls("pan" & dr("产品分类")).AddControl(btn) '现在的
            i = i + 1
        End If
    Next
Next

'老师, 这是动态控件代码, 以拼音格式作为页签, 由于我的控件类别较少, 很多页面都是空的, 希望以指定内容为页签,比如产品分类列有经典类、现代类、简约类,外加一个全部
"全部|经典类|现代类|简约类" '页签标题,请教老师怎么进行完善代码?
另外For x = 65 To 90代表什么意思,为什么要这么设定
[此贴子已经被作者于2024/7/20 8:27:56编辑过]

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


加好友 发短信
等级:超级版主 帖子:115030 积分:585981 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/20 9:41:00 [只看该作者]

Dim cmddt As New SQLCommand
'cmddt.ConnectionName = _Connection1
cmddt.CommandText = "sele!ct * fro!m {分类表}  "
Dim dt As DataTable = cmddt.ExecuteReader
Dim btn As WinForm.button '自定义按钮
Dim pan As WinForm.Panel
for each s as string in dt.getvalues("产品分类")
    dim page as winfor.TabPage= tab1.TabPages.Add(s, s) '新增页面,页面名称和标题均为str
    pan = e.Form.CreateControl("pan" & s, ControlTypeEnum.panel)
    pan.width = 635 '调整面板的尺寸(宽度)
    pan.height = 480 '调整面板的尺寸(高度)
    pan.left = 10
    pan.Top = 10 
    page.addcontrol(pan) 
    For Each dr As DataRow In dt.select("产品分类='" & s & "'")
            btn = e.Form.CreateControl("btn" & dr("产品名称"), ControlTypeEnum.button)
            btn.width = 90 '自定义按钮尺寸(宽度)75
            btn.height = 52 '自定义按钮尺寸(高度),原32                               
            btn.Text = dr("产品名称") 
            btn.Left = 20 + (i Mod 5) * 125 '125为与左右按钮的横向间距
            btn.Top = 20 + (i \ 5) * 100 '50为与上下按钮的纵向间距            
            btn.basecontrol.tag = 0            
            pan.AddControl(btn) '现在的
        End If
    Next
next

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


加好友 发短信
等级:五尾狐 帖子:1024 积分:6902 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2024/7/20 12:04:00 [只看该作者]

'第一部分  自定义一个页面集合
Dim tab1 As WinForm.TabControl '自定义一个页面集合
tab1 = e.Form.CreateControl("tab1", ControlTypeEnum.TabControl)
tab1.width = 650 '调整版面大小的尺寸(宽度)
tab1.height = 500 '调整版面大小的尺寸(高度)
tab1.Left = 10 '控件位置
tab1.Top = 100
e.Form.AddControl(tab1) '将控件加入窗口
e.Form.Controls("tab1").basecontrol.ItemSize = New Size(80, 23) '自定义页签的尺寸
tab1.Multiline = True '是否显示多行页签

'第二部分,自定义一个面板
Dim cmddt As New SQLCommand
'cmddt.ConnectionName = _Connection1
cmddt.CommandText = "selec!t * fr!om {分类表}  "
Dim dt As DataTable = cmddt.ExecuteReader
Dim btn As WinForm.button '自定义按钮
Dim i As Integer = 0
Dim pan As WinForm.Panel
For Each s As String In dt.getvalues("产品分类")
    Dim page As winform.TabPage = tab1.TabPages.Add(s, s) '新增页面,页面名称和标题均为s
    pan = e.Form.CreateControl("pan" & s, ControlTypeEnum.panel)
    pan.width = 635 '调整面板的尺寸(宽度)
    pan.height = 480 '调整面板的尺寸(高度)
    pan.left = 10
    pan.Top = 10 
    page.addcontrol(pan)
    i = 0
    For Each dr As DataRow In dt.select("产品分类='" & s & "'")
        btn = e.Form.CreateControl("btn" & dr("产品名称"), ControlTypeEnum.button)
        btn.width = 90 '定义按钮尺寸(宽度)75
        btn.height = 52 '定义按钮尺寸(高度),原32                               
        btn.Text = dr("产品名称")        
        btn.Left = 20 + (i Mod 5) * 125 '调整按钮的横向间距125
        btn.Top = 20 + (i \ 5) * 100 '调整按钮的纵向间距 50           
        btn.basecontrol.tag = 0 
        pan.AddControl(btn) '现在的
        i = i + 1
    Next
Next

'非常感谢蓝老师, 现在这个代码非常简洁实用,全都是动态生成的控件,在此基础上,能不能新增一个页面,页签名为"全部",点击显示全部控件?
'还有能不能给页签排名,全部放第1个,经典放第2个,现代放第3个,简约放第4个

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


加好友 发短信
等级:超级版主 帖子:115030 积分:585981 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/20 12:26:00 [只看该作者]

都可以做,没有什么技术难点,都是思维上的东西。很简单的逻辑,请自行思考

 回到顶部
总数 169 上一页 1 2 3 4 5 6 7 8 9 10 下一页 ..17