|
我们公司使用一个叫SYTELINE7的ERP系统,其数据库为SQL。本人只会一些简单的VBA代码,最近在其他人的帮助下,写了一些简单的代码,实现利用EXCEL的VBA登录服务器,从SQL中拿出数据放到EXCEL中,然后进行整理得到我们所需要的报表。这是一个非常常用而且有用的功能,只是老板出于数据安全的考虑,提出了如何确保SQL数据安全不被修改的问题,毕竟事关重大,如果出了问题后果可能比较严重。但是因为公司内部对这方面了解的人不多,自己又是半桶水,因而也一直无法回答这个问题,特此请教各位高手:
我写的代码绝大部分都是在一两分钟以内能够拿完数据并且整理完毕,不会占用很长的时间,其中拿数据的代码基本都是如下:
Sub CaptureRawData()
Dim CA As String
Dim i As Integer
Set cn = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
cn.Open "Provider=sqloledb.1;Persist Security Info=True;User ID=sa;Password=;Initial Catalog=abc_app;Data Source=192.168.6.2"
cn.CommandTimeout = 720
Worksheets("ItemLoc").Activate
Cells.Clear
CA = "select item,qty_on_hand,loc,mrb_flag from itemloc where qty_on_hand<>0"
rs.Open CA, cn, 3, 1
For i = 0 To rs.Fields.Count - 1
Cells(1, i + 1) = rs.Fields(i).Name
Next
[A2].CopyFromRecordset rs
rs.Close
End Sub
其他的代码基本上跟SQL无关,都是EXCEL内部的操作,那么,有以下几个问题:
1. 怎样有效确保我的代码不会修改到SQL里面的数据?
2. 因为ERP系统一直都有人在用,如何确保我的代码运行的时候对系统的运行速度影响降低到最小,类似这样的代码对系统的运行速度影响有多大?有没有可能造成系统瘫痪数据丢失之类的?
3. 某些时候,系统可能因为某些原因而处于死机(或者瘫痪?英文表达叫system hang)的状况,这种情况下VBA还有没有可能连接成功并且拿到数据?按照一些人的说法,可能系统瘫痪了,但是数据库还是处于可以连接的状况,这个时候还是可以拿到数据的。
4. 类似的VBA代码对系统以及数据库是否还有一些其他潜在影响?
因本人对这些都了解不多,望高手解惑,越详细越好,不胜感激。 |
|