posts - 21,  comments - 60,  trackbacks - 3
    现在手头做的工作是给一家公司做奖金结算系统,之前也是有个程序员做的(我也纳闷儿,怎么现在做的都是别人失败了才让我做),在用他的程序计算了两个月左右的时候发现总出计算错误,然后这家公司让我做。用我的计算了这么长时间了,也没出过什么问题,前天忽然说因为前面的出错的已经都发出去了,和现在数据库里的数据不一致,要把数据库里的数据改过来(现在终于明白了什么情况下错的也要当成正确的)。我一看不能让用我程序的文员直接修改数据库啊,再写短程序也没必要,我就让他们把数据整理好后我来修改,结果一天没和我联系。昨天早上发给我了,我一看傻了,21个Excel文档!
     一开始我就打开SQL Server企业管理器,用SQL语句读出一个Excel文档记录的数据,然后开始修改,当改到第四个时,发现弄串了把第四个的数据改到第三个了。这个时候,我又看了看Excel文档,忽然想到用宏能不能解决呢。
     因为更改数据库主要就是需要三列数据,选择Excel的三列复制到文本文件,每列之间是用制表符分开的,用宏也没办法把每一行数据做成SQL语句,无奈之下只好复制作为查询的那一列,然后用宏组建成一条SQL查询语句,这样最起码不用再一个一个的查找了。弄了一天好不容易弄完。一边弄一边还告诫自己:抓紧时间学习一下代码生成的东西,以后就不用这么累了。
     今天早上睡梦中忽然想到一个办法,惊醒,然后开机尝试,成功了!
     是这么做的:
     用SQL Server把Excel中那三列导到一个表里,然后再导出到文本文件,列与列之间用分号分隔,这样就得到下面这种格式的数据:
     0;1995;'lxh'
     100;0;'1992'
     1500;15;'519'
     50;12;'337'
     好了,用VS.NET打开这个文本文件,把光标放在第一行开始记录宏,然后输入:update bonus set teambonus=,然后查找';',这时0后面的分号被选中,接着输入:,managebonus=,然后再查找分号,接着输入一个空格,然后是where memberid=,然后把光标移到下一行,停止记录宏。
这时候第一行就变成了update bonus set teambonus=0,managebonus=1995 where memberid='lxh'。好了,剩下的就是对着这个宏开始疯狂的点击了

     昨天没有实现其实就是因为直接从Excel表格复制到文本文件,这样在宏记录的时候,无法判断三个数据之间的分隔符,也就无法组建新的SQL语句了。
posted on 2005-11-18 07:08 山伟 阅读(...) 评论(...) 编辑 收藏