首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

EXCEL vba 开发实现数据创建及更新的有关问题

2013-09-23 
EXCEL vba 开发实现数据创建及更新的问题各位站友大家好,我是做自动控制的,我们经常要做IO表和电缆表(均为

EXCEL vba 开发实现数据创建及更新的问题
各位站友大家好,我是做自动控制的,我们经常要做IO表和电缆表(均为EXCEL格式)。第一个表示用于设计和维护使用,第二个表供施工单位使用,虽然第二种表也包含了第一张表的信息,但行业规定必须出两种格式都交付甲方。这就造成了重复工作,而且修改时容易遗漏。因此,希望开发一个VBA程序读IO表的内容自动生成电缆表。

简化的说IO表包含关键内容和格式如下:(假设只有8行数据,一般来讲是8的整数倍行的数据作为一组,一个IO表里有若干组)
---------------------------------------
硬件地址   名称   去处          
1.0        a1     POS A    
1.1        b2     POS B   
1.2        备用
1.3        c3     POS A
1.4        c4     POS B
1.5        备用
1.6        备用
1.7        d1     POS A

---------------------------------------
对应的电缆表就是:
电缆编号  去处     地址   含义 
101       POS A    1.0    a1
101       POS A    1.3    c3
101       POS A    1.7    d1

102       POS B    1.2    b2
102       POS B    1.4    c4
----------------------------------------
当然对于电缆表还要将同一根电缆的部分单元格合并之类,这里就不体现了,也不是关键内容。

比较麻烦的地方体现在:
1.每根电缆内包含的IO数量不能无限增加,例如只有3芯,6芯,8芯,10芯几种规格。(最后剩下单个的点可以放到3芯的里面)可以优先选择多芯的。而且一般一个IO点需要2芯至6芯线不等。
2.如果IO表里面新增点,不是加到最后面,因为IO点只能是8的整数倍是根据不同硬件型号来的。所以新增的点只能加到之前预留的备用点的位置。这就造成一个问题如果有新增IO点,这个点就会加到中间的位置。或者某些点去处改变了,例如去处由SECTION B改为SECTION A, 或者某点转到了新增的SECTION C的去处。这样的话重新生成电缆表就可能造成全部电缆编号的重新排列,包括每根电缆采用几芯的也有可能就变了。但此时原始电缆表已交给施工单位所以不能总是完全更新,只能是保留旧的,然后新增或删除电缆。所以程序功能要分为新建电缆表和更新电缆表两种情况。更新电缆表就需要先读已经生成的电缆表的信息,再结合新IO表做修改。
----------------------------------------
请问用什么数据结构处理这个问题比较好


希望大家指教。谢谢。 excel vba 数据结构


[解决办法]
首先两个表关联生成新的表
EXCEL vba 开发实现数据创建及更新的有关问题


问题3.三条(现在应该叫三组了)或以上记录进行交换
交换规则需要改变:
原规则:
查找电缆编号 b.去处 a.去处 不相等的记录 这是即将要添加新电缆或者要进行变更的记录 
1.为其寻找另一条b.去处等于其a.去处 a.去处等于其b.去处的记录  将他们的电缆编号进行交换
2.如果由 1.步骤  无法找到这样一条记录  则表明此条记录是要进行单独的添加或删除
新规则:
查找电缆编号 b.去处 a.去处 不相等的记录 这是即将要添加新电缆或者要进行变更的记录
1.为其寻找另一条(另一组)b.去处等于其a.去处  并且这个另一条(另一组)记录自己要满足b.去处  a.去处 不相等    将他们的电缆编号进行交换
1.0从A换到B,1.1从B换到C,1.2从C换到A 
假设先为1.0寻找要交换的记录  找到的是1.1  则将他们交换  经过  1.步骤  的处理后变为 
1.0从B换到B,1.1从A换到C,1.2从C换到A 
而  1.步骤  是一个不断重复的过程  接下来也会为1.1寻找要交换的记录  1.2会被找到  进行交换  
1.0从B换到B,1.1从C换到C,1.2从A换到A
2.如果由 1.步骤  无法找到这样一条记录  则表明此条记录是要进行单独的添加或删除(此步骤没变)

[解决办法]
问题1
T1:1~6   T1:1,Z   这两种形式通过vba解析单元格   然后把一条记录拆分成多条    然后读入access 关联


至于方案是否可用   我看来没什么问题    当然实际操作中可能会遇到更多的问题



问题2
电缆表里 将空出的芯数以记录的形式补齐
然后进行关联
不过access在地址为空的情况下无法通过 IO表关联出所有电缆表的记录  所以此种情况需要特殊考虑


只有引用    以上.....
[解决办法]
没有附件,只能提供一个方案
把excel当做平台,用于给自定义的两种/N个结点的接线系统提供文件,每个结点可以连到另外一个结点上。
每个结点由用一个单元格表示
显然,手工完成/维护这东西,又麻烦又容易出错

具体
首先需要保证excel的一张sheet表,能将你的工作内容放进去
建立编号模式
为了方便工作,单元格需要变色(这对excelVBA是简单的工作)
做组件,也就是做一些通用代码,使用类模块(这个有点难)

总的思路是
充分利用excel所见即所得,单元格有丰富的功能的特点
灵活建立单元格之间的关系
当然不能忘记编码的作用
用excel,就要充分利用excel的特点

热点排行