在VB数据库编程过程中经常遇到而无法解决地问题?

skywee 2003-02-26 12:52:26
我在工作中用的基本上是MSSQL+VB,在这当中经常碰到一个问题,我打个比方:有很多个表和3个视图,其中2个视图的查询是基于这些表的(暂且称这两个视图为基本视图),另外一个视图的查询是基于上面提到的这两个基本视图的(暂且称它为高级视图)。我所要用到的就是这个高级视图返回的记录集。我再做个假设,这个高级视图返回的是一个库的库存;这两个基本视图返回的分别是入库单和领料单记录。比如现在是2月份,我要返回1月份或者是去年12月份的库存(简单返回这个高级视图的记录集只是到目前的库存),那么我就需要修改这两个基本视图的查询条件,加上"where Date>=2003-1-1 and Date<=2003-1-31"语句。而这个条件语句是根据用户在你的VB程序对话框中输入的日期决定的。所以你需要在程序运行中修改这两个视图的where语句,当然你也可以用alter view来完成这个任务。
但是,注意:我上面的只是比方,实际上我返回这个高级视图需要有20多个基本视图和基于基本视图和高级视图之间的中间视图,我不可能用alter view去修改视图的查询(这样很费力)。我如果用程序中的代码来实现也可以,但是速度相当的慢。
所以我想问:在VB中能不能对VB中通过数据库联接返回的记录集进行再次嵌套的查询(select),就像在MSSQL中一样,可以对视图再次进行很多次的select?
为什么要这样做呢,因为我可以在VB中很方便的改变掉“基本的记录集”,已此来改变最终返回的需要的记录集?
...全文
61 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cg2 2003-03-02
  • 打赏
  • 举报
回复
倒,写存储过程阿,临时表是临时的,用完后自动会删除的,你何必担心?

你这种开发其实根本是vb+access的开发方法,这样是不对的。sql server是支持select 套嵌的(access也支持,你也不会用吧?)。而且你可以在存储过程、视图、内嵌表函数之间选择,你却选择了 视图 的“套嵌”?
如果一个视图能够被另外一个视图套嵌,那么就意味这这两个视图明明可以写到一个视图里面的(就是写成一句select语句),你何必写2个哪?而且还用alter来改参数,这种方法本身就是个大错误,性能下降是必然的。
找寻蓝色的海 2003-03-02
  • 打赏
  • 举报
回复
思想问题!学
skywee 2003-03-02
  • 打赏
  • 举报
回复
我觉的如果全部写成把所有的嵌套视图写在一起,会影响可读性和可维护性。
也许能用过CREATE function 来替换所有的“基本视图”和“高级视图”(既嵌套视图)。但是具体怎么实现呢?能给一个具体的代码吗?比如实现如下功能:
视图1:create view view1 as select * from table1 where 条件(这个条件需要根据用户的条件来改变)
视图2:create view view2 as select * from table2 where 条件(这个条件也需要根据用户的条件来改变)
视图3:create view view3 as select view1.*,view2.* from view1 inner join view2 on view1.ID1=view2.ID2
skywee 2003-02-28
  • 打赏
  • 举报
回复
帮忙UP!
chenyu5188 2003-02-27
  • 打赏
  • 举报
回复
将常用的操作写成存储过程,随时都可以调用
skywee 2003-02-27
  • 打赏
  • 举报
回复
我数据库中的表一共有100多个,在程序完成以后,80个表左右都设计到查询,那么我难道需要建立80多个临时表,那么视图呢,如果建立临时视图,也需要80多个啊。建立临时表这个方案是否可行?
我现在的数据汇总是在VB中对几个基本表的记录集进行汇总(用算法)实现的,速度很慢,如果我用同样的方法(算法),但是用存储过程或触发器来实现,速度是不是会快。
skywee 2003-02-26
  • 打赏
  • 举报
回复
如果对于月报表,这确实是个很好地办法。但是我现成的程序是:当用户需要时,可以随时根据用户需要汇总数据。如何在VB中去触发这个触发器,是一个问题?当然可以建立一个特别的表,把触发器建立在这个表上,然后当用户查询时,将查询条件写入这个表并同时触发这个触发器。这是一个办法,还有别的更好的办法吗?希望我们继续讨论。。。。。。谢谢大家!
forrestsun 2003-02-26
  • 打赏
  • 举报
回复
你可以在SQL中做一个触发器或存储过程
当一天条件成立后将所需数据导入一张新建的表中
这样你就可以节省很多的时间和精力
我现在做的一个数据库也是这样
每一个月汇总一遍数据将其导入到一个表中以备查询,效果很好
你可以试试
skywee 2003-02-26
  • 打赏
  • 举报
回复
jzmark,你能不能写一个具体地代码或举一个例子让我看看,我很想也很急迫要解决这个问题。现在库存查询地速度是5分钟,天哪,你能忍受吗?
jzmark 2003-02-26
  • 打赏
  • 举报
回复
既然是这么复杂的查询为什么不通过临时表和存储过程的方式来进行解决呢,可以通过临时表不断减少数据量,然后关联的话速度会快很多。
skywee 2003-02-26
  • 打赏
  • 举报
回复
我现在就是直接在表中查询,但是当中的算法是非常“复杂”的(这个复杂就是指循环嵌套循环太多)。所以查询速度非常慢,比在MSSQL中直接用视图select视图要慢10倍左右。连我自己都无法忍受,但是我想了好几天,也想不到更加好并且简单的算法。我现在比较忙,等晚上我会把详细的描述写在这里,大家可以帮我看看。谢谢你们的热情。
lxcc 2003-02-26
  • 打赏
  • 举报
回复
所以我想问:在VB中能不能对VB中通过数据库联接返回的记录集进行再次嵌套的查询(select),就像在MSSQL中一样,可以对视图再次进行很多次的select?

其实,执行一个view对应的时间是一个table的平方,再对若干个view再作view,时间是以指数级递增的,所以降低规模是必要的,用一些缓冲,临时表等方法,试试吧!
饮水需思源 2003-02-26
  • 打赏
  • 举报
回复
如果查询条件比较多且很难确定下来,我觉得还是直接在表中查询数据灵活
Girl1983 2003-02-26
  • 打赏
  • 举报
回复
up
enhydraboy 2003-02-26
  • 打赏
  • 举报
回复
请说的简单明确点
下面是这个系统的文档相关说明!

目 录
摘要 1
ABSTRACT 2
前言 1
第一章 系统概述 2
1.1 系统介绍 2
1.2 课题目的及意义 2
1.3 主要设计功能 3
第二章 开发方法的选择 4
2.1 开发工具的选择 4
2.2 WINDOWS下的VISUAL BASIC 编程环境介绍 4
2.2.1 Visual Basic的功能简介 4
2.3 使用ACCESS2000 实现关系型数据库 7
2.3.1 数据库的概念 7
2.3.2 新建一个数据库 7
2.3.4 实现数据库之间的联系 8
2.3.5 关系型数据库的实现 8
2.4 二者的结合(DBA) 9
2.5 硬件开发环境 9
第三章 系统分析 10
3.1 系统分析的重要性 10
3.2 需求分析 11
3.3 可行性分析 11
第四章 系统总体规划 12
4.1 系统功能结构 12
4.2 系统流程图 14
4.3 总结 14
第五章 系统详细设计 16
5.1 系统子模块功能概括 16
5.2 用户界面的实现 16
5.2.1 登录界面 16
5.2.2 主界面 17
5.2.3 系统管理界面 18
5.2.4 学生档案管理界面 19
5.2.5 班级管理界面 24
5.2.6 学生交费管理界面 24
5.2.7 课程管理界面 25
5.2.8 成绩管理界面 26
5.3 数据库的实现 27
5.4 系统的特点 31
5.5 目前存在的问题及改进意见 31
第六章 系统测试 32
6.1 系统测试的分类 32
6.2 系统测试工作的特点 33
6.3 本章小结 33
第七章 结论 34
第八章 致谢 35
参考文献 36

摘要
学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。
经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
关键字:控件 窗体 域 VISULBASIC ACCESS数据库

Abstract
The system of managing student file is a typical application of managing information system (know as MIS),which mainly includes building up data-base of back-end and developing the application interface of front-end. The former required consistency and integrality and security of data. The later should make the application powerful and easily used.
By looking up lots of datum, we selected Visual Basic presented by Microsoft because of its objective tools in Win32. VB offered a series of ActiveX operating a data-base. It can give you a short-cut to build up a prototype of system application. The prototype could be modified and developed till users are satisfied with it.
Keywords: ActiveX Form Field VB Access DataBase

前言
学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决
策者和管理者来说都至关重要,所以学生信息管理系统设计是以能够为用户提供
充足的信息和快捷的查询手段为核心内容的。一直以来人们所使用的传统的人工
管理文件信息的方式实在是太落后,它存在着许许多多的缺点,效率低、保密性
差的问题尤其突出。另外工作量稍微一大,将会有大量的文件和数据需要维护,
有些问题是人工所无法解决的。
随着科学技术的不断提高,计算机应用越来越广泛,其强大的功能已为人们
所深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计
算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法
拟的优点,检索快捷、查找方便、可靠性高、存储量大、保密性好、寿命长、成
本低等。这些显而易见的优点能够极大地提高学校管理人员的工作效率,也即
提高进行学生信息管理的效率。由于这些原因加之指导老师的睿智指导,选择这
样一个《学生信息管理系统》的设计也就成了必然。
下面我就谈谈《学生信息管理系统》的开发过程遇到问题解决
方法。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧