学VB学了一段时间了,感觉基本的东西已经掌握了,想向更高的方向发展,可是找不到一个很好的切入点,请各位给点意见。我现在主要做的VB数据库编程,数据库主要用的SQL和Access。

解决方案 »

  1.   

    用VB开发一个Excel或Access来,你的水平就可以达到一个新的阶段.
      

  2.   

    如果你决定从事数据库信息系统的开发,就模仿SAP的中小型企业软件SBO来开发一个类似的软件.
      

  3.   

    以下转自CSDN文档:                       VB和COM的宝书
    关键字:Advanced Visual Basic、VB、COM、高级、书评
    难度:高级    Matthew Curland的《Advanced Visual Basic》,一本不折不扣的VB宝书。一个星期前我终于收到从上海新风雨网络书城(http://www.cnforyou.com)邮购的这本书的中译本《高级Viusual Basic编程》。中国电力出版社2001年5月出版,时隔近一年还能够买得到,可见这本书卖得不算好。这几天挑灯夜读,感慨不少。所以虽然我对这本书的理解还不到二成,虽然我自己都觉得没有任何资格来为这本书写书评,但还是来谈点自己的感想。
        下面所说的,有些完全是个人观点,非常无知,请您不要笑。    一、宝书还是天书?
        《Programming Distributed Applications with COM and Microsoft Visual Basic 6.0》一书的作者Ted Pattison是这样来评价《Advanced Visual Basic》:这本书能够把我们带到别的讲VB和COM的书都不敢去的地方,如果你拒绝承认那些常人所接受的VB局限,这本书肯定适合你。
        Francesco Balena(《Programming Microsoft's Visual Basic》一书的作者,也是一位VB大师级人物)在这本书的前言里说不要在睡觉前看这本书否则会睡不着。的确,因为这本书实现了太多让人激动不已的东西。
        只需要用两个小时把这本书翻一遍,就能感觉到Matthew Curland这位VB大师的功力,就能理解什么叫真正的深入。
        可以说,这本书是VB深度探险所必备的一本魔法书,它为VB英雄们全面展开了COM的地图。不过学习它需要很高的力量、法力和经验值,如果你的等级不够,就只能把它存放在宝物箱里,而不能把它带在身上。
        因为要象Matt这样深挖VB和COM技术,需要非常全面的技术功底。不怕你笑话,我看了几天,很多地方我都无法理解,这一方面是因为中文翻译较差,另一方面也是因为很多COM方面的细节问题Matt都没有好好解释。
        因此在看这本书之前,还是应该先看看其它COM原理方面的书,以打好基础,否则这本宝书就会变成一本天书,只能用来治疗失眠。
        
        二、高级还是低级?
        VB是一门高级语言,她建立在COM之上,她很好的隐藏了COM繁琐的细节。可是Matt这本书却要把低层的东西挖出来给我们看,并且从底下重新构建以完成在VB里一些被认为不能实现的COM技术。
        要在VB里真正玩转COM需要什么?没有真正的指针技术,因此就得用SafeArray来变通的模拟;没有真正的函数指针,所以就有了需要用机器代码实现的FunctionDelegate。有了指针技术,才能控制类厂,才能定制QI,才能实现接口聚合,才能实现轻量级的COM对象系统。
        于是,我们能够脱光VB为COM穿上的衣服,我们才可以玩GUID,玩接口的老祖宗IUnknown。玩了这些基本的,Matt还要玩在C++里都不一定人人玩得转的自由线程,他还要玩自己的内存分配管理器。玩得真是够深了,玩出一个很不错的VBoost类,玩出几个很有实用价值类型库工具。
        Matt真是很会玩,在他的网站www.PowerVB.com上,他放了一张小孩子时的照片,很顽皮,虽然少了两颗门牙,但笑得很开心。我能够想象Matt在VB里玩这些深入底层的东西经历过多少次GPF,经历过多少次痛苦的失败。虽然他曾经是VB开发小组的一员,虽然他知道一些内幕,但是好多VB内部实现上的BUG是他亲手挖出来的。所以没有他那样的乐于突破,不怕失败的精神,就不可能象他那样玩转这么多别人想都不敢想的技术。
        问题是作为高级语言的VB应不应该玩这些东西。我想把这本书名里的"Advanced"翻译成"高级"并不好,因为这并不是真正高级的东西(后面会讲到真正高级的.NET),相反这本书里有很多非常Low Level的东西,为了区别中文"高级"的二义性,这本书的名字应该翻译成"深入VB编程"更贴切一些。
        我个人是非常喜欢玩Matt所玩的这些东西的,虽然水平上和他相差十万八千里。其实,对这些技术的评价很大程度上成了个人喜好的问题。你可能根本就无法说服你的VB项目经理,虽然你能够告诉他把所有的内部对象都用轻量技术来实现会快很多,而且实现起来也并不是太复杂,但是他还是会用一句话掐死你:"老兄,看清楚,这是VB!我们需要的是更简单而不是更快,我们不需要这些低级的东西"。当然,会有例外,如果你的项目经理是Matt,他肯定会以他的权威来赞同你的观点。
        客观的说,任何时候,任何语言,无论它多么高级,了解底层和系统都是很必要的。而由于VB非常依赖COM,所以深入了解COM的底层细节是实现VB高效对象技术的基础,也是写IE和Shell扩展的基础。当然,Matt这本书却不是为COM初学者写的。即使是高手,学习这本书也一定要有所取舍,要考虑那些看起来很过瘾的低层技术是不是真有应用价值。无论如何,Matt这本书正是针对VB深入COM极地的一本好书,它让我们真正看清了VB在底下所做的一切。    三、简单还是复杂
        前面说了Matt的书讲了很多底层的低级的东西,所以学习起来会感觉到很复杂。的确,这本书不是几天就能够理解的,我想这还是因为我基础太差吧!
        其实高级和低级,简单和复杂都是相对的,COM对于用熟ATL的人来说,其实并不算什么底层,也不算复杂。但在VB,还有Java和.NET里COM成了底层成了复杂成了需要好好隐藏包装的东西。即使在Java里除了需要了解JVM,要和COM打交道一样还要会JNI,J/Direct。对任何技术而言,进行高级的封装只是为了更容易使用,不代表不需要了解底层的东西。广告说简单,也不要都信。如果有人告诉你COM,CORBA,SOAP很简单,那是要么是吹牛,要么他背地里花了不少时间学习过。很多被说成简单的东西都有大部头的书来讲,一个程序员一生为了学习这些简单的技术,需要看N本复杂的书,问题的关键是如何来把这些复杂的书看得简单起来。
        以Matt的这本宝书为例,这本书之所以显得复杂,是因为Matt想把自己多年的东西浓缩到一本书内。但有些地方实在是太浓了,所以根本就化不开。那些喜欢并且专啃硬骨头的高手专家大师们吃起来觉得很有嚼口很有味道,但一般人的消化能力是适应不了的,吃起来可能会伤身体。所以,不要听Ted Pattison和Francesco Balena说Matt这本书多么好多么好,就以为我们看了就能够一定能够有收获。
        前面一直在说它的好处,现在要谈谈它不好的地方了(请高手们看到这里不要起哄,如果你觉得这本书非常非常适合你,那是因为你牙齿和肠胃厉害,我对你的景仰如涛涛江水……)。
        我不得不说Matt不是一位会写书的大师。虽然整本书处处都是宝,但要捡哪一个都让人觉得不容易。这本书要是顺着看肯定要睡着,你要经常去翻翻后面,找些让你激动的东西。其次,Matt过于高估了读者的接受能力,把有些推理当成定理来讲了,让人很不容易理解。再次,有些地方的确过于复杂,过于追求完美。
        就拿Matt的多线程的实现来说,为了避免DoEvent的重入问题,他用了一个模块来自己处理COM隐藏窗口的消息,这玩得其实太深了。所以Matt的实现用了许多个类,使用起来也不方便。其实已经有高手在Matt的方法的基础上做出了更简单更易用的实现,以后我会来介绍。
        我想,就大多数VB开发者来说,其实用不着学习那些实现上过于复杂的技术,即使这些技术有用,但和学习这些技术所需要的投资相比,我们还不如把时间花在回报更高的问题上。
        要想把Matt这本复杂的书看简单,就得有所侧重,取其精华。我想这本书的精华在于Matt他提出的VB轻量对象系统,这在VB里很有价值,因为VB所生成的完整的COM对象的其运行开销不小。轻量对象其方法和原理并不复杂,如果我们的目标只是会用这种技术,那么我们并不需要过多了解实现上的细节问题。Matt所提供的VBoost类已经封装的不错了,会用接口聚合器,理解接口函数是如何重定向就足够做出高效灵活的对象了。
            
        四、有用还是没用?  
        我前面就说过Matt这本书处处都是宝,但如果你刚用VB不久,这本书对你没用,我建议你找本书直接去学VB.NET。你很幸运,入门在.NET出现的时候,你的确可以不必了解COM繁琐的底层细节,而直接享用COM+。你只需要对COM的原理有一个大概的了解,就能够做出高效灵活的组件。这得益于.NET框架所提供的共公语言运行时CLR,它设计上就比VB所依赖的VB和COM的运行时高级得多。
        VB.NET已经有了真正的Class,直接支持实现继承,即不象原来在VB里那样要把继承的函数一个一个代理到基类函数上,也不用象Matt那样自己来实现接口函数指针的重定向,一切就象在C++在Java里一样简单而清楚了。在VB.NET里实现支持对象访问的自由线程也只需要数行代码,而不需要象在VB里那样要去用OLE API要自己来处理列集接口。
        .NET所吹嘘的一大优点之一,就是完全隐藏了COM繁琐的细节,现在COM已经完全在公共语言运行时控制之下了。相比之下,虽然VB也竭力隐藏COM细节,但是VB运行时只是COM一层薄薄的包装而已。
        有了.NET,是不是说Matt这些技术就真的没用了呢,有了.NET是不是就真的不用去学习COM了呢?要想不学习COM,除非现在的无数COM组件都真的消失了,除非目标系统都是.NET的,除非大家都进步到了WEB服务。虽然这肯定是一个趋势而且发展得很快,虽然微软有得是钱来推动它认准了是未来一统天下的东西,但是现在学习COM技术也决不会白学,至少很多思想是互通的。
        所以不要去计较有用还是没用的问题,学了的东西都不会没用。当然,对Matt的这本书应该去研究学了就能用的东西,我不准备在这本书上花太多的精力,我已经准备留下点时间去学习一下.NET。
     
      

  4.   

    可以先做个项目,边学边做可以进步更快!再学.net的
      

  5.   

    都说要学.net,
          想想……,还是转吧
      

  6.   

    你 现在自己能独立完成一个系统的话,那你可以向VB.NET的方向发展了,那时候你就会感到挑战性了 !!!
      

  7.   

    向.Net进攻,vb没什么好玩的了,过不了多时就要被淘汰!!!!
      

  8.   

    呵,帮我做个信封打印程序吧
    http://community.csdn.net/Expert/topic/3637/3637977.xml?temp=.2862055
      

  9.   

    newsuperstar(争取早日发光):原来我也学JAVA,但后来发现JAVA用起来很不爽!
    还是学VC++吧。楼主可以用VB+SQL开发出一套数据系统
    比如偶的风火车辆管理系统,就是VB+ACCESS做的。
      

  10.   

    cindytsai(笨笨的蔡鸟) :确有同感,尤其是数据库方面,现在算了我也做了三个项目(都不大),感觉总是那么点东西,翻来覆去的用。
      

  11.   

    To 楼主:
       你想提高吗? 那你就去研究我所提出的问题:
      
       SQLServer数据库远程访问的“超级难题”     http://community.csdn.net/Expert/topic/3411/3411721.xml?temp=.9122431   你如果把我的问题解决了,你就前进一大步了。