使用excel中的表使用vba更新as400中的表

时间:2016-04-07 09:24:35

标签: excel excel-vba inner-join ibm-midrange updating vba

我想使用excel工作表中的表更新as400中的表,如下所示:

表1 [as400]

REFNO   QTY
1       10
2       12 
3       20    

表2 [excel工作表]

REFNO   QTY
1       13
2       15 
3       22  

表1中的数量使用VBA从表2更新,因此输出将如下:

表1 [as400]

REFNO   QTY
1       13
2       15 
3       22  

我写了这样的代码:

Dim s1 As Worksheet
Dim BRDa As ADODB.Connection
Dim RS As ADODB.Recordset
Dim b As Integer

Set RS = New ADODB.Recordset
Set BRDa = New ADODB.Connection
BRDa.ConnectionString = "provider=ABC; Data source=XYZ; user id=OK1; password=OK2"
BRDa.Open

On Error Resume Next 
Dim QRY1, QRY2 As String
QRY1 = "SELECT * FROM TABLE1 INNER JOIN S1.TABLE2 ON TABLE1.REFNO=TABLE2.REFNO"
RS.Open QRY1, BRDa, adOpenDynamic, adLockOptimistic

b = 0

Do While Not RS.EOF
QRY2 = "UPDATE TABLE1 SET TABLE1.QTY = TABLE2.QTY WHERE TABLE1.REFNO=TABLE2.REFNO"
BRDa.Execute QRY2, dbFailOnError

b = b + 1
RS.MoveNext
Loop
TextBox1.Text = b
RS.Close

BRDa.Close
End If
End Sub

但它不起作用。有人可以帮我吗... T__T !!谢谢..

1 个答案:

答案 0 :(得分:0)

请使用 cwbx 对象进行数据传输,而不是使用ADO。 Iirc,它们比OLE驱动程序更快,但它取决于您的数据集成/转换需求的复杂程度。

您应该在i系列文件夹中找到cwbx.CHM文件,但IBM在data transfer

上提供了很好的概述