引导学思想开创IT培训新模式,以多层次Java培训为起点,知道自己要做什么
返回首页
当前位置: 案例培训 > 浩为IT培训 >

小语句解决大难题,IT需要简单化

时间:2010-04-15 10:58来源:数据库开发这点事 作者:喻桃阳 点击:
就如使用操作系统一样,你只要会用,而根本不需要明白操作系统为啥能那样用。你可以问问自己,你除了能使用之外,还了解多少操作系统的知识。

  一朋友碰到一个难题,请我帮他写个小程序。要求如下:
  有一个Excel文档,三张表格:NBS(近7千条)、Sheet1、CUSTOM(2万条)。里面内容是国内一些企业的资料,要求找出NBS和CUSTOM两张表格里同时出现的企业,即找出名称相同的企业,然后将企业名称和两个企业代码复制到Sheet1里面。
  那朋友先是手工操作,找了200多条,估计花了许多时间。但因为实在太多,只得请求帮助。

  我的做法如下:
  选中工作表Sheet1,从菜单中选择:工具 -> 宏 -> Visual Basic编辑器,双击Name为“Sheet1”的对象,将出现一个编辑窗口,如图6-9所示,椭圆选择区为双击的地方,方框选择区为代码区。下载地址:http://hwcall.googlecode.com/files/Howwe4-6.6.rar,其中“Sheet2”表为示范工作表,NBS和CUSTOM仅保留两栏信息。

(图6-9 Excel快速操作)

  copy以下代码,保存后关闭,任意双击Sheet1的一个单元格即可。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim cnn, rst
    Set cnn = CreateObject("ADODB.connection")
    Set rst = CreateObject("ADODB.recordset")
    'nbs列名: _COL0,_COL1
    'custom列名: PARTY_ID,PNAME

    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;';Data Source=" & ThisWorkbook.FullName

    Sql = "select b1.[_COL0],b2.PARTY_ID,b1.[_COL1] from [nbs$] as b1,[custom$] as b2 where b1.[_COL1]=b2.PNAME"
    rst.Open Sql, cnn, 1, 1
    Sheets("Sheet1").Range("a1:c10000").ClearContents   'Sheet2为测试用的工作表,换成自己的
    Sheets("Sheet1").Range("a1").CopyFromRecordset rst
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
End Sub

  也许很多人不懂VBA,但这是最简单的解决方式。其实用什么语言来编程,不是重要的。语言只是问题解决的体现,你解决问题的一种方式而已。所以我们更需要的是培养自己的思维,培养自己解决问题的能力。
  拿以上的VBA来说,除了这一句:Sql = "select b1.[_COL0],b2.PARTY_ID,b1.[_COL1] from [nbs$] as b1,[custom$] as b2 where b1.[_COL1]=b2.PNAME"之外,其他都是固定的,你也不用去了解为啥要这样写。就如使用操作系统一样,你只要会用,而根本不需要明白操作系统为啥能那样用。你可以问问自己,你除了能使用之外,还了解多少操作系统的知识。道理一样,编程时,我们很多时候只要知道用什么能解决问题即可。
  注:[_COL0]指标题为“_COL0”的那一列,如果没有标题,就用F1代表第一列,其他类推。

  就拿我自己来说,很少用VBA,还是99年才用过半年的VB,但我知道用VBA能解决问题,于是去Google资料,绝大多数人用的是vlookup。7000条数据,如果用vlookup,需要很长时间,所以我就查使用SQL的方式。
  这种方式看起来代码不少,但很多代码你根本不用去管,照样Copy过来,改一下你要查什么内容,即修改一下Sql的定义(这SQL语句的意思很简单,select你要的东西,from你要获取数据的地方,where你需要取的范围。不要觉着SQL语句高不可攀,其实这就和你想问题的方式一样),再改一下你要把数据放在哪里就行了。

  IT需要简单化,上面讲的方法很容易掌握,我相信你以后能用这解决更多问题。
  后记,为了告诉朋友怎么解决问题,写了一点简短的说明(内容为做法部分),并把这点说明发表为《Excel用SQL来查询,小语句解决大难题》(做法加需求),本节对此文进行深度挖掘,其实IT很简单,只是很多人把IT搞得复杂了而已。

(责任编辑:admin)
顶一下
(3)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名:密码: 验证码:点击我更换图片
推荐内容