我将使用 VBA 脚本来更新 SQL 中的表格,目前看来它工作得很好。但是在处理空值时会有问题。由于 VBA 脚本会循环至第一列结束,因此工作表中的某些值为空,但在 SQL 中则被放置为零。
在 Excel 中:
有什么想法可以让宏或SQL将它们读为 null 而不是零吗?
P.S:编程使 SQL 中的每个列在相应值中放置 null 不是一个选择,因为这个表将始终在不断变化,可能所有列都被填充了,或只有一些被填充等等。
[更新] 下面是 VBA 代码:
在 Excel 中:
Name Last name Age
daniel mtz 22
jose mtz 25
John doe
SQL的最终结果:
Name Last name Age
daniel mtz 22
jose mtz 25
John doe 0
有什么想法可以让宏或SQL将它们读为 null 而不是零吗?
P.S:编程使 SQL 中的每个列在相应值中放置 null 不是一个选择,因为这个表将始终在不断变化,可能所有列都被填充了,或只有一些被填充等等。
[更新] 下面是 VBA 代码:
Sub Macro_CargarSQL()
'VARIABLES
Dim conn As New ADODB.Connection
Dim iRowNo As Integer
'Column variables
Dim sname, slastname, sage As String
'CONECTION TO SERVER Y BD
conn.Open "Provider=SQLOLEDB;Data Source=Termxgesvsql07\vfsitesamn;Initial Catalog=DW_PLCO;Integrated Security=SSPI;"
'Import into SQL
With Sheets("test")
'Start row 2
iRowNo = 2
'Delete previous
conn.Execute "delete from table"
'Loop for insert
Do Until .Cells(iRowNo, 1) = ""
sname = .Cells(iRowNo, 1)
slastname = .Cells(iRowNo, 2)
sage = .Cells(iRowNo, 3)
conn.Execute "insert into dbo.table (name, lastname,age ) values ('" & sname & "', '" & slastname & "', '" & sage & "')"
iRowNo = iRowNo + 1
Loop
End With
conn.Close
Set conn = Nothing
End Sub