Foxtable(狐表)用户栏目专家坐堂 → 关于代码问题请教,谢谢


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

主题:关于代码问题请教,谢谢

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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
关于代码问题请教,谢谢  发帖心情 Post By:2017/8/29 18:19:00 [显示全部帖子]

你好,我想咨询一下,我在窗口设计里面写了代码,根据姓名比较两个表工资大小的代码,但是如果一个表中有这个人,另一个表没有这个人就执行不下去了,请教怎么给这种情况赋值默认值。谢谢,以下为我写的代码,加粗的地方是进行比较后的取值。

Dim dtb As New DataTableBuilder("职工购股情况差异对比表8月份")
dtb.AddDef("工资编号", Gettype(String), 16)
dtb.AddDef("姓名", Gettype(String), 16)
dtb.AddDef("原职位", Gettype(String), 16)
dtb.AddDef("职位", Gettype(String), 16)
dtb.AddDef("职位差异", Gettype(String), 16)
dtb.AddDef("原技术职务", Gettype(String), 16)
dtb.AddDef("技术职务", Gettype(String), 16)
dtb.AddDef("技术职务差异", Gettype(String), 16)
dtb.AddDef("原购股标准", Gettype(Double))
dtb.AddDef("购股标准", Gettype(Double))
dtb.AddDef("购股标准差异", Gettype(Double))
dtb.AddDef("现持股金", Gettype(String), 16)
dtb.Build()
Dim dt As DataTable = DataTables("职工购股情况差异对比表8月份")
Dim dt2 As DataTable = DataTables("原人员信息岗位股明细表8月份")
Dim dt4 As DataTable = DataTables("人员信息岗位股明细表")
For Each nm As String In dt2.GetValues("工资编号")
    Dim dr As DataRow = dt.AddNew()
    dr("工资编号") = nm
    Dim num1 As Double = dt2.Compute("max(购股标准)", "工资编号 = '" & nm & "'")
    Dim num2 As Double = dt2.Compute("max(对应购股标准)", "工资编号 = '" & nm & "'")
    Dim fdr1 As DataRow
    If num1 > num2 Then
        dr("原购股标准") = num1
        fdr1 = dt2.find("工资编号 = '" & nm & "' and 购股标准 = '" & num1 & "'")
        
    Else
        dr("原购股标准") = num2
        fdr1 = dt2.find("工资编号 = '" & nm & "' and 对应购股标准 = '" & num2 & "'")
    End If
    dr("姓名") = fdr1("姓名")
    dr("原技术职务") = fdr1("原技术职务等级")
    dr("原职位") = fdr1("原职位")
    Dim num3 As Double = dt4.Compute("max(购股标准)", "工资编号 = '" & nm & "'")
    Dim num4 As Double = dt4.Compute("max(对应购股标准)", "工资编号 = '" & nm & "'")
    Dim fdr2 As DataRow
    If num3 > num4 Then
        dr("购股标准") = num3
        fdr2 = dt4.find("工资编号 = '" & nm & "' and 购股标准 = '" & num3 & "'")
    Else
        dr("购股标准") = num4
        fdr2 = dt4.find("工资编号 = '" & nm & "' and 对应购股标准 = '" & num4 & "'")
    End If
    dr("技术职务") = fdr2("技术职务等级")
    dr("职位") = fdr2("职位")
    dr("现持股金") = fdr2("现持股金")
    dr("购股标准差异") = dr("原购股标准")-dr("购股标准")
      For Each r As Row In  Tables("职工购股情况差异对比表8月份").Rows
     If r("原职位") = r("职位") Then
    r("职位差异") ="0"
    Else
        r("职位差异") ="1"
   End If     
     dr("职位") = fdr2("职位")
     dr("原职位") = fdr1("原职位")
     If r("原技术职务") = r("技术职务") Then
    r("技术职务差异") ="0"
    Else
        r("技术职务差异") ="1"
   End If     
     dr("技术职务") = fdr2("技术职务等级")
     dr("原技术职务") = fdr1("原技术职务等级")
Next
Next


MainTable= Tables("职工购股情况差异对比表8月份")

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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
  发帖心情 Post By:2017/8/29 21:19:00 [显示全部帖子]

您好,我刚按照您写的代码试了下,提示以下错误,“原人员信息岗位股明细表8月份”是个查询表,请您看下以下错误提示怎么处理?谢谢

The Microsoft Jet database engine cannot find the input table or query '原人员信息岗位股明细表8月份'.  Make sure it exists and that its name is spelled correctly.

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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
  发帖心情 Post By:2017/8/30 9:10:00 [显示全部帖子]

您好,我修改了后,还是不行,我用的这些表都是外部数据源的表,是不是需要转化成内部表才行呢?

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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
  发帖心情 Post By:2017/8/30 9:27:00 [显示全部帖子]

您好,我试了下也没法迁移成内部数据表,提示没有找到可用的关键列。像这种外部数据表,写SQL有没有特殊的格式来引用,请帮忙指导下,谢谢

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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
  发帖心情 Post By:2017/8/30 9:59:00 [显示全部帖子]

我加上只显示了一条数据,以下是我的代码,麻烦看下哪有问题,加粗的是我按照您说的增加的语句:
Dim dtb As New DataTableBuilder("职工购股情况差异对比表8月份")
dtb.AddDef("工资编号", Gettype(String), 16)
dtb.AddDef("姓名", Gettype(String), 16)
dtb.AddDef("原职位", Gettype(String), 16)
dtb.AddDef("职位", Gettype(String), 16)
dtb.AddDef("职位差异", Gettype(String), 16)
dtb.AddDef("原技术职务", Gettype(String), 16)
dtb.AddDef("技术职务", Gettype(String), 16)
dtb.AddDef("技术职务差异", Gettype(String), 16)
dtb.AddDef("原购股标准", Gettype(Double))
dtb.AddDef("购股标准", Gettype(Double))
dtb.AddDef("购股标准差异", Gettype(Double))
dtb.AddDef("现持股金", Gettype(String), 16)
dtb.Build()
Dim dt As DataTable = DataTables("职工购股情况差异对比表8月份")
Dim dt2 As DataTable = DataTables("原人员信息岗位股明细表8月份")
Dim dt4 As DataTable = DataTables("人员信息岗位股明细表")
For Each nm As String In dt2.GetValues("工资编号")
    Dim dr As DataRow = dt.AddNew()
    dr("工资编号") = nm
    Dim num1 As Double = dt2.Compute("max(购股标准)", "工资编号 = '" & nm & "'")
    Dim num2 As Double = dt2.Compute("max(对应购股标准)", "工资编号 = '" & nm & "'")
    Dim fdr1 As DataRow
    If num1 > num2 Then
        dr("原购股标准") = num1
        fdr1 = dt2.find("工资编号 = '" & nm & "' and 购股标准 = '" & num1 & "'")
        
    Else
        dr("原购股标准") = num2
        fdr1 = dt2.find("工资编号 = '" & nm & "' and 对应购股标准 = '" & num2 & "'")
    End If
    dr("姓名") = fdr1("姓名")
    dr("原技术职务") = fdr1("原技术职务等级")
    dr("原职位") = fdr1("原职位")
    Dim num3 As Double = dt4.Compute("max(购股标准)", "工资编号 = '" & nm & "'")
    Dim num4 As Double = dt4.Compute("max(对应购股标准)", "工资编号 = '" & nm & "'")
    Dim fdr2 As DataRow
    If fdr2 Is Nothing Then
    msgbox("没找到对应的人")
    Else
    If num3 > num4 Then
        dr("购股标准") = num3
        fdr2 = dt4.find("工资编号 = '" & nm & "' and 购股标准 = '" & num3 & "'")
    Else
        dr("购股标准") = num4
        fdr2 = dt4.find("工资编号 = '" & nm & "' and 对应购股标准 = '" & num4 & "'")
    End If
    dr("技术职务") = fdr2("技术职务等级")
    dr("职位") = fdr2("职位")
    dr("现持股金") = fdr2("现持股金")
    dr("购股标准差异") = dr("原购股标准")-dr("购股标准")
    End If
      For Each r As Row In  Tables("职工购股情况差异对比表8月份").Rows
     If r("原职位") = r("职位") Then
    r("职位差异") ="0"
    Else
        r("职位差异") ="1"
   End If     
     dr("职位") = fdr2("职位")
     dr("原职位") = fdr1("原职位")
     If r("原技术职务") = r("技术职务") Then
    r("技术职务差异") ="0"
    Else
        r("技术职务差异") ="1"
   End If     
     dr("技术职务") = fdr2("技术职务等级")
     dr("原技术职务") = fdr1("原技术职务等级")

Next
Next


MainTable= Tables("职工购股情况差异对比表8月份")

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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
  发帖心情 Post By:2017/8/30 10:26:00 [显示全部帖子]

您好,我试了下好像没起作用,执行到没有数据的时候,弹出“没找到对应的人”,后面就数据不执行了


Dim dtb As New DataTableBuilder("职工购股情况差异对比表8月份")
dtb.AddDef("工资编号", Gettype(String), 16)
dtb.AddDef("姓名", Gettype(String), 16)
dtb.AddDef("原职位", Gettype(String), 16)
dtb.AddDef("职位", Gettype(String), 16)
dtb.AddDef("职位差异", Gettype(String), 16)
dtb.AddDef("原技术职务", Gettype(String), 16)
dtb.AddDef("技术职务", Gettype(String), 16)
dtb.AddDef("技术职务差异", Gettype(String), 16)
dtb.AddDef("原购股标准", Gettype(Double))
dtb.AddDef("购股标准", Gettype(Double))
dtb.AddDef("购股标准差异", Gettype(Double))
dtb.AddDef("现持股金", Gettype(String), 16)
dtb.Build()
Dim dt As DataTable = DataTables("职工购股情况差异对比表8月份")
Dim dt2 As DataTable = DataTables("原人员信息岗位股明细表8月份")
Dim dt4 As DataTable = DataTables("人员信息岗位股明细表")
For Each nm As String In dt2.GetValues("工资编号")
    Dim dr As DataRow = dt.AddNew()
    dr("工资编号") = nm
    Dim num1 As Double = dt2.Compute("max(购股标准)", "工资编号 = '" & nm & "'")
    Dim num2 As Double = dt2.Compute("max(对应购股标准)", "工资编号 = '" & nm & "'")
    Dim fdr1 As DataRow
    If num1 > num2 Then
        dr("原购股标准") = num1
        fdr1 = dt2.find("工资编号 = '" & nm & "' and 购股标准 = '" & num1 & "'")
        
    Else
        dr("原购股标准") = num2
        fdr1 = dt2.find("工资编号 = '" & nm & "' and 对应购股标准 = '" & num2 & "'")
    End If
    If fdr1 Is Nothing Then
    msgbox("没找到对应的人")
    Else
    dr("姓名") = fdr1("姓名")
    dr("原技术职务") = fdr1("原技术职务等级")
    dr("原职位") = fdr1("原职位") 
    End If
    Dim num3 As Double = dt4.Compute("max(购股标准)", "工资编号 = '" & nm & "'")
    Dim num4 As Double = dt4.Compute("max(对应购股标准)", "工资编号 = '" & nm & "'")
    Dim fdr2 As DataRow
       If num3 > num4 Then
        dr("购股标准") = num3
        fdr2 = dt4.find("工资编号 = '" & nm & "' and 购股标准 = '" & num3 & "'")
    Else
        dr("购股标准") = num4
        fdr2 = dt4.find("工资编号 = '" & nm & "' and 对应购股标准 = '" & num4 & "'")
    End If
 If fdr2 Is Nothing Then
    msgbox("没找到对应的人")
    Else

    dr("技术职务") = fdr2("技术职务等级")
    dr("职位") = fdr2("职位")
    dr("现持股金") = fdr2("现持股金")
    dr("购股标准差异") = dr("原购股标准")-dr("购股标准")
    End If
      For Each r As Row In  Tables("职工购股情况差异对比表8月份").Rows
     If r("原职位") = r("职位") Then
    r("职位差异") ="0"
    Else
        r("职位差异") ="1"
   End If     
     dr("职位") = fdr2("职位")
     dr("原职位") = fdr1("原职位")
     If r("原技术职务") = r("技术职务") Then
    r("技术职务差异") ="0"
    Else
        r("技术职务差异") ="1"
   End If     
     dr("技术职务") = fdr2("技术职务等级")
     dr("原技术职务") = fdr1("原技术职务等级")

Next
Next


MainTable= Tables("职工购股情况差异对比表8月份")

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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
  发帖心情 Post By:2017/8/30 11:06:00 [显示全部帖子]

我没有找到对应的人,然后能继续去找其他的工资编号,但现在是找不到之后,就不往下执行了。
我项目是引用的外部数据源,上传上去可能无法打开。有什么方式可以看以下吗?QQ远程可以吗?谢谢。

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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
  发帖心情 Post By:2017/8/30 12:09:00 [显示全部帖子]

您好,我上传了一个测试程序,在现实的窗口里面,点“8月份”显示出来的数据很少,您帮忙看一下,谢谢了。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.zip


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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
  发帖心情 Post By:2017/8/30 12:27:00 [显示全部帖子]

谢谢您,非常感谢

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


加好友 发短信
等级:婴狐 帖子:38 积分:368 威望:0 精华:0 注册:2017/2/8 19:27:00
  发帖心情 Post By:2017/8/30 14:06:00 [显示全部帖子]

你好,我的界面上显示的表太多,但又不能不引出来,能隐藏吗?如图片所示
图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

 回到顶部
总数 14 1 2 下一页