2015-01-28 4 views
0

Excel 2013 VBA에서 ADODB 명령을 사용하여 일부 필드가 SQL Server 2014의 Decimal (x, y) 인 테이블에 삽입 문자열을 실행합니다. .Excel 셀이 비어있어 NULL로 SQL에 삽입하면 문제가 발생합니다.Null로 SQL 10 진수 (x, y) 필드에 빈 VBA 변수를 삽입하십시오.

즉.

VBA 코드 :

빈 엑셀 셀에 가리킬 수 있습니다 변수 sPrice 말할 수 있습니다.

sDate = .Cells(iRowNo, 1) 
sPrice = .Cells(iRowNo, 2) 
sQuantity = .Cells(iRowNo, 3) 

그리고 내 삽입의 인수는 말할 수 : SQL 데이터 유형에

conn.Execute "INSERT INTO [dbo].[Prices] ([date], [Price], [Quantity]) 
       values ('" & SDate & "', " & sPrice & ",'" & sQuantity & "')" 

노트는 다음과 같습니다

[date] Datetime 
[Price] Deciaml(28,12) 
[Quantity] Real 

그래서 sPrice 이중 따옴표를 포함하지 않는 그것은 소수의로 . 당신이 할 수있는 빠른 수정 sPrice의 값을 변경하는 것입니다

+0

* 문제가 있습니다. *는 유용한 설명이 아닙니다. 어떤 구체적인 * 문제가 있습니까? –

+1

sPrice가 double로 선언되면 빈 셀 값이 0으로 구문 분석됩니다. – user3479671

+0

SQL 서버에서 Decimal 필드에 대한 insert 명령에서 빈 (,,)을 허용하지 않습니다. – Flib

답변

0

덕분에 "NULL은"그 값은 문자열 "NULL"를 포함하는 경우 잘 모르겠어요 = 0

sDate = .Cells(iRowNo, 1) 
sPrice = .Cells(iRowNo, 2) 
sQuantity = .Cells(iRowNo, 3) 

If sPrice = 0 Then 
    sPrice = "NULL" 
End If 

conn.Execute "INSERT INTO [dbo].[Prices] ([date], [Price], [Quantity]) 
       values ('" & SDate & "', " & sPrice & ",'" & sQuantity & "')" 

경우 당신이 찾고있는 것이지만 sPrice = "NULL"을 SQL DB가 NULL 값으로 받아들이는 값으로 변경할 수 있습니다.

희망이 있습니다.

+0

내 경우에는 IsEmpty (value)를 사용해야한다고 생각합니까? 내 세포에는 가치가 없기 때문에. 그리고 내 실제 코드에서 검사 할 변수가 많습니다. 누가 비어 있는지 확인하고 NULL로 설정하면 어떻게 체크합니까? – Flib

+0

당신의 iRowNo 통해 루프, 당신은 조건을 추가 할 수 있습니다 같은 : 세포 (iRowNo 1) .value = 워드 vb N ull 그런 다음 myVar에 = "NULL" 그렇지 myVar에 = 세포 (iRowNo, 1) 끝을 .value 경우 만약 –