两个我难以应付的问题
我在做自己的条形码系统中遇到如下两个问题:
有table1中的field1
1.vb自动产生一个5位数a,把a转化为字符窜,然后split它,每个数字为一个数组元素,5个数组元素再自由组合为一个字符窜,接着如果field1中没有该字符窜就添加该值,如果存在就再组合,或者再产生一个5位数,总之当记录数<=10^5时每次操作都得要插入一个值,作为主键的值.使用时间长了,当table1的数据(记录数<=10^5)庞大起来的时候,这个操作的效率就会越来越低,想问有什么办法提高其效率?使用自动id类型效率应该会好点,对吗?如果有什么更好的算法请赐教?
2.希望程序在每天的18:00:00都可以弹出窗口提示用户干某事的时间到了.数据库后台用的是access
问题点数:20、回复次数:12Top
1 楼of123()回复于 2006-05-01 00:35:12 得分 0
没看懂.Top
2 楼bulletCoderHope(九下九下做世界)回复于 2006-05-01 02:08:03 得分 0
第一个问题简单说,command1_click时都需要往数据库中添加一个以这个五位数组成的字符窜作为主键的记录.这个由五位数由vb随机自动产生,产生后转化为字符窜添加到field1作为记录的主键
2.18:00:00一到,sub heyheyhey()就要执行,不到就不执行.Top
3 楼tokimemo(紫水晶)回复于 2006-05-01 02:46:16 得分 5
第一个问题
你可不可以不用纯的随机数
我的想法是这样的
你需要一个记数空间(可能不小,大概要10^5)来存一下你用过的数
你每生成一个随机数,就用HASH算法放到空间中
不过我想的方法效率也不高
比如,现在随机出1~9的数,我放到一个空间为9的地方记录
随机数序列:(可能的情况)
4,7,5,3,4,8,5,1,9,3,3,2,7,6
空间中记录的顺序
000400000
000400700
000450700
003450700
003450700(4出现了冲突,软件自动向后寻找空位,4+2的位置是空的,我们认为插入的随机数是4+2)
003456700
003456780
003456780(5出现了冲突,软件自动向后寻找空位,5+4的位置是空的,我们认为插入的随机数是5+4)
003456789
103456789
103456789(9出现了冲突,软件自动向后寻找空位,但是没有,自动从头开始,第n位有空,我们认为插入的随机数是n)
123456789
123456789(3出现冲突,软件自动向后寻找,找不到,从头也没有,无法插入,满了)
这样虽然也很慢,但是不用再生成随机数,由系统自动调整
第二个问题一会再说Top
4 楼tokimemo(紫水晶)回复于 2006-05-01 02:49:56 得分 0
第二个问题
弄个定时器,每30000s(最大不是65535ms么)
检测一下系统的时钟(date()函数)
看看时间到了没,到了就call heyheyheyTop
5 楼woolnil(深海贝壳)回复于 2006-05-01 09:47:35 得分 5
第二个问题用Timer控件很容易,每30S检查一次系统时间Top
6 楼of123()回复于 2006-05-01 10:23:51 得分 5
如果仅仅就是一个记录 ID,不妨用自动增加字段。Top
7 楼bulletCoderHope(九下九下做世界)回复于 2006-05-01 12:26:52 得分 0
第一个问题,用数据库的自动id类型效率会很高,但是还需要根据用户的操作来自动创建新表,表的自动id最少需要2个,有时是3个,甚至4个的自动数字类型字段来根据商品类别组合出条形码
这个问题是我用来为没有条形码的商品根据其类别(该数字列就表示了商品的类别--当然是包含了父子类别的了)来自己设计并自动打印条形码.
第二个问题,我也考虑到你们的方法,我是觉得直接利用timer 控件,效率会有点问题,如果这样可以的话,我完全可以设置为每秒钟检查一次系统时间的啊,这样就保证准确了.也许在这里使用一下doenvents还可以
如果楼下也没有什么好的办法的话,就只能这样了Top
8 楼lsftest()回复于 2006-05-02 12:43:46 得分 0
1.请给出实例。。。。。。
2.如果只是提示,可以把这部分功能独立出来,用系统的计划任务完成。。。。。Top
9 楼bulletCoderHope(九下九下做世界)回复于 2006-05-02 16:31:36 得分 0
我没有实例,但这是我自己构思的一个为弥补市场上有些没有条形码商品的自动被扫描仪器识别的算法.
1先对没有条形码的商品进行分类包括顶层类和子层类,为顶层类和子层类各建立一个表,父子层类的表要形成1:n关系,1开头的代表该商品的厂家没有为商品制作形码,顶层的类表就以其类别号(如13000代表五金)作为主键,而它紧接着的子商品类号(如44444,螺丝刀),则二层子类表主键为1300044444假设代表泰国),然后为所有大小\规格不同的螺丝刀又设计出一个id,让13000444441000代表15cm的,让13000444441001代表25cm的,其他字段就是进货价,销售价,货存量之类的其他信息了.
2.设计条形码打印系统,把以"1*"的商品都查询出来,将其id号打印出来作为条形码上的识别数字
就作为barcode control 的value属性,使用bitblt 等几个api函数,配合stream对象,把它存到数据库去,等商店在使用过程中,缺少那些就查询出那些来打印.Top
10 楼lsftest()回复于 2006-05-03 08:49:21 得分 5
?????????????????不明白。。。。。。。。。。。。。。。。
如13000代表五金,如44444,螺丝刀。。。。怎么会“则二层子类表主键为1300044444假设代表泰国”?????????
目标是否想得到一个随机的,不与现有的类别号重复的新类别号??????
生成不重复的类别号好办。。。但要随机则用access比较麻烦,用sql server会简单很多。。。。
Top
11 楼bulletCoderHope(九下九下做世界)回复于 2006-05-03 14:14:01 得分 0
谢谢了,用sql server会简单很多,这个我也知道,只是我对sqlserver不熟练,当我去开发网络版本的时候我就直接使用sqlsever了Top
12 楼Jerryball()回复于 2006-12-20 12:54:05 得分 0
给我指导指导吧。谢谢http://community.csdn.net/Expert/topic/5214/5214940.xml?temp=5.898684E-02Top




