2017-09-19 4 views
1

ADODB.ConnectionとADODB.Recordsetを介してExcel VBAを介してDBにアクセスしています。私のクエリは、4つのデータフィールドを返します。私は、私のレコードセットのすべての "行"に対して同じ値(つまり5)で5番目のフィールドにしたい。私はこれをDBに追加したくありません。VBA:レコードセットに値のあるフィールドを追加する

時々私のクエリは、5つのフィールドを返し、5回目の列に乗算に5を置き換えるので、私は私の現在のコードは、このようなある

E.

フィールドとしてこれをしたい:

Dim MyConn As ADODB.Connection 
Dim MyRecords As ADODB.Recordset 
Set MyConn = New ADODB.Connection 
Set MyRecords = New ADODB.Recordset 
MyConn.Open location, username, password 
MyRecords.ActiveConnection = MyConn 
MyRecords.CursorLocation = adUseServer 
MyRecords.Source = query 'really long, not included here 
MyRecords.Open , , 1, 1 
Do While Not MyRecords.EOF 
    Range("A2").Offset(cl, 0).Value = MyRecords.Fields.Item(0).Value 
    Range("B2").Offset(cl, 0).Value = MyRecords.Fields.Item(1).Value 
    Range("D2").Offset(cl, 0).Value = MyRecords.Fields.Item(2).Value 
    Range("E2").Offset(cl, 0).Value = MyRecords.Fields.Item(3).Value * 5 
    cl = cl + 1 'go to the next line 
    MyRecords.MoveNext 
Loop 
MyRecords.Close 
MyConn.Close 

.Openの後にフィールドを追加しようとしましたが、エラーが発生しました。私は次に、同様の質問に基づいて、地元の人々とVBAの文書を調べて、次のように試みました:

Set MyRecords = New ADODB.Recordset 
With MyRecords 
    .Fields.Append "MA", adNumeric, 19 
    .Fields.Append "PN", adVarChar, 12 
    .Fields.Append "Qty", adNumeric, 19 
    .Fields.Append "Data", adNumeric, 19 
    .Fields.Append "Mult", adTinyInt, , adFldUpdatable, 1 
End With 

MyRecords.ActiveConnection = MyConn 
MyRecords.CursorLocation = adUseServer 
MyRecords.Source = query 'really long, not included here 
MyRecords.Open , , 1, 1 

しかし、これは終了の前にエラーを投げます。

tl; dr私のSQLクエリは4つの列を取得し、5番目の列をVBAにローカルに追加し、値5で完全に埋め込みます。

+0

'範囲(" F2 ")。最初のループで' cl'の前にオフセット(cl、0).Value = 5'。 Excelダンプに追加したいだけでデータベースには追加しない場合。 –

+0

「SELECT」を更新して、「5」をMyConstantとして含めることができます。それはちょうど「ローカルでvba」ではないが、あなたのために働くかもしれない。 –

+0

私はその理由を明確にするために私の質問を編集しました –

答えて

0

クエリでは4つのフィールドが要求されていますが、データが返されたときにレコードセットに5番目のフィールドが含まれているとしますか?

これがあなたが望むものなら、このようなことはできないでしょうか(テストされていません!!)?

Select 
    Field_1, 
    Field_2, 
    Field_3, 
    Field_4, 
    SUM(5) 
From 
    Your_Table 

このようにして、私はすべての行がレコードセットの5番目の列に番号5を持つべきだと考えます。

+0

これはちょうど私の問題を解決するために必要なアイデアのようなものです。タイ! –

+0

甘い!喜んで:) – JimT

関連する問題