Foxtable(狐表)用户栏目专家坐堂 → 请教实现方案


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

主题:请教实现方案

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
请教实现方案  发帖心情 Post By:2014/5/3 17:23:00 [显示全部帖子]

需求描述:

   上传示例说明:建立有两数据源M197,M198数据库文件在项目文件夹中. 建立有内部数据表三个,"试验临时数据" 为临时表,记录每次自动 执行时的取入数据结果. 内部表"试验数据"记录原始试验数据,"试验结果"记录每次检验结果,数据条数为"试验数据"的1/3.

 

本需求为自0点起每两小时集中收集车间各试验台当日试验数据.

数据源情况为:

  每台电脑均采用ACCESS2003数据库格式,总共大概有30台主机

  每试验主机每日试验时自动产生数据表,数据表命名规则为"t140424"共七位,即t 加年月日各两位. 即目标表每天是自动变化的. 每数据源下表名称命名规则,表结构均一样.

    这类型外部数据源均定义为M197,M198.......即名称以M开头 总共大概有30来个

     

表结构为:   编号,型号,转速,压力,流量,扭距,时间,温度,结果

                 编号,型号,结果为字符数据,其余均为小数.

                 该表没有主键.

                 编号为201404250001形式,即自0001开始流水编码.

                 编号+型号为测试数据,正常情况下,一次测试产生三条记录,如果三个结果均合格,则试验结果为合格.开始产生下一编码.如果三条其中有一个不合格,则该编号再进行一次测试又产生三条数据,如果合格,则进行下一编码测试,如果不合格则继续进行本编码测试.(结果为:如果某编号一次性试验三条合格,则数据表中仅记录3条记录,如果某编号有不合格则产生不合格数*3条不合格数据,其中每三条中的某一条有不合格出现. 该编号最后三条记录必全为合格数据(除非是最后三条记录)

 

现要求设计完成:

      1,自0点起每2 小时,所有以M开头的数据源下的t******当日表中读取数据到示例程序中的"试验临时数据"表中, 在日期列写入当前日期,在来源列写入当前数据源名称

    并对"试验临时数据"中的数据进行分析,在标记1中按编号+型号进行1,2,3,1,2,3......标记

                                                         在标记2中进行合格与不合格标记,(编号+型号每1,2,3条数据进行合格与否标记,三条全部合格标记为合格,有一条不合格标记为不合格.

                                                          在标记3中对编号+型号+标记2,连续三条的第一条中标记为1.该标记数据为不重复数据.

 

    2,按编号+型号进行判断 将新数据写入到"试验数据表"中. "试验数据"表为所有检验记录数据库,临时表每次读入的数据是当日全部的,所经写入到"试验数据"表中的数据为新增加数据,在录入时间里记录当前系统时间(格式为2014-05-03 12:30).

 

 

   3,将"试验临时数据"中 标记3中标记为1的数据写入"试验结果"数据表中,写入时只写入新增加数据,并在表 记录时间写入当前系统时间(格式为2014-05-03 12:30)

 

 

 需注意事项:

    1\所有操作均设置为程序自动运行.自0点起每2小时执行一次.

    2\自动执行时,可能有的主机(数据源)未开机不能连接.

    3\自动执行时,可能有的主机就算开了,但并未开始检验,即当前数据表t140503表可能不存在.

    4\M197,M198示例数据源中有两天数据,2014-4-24日和2014-04-25日两天的测试数据数据表为 t20140424,t140425.但实际运行时,数据表为t+当日年月日格式.

 

这应该是一个很有代表性的实例,希望高人给解答一下.

 

 

 

 

            

 

 

[此贴子已经被作者于2014-5-3 17:31:54编辑过]

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/5/3 17:23:00 [显示全部帖子]


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:试验数据管理系统.rar

[此贴子已经被作者于2014-5-4 9:29:13编辑过]

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/5/3 20:19:00 [显示全部帖子]

试验数据有试验软件产生并自动记录,记录在access数据库中,局域网连接,直接读数据库记录就行,

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/5/3 23:32:00 [显示全部帖子]

试验原始数据就是例孑程序中的外部数据源中的数据,这个数据分布在多台电脑上,不用管他怎么来的有就读取没有就跳过,

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/5/4 9:15:00 [显示全部帖子]

具体方案就在一楼,在服务器上集中采集,也许问得太笼统了,好吧现在一个一个问题的问.

 

'删除临时数据表所有行
For i As Integer = Tables("试验临时数据").Rows.count-1 To 0 Step -1
        Tables("试验临时数据").Rows(i).Delete
Next

 

'生成表名
Dim d As Date = Date.Today
Dim dd As String
dd = Format(d, "yyMMdd")
dd = CStr(dd)
dd = "t" & dd

 

'合并外部数据源中的数据到临时数据表中
Dim mg As New Merger

mg.C ="M197"    '指定数据源名称   (数据源名称指定语句发不上来,改了N次还这个样了  ) 

问题1,是示例只直接引用数据源名称,如何遍历数据源,总不能30个数据源,本段代码重复30次的吧 问题2,如何判断数据源开机,有效存在才进行读数,否则跳过.
mg.SourceTableName = "t140425" '指定要合并的表  

    问题3问题是示例直接引用表名,如何引用变量 dd  问题4如何判断表名存在,存在就读数,否则跳过
mg.DataTableName = "试验临时数据" '指定接收数据的表
mg.Merge() '开始合并   

 

   '问题5 如何将当前数据源的名称写入到临时表的来源列中.

[此贴子已经被作者于2014-5-4 9:27:29编辑过]

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/5/4 9:24:00 [显示全部帖子]

mg.C  '指定数据源名称 这一句发不上来,改了N多次 还显示 mg.c

[此贴子已经被作者于2014-5-4 9:25:13编辑过]

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/5/4 10:54:00 [显示全部帖子]

关于数量定义的问题

按官方的示例可简单完成

Dim Names(3) As String
Names
(0) = "M197"
Names
(1) = "M196"
Names
(2) = "M195"
Names
(3) = "M194"

 

 

但这样写显然比较机械.

 

但再智能点不

 

因为这类数据源全部以M开头

 

能用一个简单通知点代码 直接生成 数据源的数组不.

 

那样当有数据源增加时.这类数据源直接用M打头增加即可.程序运行时即可自动加入数组中.

 

可以这样写的吧

 

For Each cn As Connection In Connections
     if left(cn.Name,1) = "M" then
      代码........

    end

Next

 


[此贴子已经被作者于2014-5-4 11:09:44编辑过]

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/5/4 11:04:00 [显示全部帖子]

问题3:你不是已经写正确了么?直接写dd便可

 

mg.SourceTableName = "t140425"  这是引用常量的写法

mg.SourceTableName =  dd              这是引用变量的写法

 

两种写法完全不一样

 

希望以后官方在相关示例时:均给出常用写法,及变量写法.

 

如数据源连接测试

 

Dim s As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\Northwind.mdb;Persist Security Info=False"
If
Connections.TryConnect(s) = False Then
MessageBox.Show("数据源无法连通!"
)
End If

 

这又是一个常量写法

事实上数据源已定义一般多有名称 如M197

那么要测试 M197这个名称的数据能否连通,又如何写代码?


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/5/4 20:38:00 [显示全部帖子]

'删除临时数据表报有行
For i As Integer = Tables("试验临时数据").Rows.count-1 To 0 Step -1
    Tables("试验临时数据").Rows(i).Delete
Next

'生成表名
Dim st As Date = Date.Now
Dim d As Date = Date.Today
Dim dd As String
dd = Format(d, "yyMMdd")
dd = CStr(dd)
dd = "t" & dd

'合并外部数据源中的数据到临时数据表中
For Each cn As Connection In Connections
    If left(cn.Name,1) = "M" Then
        Dim mg As New Merger
        mg.ConnectionName = cn.Name '指定数据源名称       问题是示例只直接引用数据源名称,如何遍历数据源
        mg.SourceTableName = dd '指定要合并的表   问题是示例直接引用表名,如何引用变更 dd
        mg.DataTableName = "试验临时数据" '指定接收数据的表        
        mg.Merge() '开始合并       
    End If
       For Each dr1 As DataRow In DataTables("试验临时数据").DataRows
            Dim Filter As String
            Filter = "来源" Is Nothing
            dr1("来源") = cn.Name
            dr1("日期") = st
         Next

Next

 

 

请教以上红色代码部份执行不正确,原想法是,每从一个数据源取得数据之后,就对 来源 为空的列自动写入当前数据源名称,事实经测试 写入的都是一个值.测试的数据源为两个,M197,M198 写入的来源全部是 M198.

 

请问如何能实现多数据源数据读到临时表中,能实现 来源列自动记录 所来源的数据源.


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/5/4 21:48:00 [显示全部帖子]

问题解决,谢谢

 回到顶部
总数 28 1 2 3 下一页