回 帖 发 新 帖 刷新版面

主题:[讨论]求教前辈VB数据库编程的问题

我想编写一个在我单位所使用的一个程序,会用到很多个数据库(约10个左右),编写刚开头,觉得写不下去了,原因就是我对数据库编程很不了解,附件就是我刚编写开头的程序。现在遇到3个问题,希望能得到前辈们的指点:
1、这么多(10个)的数据库控制都写到一个主程序里(大家看我的FORM2的Private Sub Form_Load()就明白了),可以么?会不会出什么问题?


2、“表单输入”栏中的“品种”下拉菜单,读取并显示“in-Data.mdb”中的“产品型号”列,怎样不重复显示?应该怎么修改?


3、我想把“表单输入”栏中的“品种”下拉菜单和“批号”下拉菜单相关联,也就是说,如果我在“品种”下拉菜单中选择了“a”,则“批号”下拉菜单中只会出现“a1,a2,a3”,同理如果我在“品种”下拉菜单中选择了“b”,则“批号”下拉菜单中只会出现“b1,b2”,程序应该怎么写?


我对数据库编程的知识很不全面,实在写不下去了,求前辈能在我的程序中加以编写和修改,然后再挂上来,供我学习。



另外,想请问一下前辈们,我比较推崇在实例中通过修改、增添、删除语句来达到我学习VB的目标,不太爱看教材,这样学习VB会不会太浮呢?也就是说底子不牢靠。

回复列表 (共1个回复)

沙发

1、各个数据库如果同时处于读写状态,应该每个单独使用一个独立的连接;如果不同时,可以考虑连接公用。目的是减小资源开销。这里不存在能不能放在一起的问题。但是应该考虑除了FORM2,其他的窗体或者模块是否需要用到数据库?如果别处不用,连接就可以放在FORM2里;如果别处要用,可以另行设置连接,也可以把连接声明放到“标准模块”里(我倾向于使用后者)。
2、有两种方案,一种是在数据库里解决,另一种是在vb里面解决。方案①复制该表为一个临时表,删除无关的列,只保留你需要的列,然后删除重复记录(语句模式为Delete from tablename where id not in (select max(id) from tablename group by col1)),最后将该表内容写入组合框并删除该临时表。方案②将数据库的对应表的对应列包括重复的都写入组合框,然后对组合框从下标为listcount-1的数据项(也就是最后一项)开始与前面的各项对比,删除前面相同的;直到检查到下标为1的那项。当然也可以先写入一个数组,处理完后写入组合框。
3、将所有的批号写入一个数组。在品种组合框变化(也许是单击?你试试看)的事件中,首先清空批号组合框,然后从数组里循环对比【if left(批号(i),字符长度)=combo品种 then combo批号.additem 批号(i)】。
至于你的学习方法问题,个人的情况和目的不同,我不好妄加评论。

我来回复

您尚未登录,请登录后再回复。点此登录或注册