小弟做了个样品添加的程序,每次加一个样品,编号就加一,比如B1,B2......BN。可是当其中一些编号被修改清除后,再添加样品时,应该能够填充以前被清除的一些编号,比如原来 B1 ,B2, ,,,B6,再添加时编号应该是B3.我编了几个都不理想,用数组操作,谁以前做过类似的程序,请给个成熟的思路,谢谢大家

解决方案 »

  1.   

    可以声明一个数组,让每个元素的值对应你的编号下标,比如B(0)=0,B(1)=1......B(N)=N。
    在修改编号的时候,可以为对应的元素赋一个无意义的值,比如-1。在添加的时候,从数组的第一个元素开始逐个判断,找到值为-1的就可以了。如果没有找到,就可以redim了。
      

  2.   

    这个我也想过,可是我的样品很多,而且还有很多不同的样品,就得定义多个数组A(),B(),C()....
    会占用很大的内存吧,而且中间被修改的地方再添加的时候可能是其他类的样品,就不能按照同一个数组进行操作。
      

  3.   

    声明一个2维数组 0存ID 1 存状态 
    在每次存储时 查询已有的所有数组 速度非常快的 还有 
    会占用很大的内存吧好像不会 我的程序 时结构体加N个数组 都不慢
      

  4.   

    自定义类型:
    type MyProduct
         PID as long  
         IsEpt as boolean
    end type
    声明数组:
    dim arrProduct() as MyProduct
      

  5.   

    这个我也想过,可是我的样品很多,而且还有很多不同的样品,就得定义多个数组A(),B(),C()....
    会占用很大的内存吧,而且中间被修改的地方再添加的时候可能是其他类的样品,就不能按照同一个数组进行操作。
    ------------------------------------------------------------------
    添加不同样品肯定需要操作不同的数组,至于是A还是B还是C,你自己应该很清楚啊。
    定义类型也是可以的,如果样品多,用自定义类型更好。
      

  6.   

    就像TAB 顺序一样,不过我的不是只一个顺序,根据不同的样品类型,有不同的顺序,一个顺序里可能
    被改为其他的类型的顺序,挂个数据库可能太繁琐了吧
      

  7.   

    先把你的数组按照顺序号排序
    i1=最小顺序值
    for i2=最小顺序值 to 最大顺序值
      if i1<>i2 then i1就是你要的顺序号
      i1=i1+1
    next
      

  8.   

    呵呵,我也是这样做的阿,我是用do while 做的,就是需要很多判断,有一点没想到就会死机,用for 我不能确定最大值。exit for 好像不能跳出多重循环,不行就用goto 了。