插入Excel单元格的值到现有的SQL表
问题描述:
可能重复:
Excel VBA INSERT INTO statement using variables插入Excel单元格的值到现有的SQL表
我刚开始学习了一下VBA的,我已经成功地导入从数据在SQL Server中创建的数据库就好了,现在我试图将数据从Excel导出到同一个数据库中。
下面的作品就好了:
Dim cnState As ADODB.Connection
Dim sSQL As String
Set cnState = New Connection
With cnState
.Provider = "SQLOLEDB"
.ConnectionString = "server=.\SQLEXPRESS; Trusted_Connection=Yes; database=SIM_PROJ"
.Open
End With
sSQL = "Insert Into Alunos Values ('3', 'Tiago Aleixo', 'Rua dos Pincéis' , '1990-05-26' , 'M' , 'Multimédia' , 'D')"
cnState.Execute sSQL
End Sub
Private Sub btn_goMenu_Click()
Sheet1.Select
唯一的问题是,我只设法找出如何通过代码插入实际值,我希望能够读取一整行Excel并将其插入到我的数据库中。
像这样:
sSQL = "Insert Into Alunos Values (Range(A4).Value, Range(B4).Value, Range(C4).Value, Range(D4).Value, Range(E4).Value, Range(F4).Value, Range(G4).Value)"
IE,我只要插入从第4行的值。
答
也许你必须更逐步建立字符串,如:
SQL = "INSERT INTO alunos VALUES ('" + Range(A4).Value + "', '" + Range(A5).Value + "', '"...
告诉你长相ILKE它会尝试将字符串“范围(A4).value的”插入数据库的语法。
答
将您的文件保存为以逗号分隔的CSV文件,然后您可以使用批量插入,如下所示。 申报@sql VARCHAR(最大值) 集@sql = “BULK INSERT TAB_UY420 FROM ' ”+ @文件+“' WITH(FIELDTERMINATOR = '')”
我已经试过以下 EXEC(@sql): (+)','“+范围(”B3“)。 Value +“','”+ Range(“D3”)。Value +“','”+ Range(“E3”)。Value +“','”+ Range(“F3”)。 ''+ Range(“G3”)。Value +“')”' 但是得到一个: 类型不匹配的错误,这可能是由于我试图插入日期到数据库?... –
是的,这似乎有可能。尝试只做一对夫妇的列作为测试,列只是普通的旧数字或字符串。 Excel将日期存储为整数。我不确定你如何通过VBA调用常规的Excel功能,但是如果你尝试使用TEXT(范围(A3),“yyyy-mm-dd”),那么看看你会得到什么。您希望它创建一个SQL Server将接受为日期的字符串,并且我认为这可能与您的语言环境有关,但yyyy-mm-dd看起来与您的示例相匹配。 –
[这里是链接](http://www.cpearson.com/excel/callingworksheetfunctionsinvba.aspx)关于从excel中调用工作表函数(如TEXT)。 –