Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共17 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:如何直接实现下列设计?

1楼
xl 发表于:2009/12/22 14:31:00
 

在生成“课时名单”设计中,希望“性质”列的值是“周六下午”改为“补课”,“周六晚上”改为“辅导”,“周日上午”改为“守班”,“周日下午”改为“补课”。如何对下列Tables("课时名单").Rows(i)("性质") = Values(1)中的Values(1)进行控制?原设计代码如下:
 

'生成"课时名单"表

Dim s As Date = Date.Now()

Dim ksmd As New DataTableBuilder("课时名单")

ksmd.AddDef("姓名", GetType(String), 15)

ksmd.AddDef("性质", GetType(String), 15)

ksmd.AddDef("星期", GetType(String), 15)

ksmd.AddDef("计分", GetType(Integer))

ksmd.Build()

 

'生成"课时名单"数据

Dim Values() As String

Dim n As Integer = Tables("补课").rows.count

Dim n1 As Integer

for Each dc as Datacol in DataTables("补课").Datacols

    if dc.name <> "班级" Then

        n1 = n1 +1

        dim f As New Filler

        f.SourceTable = DataTables("补课") '指定数据来源

        f.SourceCols = dc.name '指定数据来源列

        f.DataTable = DataTables("课时名单") '指定数据接收表

        f.DataCols = "姓名" '指定数据接收列

        f.ExcludeNullValue=true

        f.Distinct = false

        f.Fill() '填充数据

        Values = dc.name.split("_")

        For i As integer = (n*n1)-n to Tables("课时名单").rows.count -1

            Tables("课时名单").Rows(i)("星期") = Values(0)

            Tables("课时名单").Rows(i)("性质") = Values(1)

            Tables("课时名单").Rows(i)("计分") = 1

        Next

    end if

Next

DataTables("课时名单").DeleteFor("[姓名] Is Null")

Messagebox.Show("处理完毕! 耗时: " & (Date.Now -s).TotalSeconds)
(注:不想生成“课时名单”后,再遍历替换)

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

2楼
czy 发表于:2009/12/22 14:47:00
应该很简单吧,自己再想想。
3楼
xl 发表于:2009/12/22 14:55:00
用iif语句试了几次失败了,我再思考一下。
4楼
foxor 发表于:2009/12/22 14:59:00

感觉用 select case 比较好

5楼
czy 发表于:2009/12/22 15:02:00

'生成"课时名单"表
Dim s As Date = Date.Now()
Dim ksmd As New DataTableBuilder("课时名单")
ksmd.AddDef("姓名", GetType(String), 15)
ksmd.AddDef("性质", GetType(String), 15)
ksmd.AddDef("星期", GetType(String), 15)
ksmd.AddDef("计分", GetType(Integer))
ksmd.Build()
'生成"课时名单"数据
Dim Values() As String
Dim n As Integer = Tables("补课").rows.count
Dim n1 As Integer
for Each dc as Datacol in DataTables("补课").Datacols
    Dim T As Table = Tables("课时名单")
    if dc.name <> "班级" Then
        n1 = n1 +1
        dim f As New Filler
        f.SourceTable = DataTables("补课") '指定数据来源
        f.SourceCols = dc.name '指定数据来源列
        f.DataTable = DataTables("课时名单") '指定数据接收表
        f.DataCols = "姓名" '指定数据接收列
        f.ExcludeNullValue=true
        f.Distinct = false
        f.Fill() '填充数据
        Values = dc.name.split("_")
        For i As integer = (n*n1)-n to T.rows.count -1
            T.Rows(i)("星期") = Values(0)
            Select Case Values(1)
                Case "周六下午","周日下午"
                    Values(1) = "补课"
                Case "周六晚上"
                    Values(1) = "辅导"
                Case "周日上午"
                    Values(1) = "守班"
            End Select
            T.Rows(i)("性质") = Values(1)
            T.Rows(i)("计分") = 1
        Next
    end if
Next
DataTables("课时名单").DeleteFor("[姓名] Is Null")
Messagebox.Show("处理完毕! 耗时: " & (Date.Now -s).TotalSeconds)

[此贴子已经被作者于2009-12-22 15:02:39编辑过]
6楼
xl 发表于:2009/12/22 16:30:00
真没想到select case语句,谢谢两位!
7楼
czy 发表于:2009/12/22 16:32:00
其实用if也简单的

if Values(1) = "周六下午" Then
Values(1) = "补课"
End If

如此反复就可以了。
8楼
xl 发表于:2009/12/22 16:47:00
我却选择 iif 语句镶嵌,也难怪.
9楼
czy 发表于:2009/12/23 16:17:00
以下是引用xl在2009-12-22 16:47:00的发言:
我却选择 iif 语句镶嵌,也难怪.


呵呵,我不认为是iif的问题,iif同样可以完成,如:

Values(1) = iif(Values(1)="周六下午","补课",iif(Values(1)= "周日下午","补课",iif(Values(1)="周六晚上","辅导",iif(Values(1)="周日上午","守班",Values(1)))))

10楼
xl 发表于:2009/12/23 21:47:00
呵呵,知识没有学活,目前我只能韩郸学步,谢谢老师指点!
[此贴子已经被作者于2009-12-23 21:57:42编辑过]
共17 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 3 queries.