안녕하세요,ADODB Excel/Access SQL 십진수 반올림 삽입 : 이유 또는 수정 방법에 대한 아이디어가 있습니까?
저는 현재 Excel 데이터를 VBA를 통해 Access로 내보내는 프로젝트에서 작업 중입니다. 저는 Excel에서 VBA를하고 있습니다. 매크로를 사용하여 이미 모든 서식 및 기타 작업을 수행하고 있습니다. 매크로가 잘 작동하지만 한 가지 문제가 있습니다. 몇 가지 알 수없는 버그 (Excel, Access, SQL 또는 ADODB 쪽 일 수 있음)가 정수로 모든 십진수를 반올림합니다 ("ints"). 내 VBA 또는 SQL 코드 (아래 참조)에서 어떤 종류의 반올림 함수를 사용하지 않았으며 Access의 열에 소수점 두 자리가있는 "숫자"데이터 형식 (및 "일반 번호"형식)이 있으므로 잘 모르겠습니다. 왜 반올림인가? 어쩌면 ADODB 객체 (최근에 사용하는 법을 배웠습니다)의 일부가 소수 자릿수를 처리하도록 구성되어야합니까? 아니면 "Number"보다 더 나은 데이터 유형이있을 수 있습니다 (하지만 Access는 Floats and Doubles 및 그 모든 것에 포함되지 않습니다). 나는 주변에 봤 거든 주제에 다량을 찾아 내지 않았다; 유사한 질문이 많이 있었지만이 상황과 실제로 일치하는 것은 없었습니다. 항상 그렇듯이 모든 단서가 크게 감사 할 것입니다. 감사.
Sub ExportReport()
Call connect("M:\Matrix\5-Information Technology\1-Knowledge Base\Reporting\Agent Stats.accdb") 'This just connects to the DB and works fine.
Dim test As String, i As Integer
Range("A3").Select
For i = 1 To ActiveSheet.UsedRange.Rows.Count
If ActiveCell.Value = vbNullString Then Exit For
test = "INSERT INTO [My Report] " & _
"([CALL DATE], [CAMPAIGN], [AVG AGENTS], " & _
"[OFFERED], [ANSWERED], [HANDLE(M)], [AVG HANDLE(M)], " & _
"[TALK(M)], [AVG TALK(M)], [DISPO(M)], " & _
"[ABANDONED], [ABAN PCT], [ASA(S)], " & _
"[SVC LVL PCT], [OUTBOUND], [OUTBOUND(M)], " & _
"[OVERFLOW], [OVERFLOW(M)]) " & _
"VALUES('" & _
ActiveCell.Value & "', '" _
& ActiveCell.Offset(0, 1).Value & "', '" & ActiveCell.Offset(0, 2).Value & "', '" _
& ActiveCell.Offset(0, 3).Value & "', '" & ActiveCell.Offset(0, 4).Value & "', '" _
& ActiveCell.Offset(0, 5).Value & "', '" & ActiveCell.Offset(0, 6).Value & "', '" _
& ActiveCell.Offset(0, 7).Value & "', '" & ActiveCell.Offset(0, 8).Value & "', '" _
& ActiveCell.Offset(0, 9).Value & "', '" & ActiveCell.Offset(0, 10).Value & "', '" _
& ActiveCell.Offset(0, 11).Value & "', '" & ActiveCell.Offset(0, 12).Value & "', '" _
& ActiveCell.Offset(0, 13).Value & "', '" & ActiveCell.Offset(0, 14).Value & "', '" _
& ActiveCell.Offset(0, 15).Value & "', '" & ActiveCell.Offset(0, 16).Value & "', '" _
& ActiveCell.Offset(0, 17).Value & "');"
DB.Execute test
ActiveCell.Offset(1, 0).Activate
Next i
Call CloseDatabase 'Again, this part works fine
End Sub
무엇 나는 할 것이다 :'Debug.Print test'. 이제 연결된 SQL 문이 실제로 무엇인지 살펴보십시오. 나는 소수점 구분 기호가 예상 한 것과 다르다고 생각합니다. 그들은? –
예, 예상 한 것입니다 (예 : 5892.25). 나는 MsgBox (같은 결과)와 같은 아이디어를 시도했지만 제게 Debug.Print를 보여 주셔서 감사드립니다. 나는 몇 년 동안 VBA 매크로를 작성해 왔지만 전에는 그것을 보지 못했습니다 (웃음). – user2403876
디자인보기에서 Access 테이블을 표시하면 번호 필드에 대해 필드 크기가 표시됩니까? Single, Double 또는 Decimal이어야합니다. 참조 http://office.microsoft.com/en-us/access-help/set-the-field-size-HA010274716.aspx#BM2 –