根据Excel某列填写的值自动与SQL Server中的表实现对应自动更新
最近遇到了一个棘手的问题:
公司研发新产品时需要在Excel表中输入BOM,但是在BOM对应的物料信息都是在数据库对应表中存在的。
假设这个表名为A,那么,物料编号 A.ItemCode,标准价格 A.Price
现在想实现这么个功能,就是当我在Excel表中的对应列填入一个物料编号,那么在Excel的“标准价格”列就可以自动根据对应的物料编号,从ERP的数据库(SQL Server) 的A表中取得这个A.Price 字段的值,然后在Excel的“标准价格”列中实现自动更新。
ItemCode Price
101001
101002
如上所示,当我在Excel的ItemCode 中填写了一个物料编号后,那么我刷新下这个表,在Price一栏就能自动获得从SQL Server的对应表中查到的当前物料的标准价格。
问题比较急,还请各位前辈多多指教,小弟不胜感激~跪谢~
[解决办法]
随手写个例子,作为参考。思路是这样的,具体的参数还是你自己设定。而且好多细节还是得注意。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim conn As ADODB.Connection
Dim Rec As ADODB.Recordset
Dim strConn As String
Dim strItemCode As String
Dim strSql As String
Dim row As Long
Dim col As Long
'例如编号在A列,PRICE存放在B列
Application.ScreenUpdating = False
strConn = "Provider='sqloledb';Data Source='改为自己的服务器地址';" & _
"Initial Catalog='改为自己的数据库名称';Trusted_Connection=Yes;"
Set conn = New ADODB.Connection
conn.ConnectionString = strConn
conn.CommandTimeout = 15
conn.Open
With ActiveSheet
row = Target.row
col = Target.Column + 1
If col = 2 Then
If Target.Value <> "" Then
StrItemCode = Target.Value
strSql = "SELECT ItemCode,Price " _
& "FROM 你的表名 " _
& "WHERE ItemCode=" & " '" & StrItemCode & "'"
Set Rec = New ADODB.Recordset
Rec.CursorLocation = adUseClient
Rec.Open strSql, conn, adOpenKeyset, adLockOptimistic
If Rec.RecordCount <> 0 Then
Cells(row, col).Value = Rec.Fields("Price").Value
End If
Else
MsgBox "编号不能为空"
End If
Else
MsgBox "请再第二列填写编号"
End If
End With
Set Rec = Nothing
Set conn = Nothing
Application.ScreenUpdating = False
End Sub