VB.NET 프로그램과 함께 사용하려면 Excel에서 일부 VBA 코드를 작성해야하며 이전에는 사용하지 않았으므로 VBA의 기본 사항을 고민하고 있습니다. 임시 테이블에서 값을 가져와 Excel 스프레드 시트의 적절한 필드에 직접 입력 할 수있는 코드를 발견했습니다. 내가 구매 주문 문서를 채우는하고, 그래서 정보는 이상 소계, 통, 운송, 총과 같은 것들이 있습니다 통과 등변수에 데이터베이스 값을 저장하는 VBA
이 내가 단일 셀 채우는 데 사용했던 코드 :
'get quantity
strQry = "SELECT quantity from [temp];"
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = cn
.Open strQry
End With
'append data to document
Worksheets("PurchaseOrder").Range("D22").CopyFromRecordset rs
quantity = rs.Fields("quantity") 'setting the quatity in a variable
을 코드의 마지막 줄은 변수에 양의 값을 저장하려는 나의 시도입니다. 하위 합계가 Excel로 전달되지 않았으므로 하위 합계를 계산할 때 사용해야합니다. 셀을 채우는 코드가 잘 작동합니다. 데이터를 변수에 넣으면서 고생하고 있습니다. 데이터베이스에서 직접 셀을 채우는 것은 정상적으로 작동하지만 마지막 줄에서 오류가 발생합니다.
수량을 변수에 저장 한 후 변수에 단위당 비용을 저장하고 부분 문자열을 사용하여 시작 부분에 £ 기호를 제거한 다음 십진수로 변환 한 다음 단위 당 비용을 수량을 합산하여 합계를 구합니다.
나는이 다음 코드를 사용하여 시도 :
'get price
strQry = "SELECT costPerUnit from [temp];"
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = cn
.Open strQry
End With
'append data to document
Worksheets("PurchaseOrder").Range("N22").CopyFromRecordset rs
costPerUnit = Right(rs(0), Len(costPerUnit) - 1) 'setting the cost per unit in a variable
subtotal = costPerUnit * quantity
Worksheets("PurchaseOrder").Cells("Q47").Value = "£ " & subtotal
어떤 도움에 감사드립니다. 고맙습니다.
왜냐하면'Quantity' 필드는> 1 값을 포함하고 있기 때문에 비 배열 변수에 저장하고 있기 때문입니다.배열 또는 사전 객체에 저장하십시오. –
'.MoveFirst'는'quantity'를 읽으려면 첫 번째 행으로 이동합니다. Locals Window를 사용하여'Recordset'을 디버깅하여 사용중인 필드 이름이 맞는지 확인할 수 있습니까? –
위와 같이 여러 행이 있다면'Recordset' 객체가 모두 정렬되어 있어야하며 동시에 두 행을 반복 할 수 있습니다 ('.MoveNext'). 행 단위로 곱셈을 수행하고 누적 합계를 유지할 수 있습니다 . 또는 데이터를 2 개의 배열로 읽고이를 반복합니다. –