有关SQl语句,Select Into的问题
原来的代码如下:
Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & OpenFileDialog1.FileName & ";Persist Security Info=False"
Dim strSql As String = "SELECT * INTO tblFileInfo IN '" & Txt_OutFolder.Text & "\Test_tblFileInfo.xls' 'EXCEL 5.0;' FROM tblFileInfo"
目的是打开一个由用户指定的MDB文件,将其中的表转换成XLS文件,并放在用户指定的路径下。现在的问题是,上面的代码是将表名给固定的,我想改成变量,但是会报错,求解答。
报错的代码:
Dim strSql As String = "SELECT * INTO " & tblName & " IN '" & Txt_OutFolder.Text & "\Test_" & tblName & ".xls' 'EXCEL 5.0;' FROM " & tblName & ""
在DEBUG时,可以在tblName中看到值,但是在 cnn.Execute(strSql)中,strSql里,tblName是空值
[最优解释]
另外,不要把 strSQL 声明为常量。
Dim strSql As String
获取 tblName 的值之后,
strSql = "SELECT * INTO " & tblName & " IN '" & Txt_OutFolder.Text & "\Test_" & tblName & ".xls' 'EXCEL 5.0;' FROM " & tblName & ""
[其他解释]
http://download.csdn.net/detail/veron_04/1644211
http://download.csdn.net/detail/veron_04/3827200
[其他解释]
tblName 从哪里来的?你在中间做了什么?
[其他解释]
Do Until rs.EOF
If rs("TABLE_TYPE").Value = "TABLE" Then
cobTable.Add(rs("TABLE_NAME").Value)
End If
rs.MoveNext()
Loop
Dim tblCount As Integer = cobTable.Count
rs.Close()
rs = New ADODB.Recordset
For i = 0 To tblCount - 1
tblName = cobTable(i).ToString()
If tblName <> " " Then
MsgBox(tblName)
cnn.Execute(strSql)
在遍历MDB文件下所有表之后,获取表名赋值给tblName
[其他解释]
问题解决了。。。脑子一下子抽住了,在还没获取tblName值的时候就先把strSql给定义好了,当然是空值了。。。被of123的话给启发了,感谢你的解答
修改后代码,已成功。
For i = 0 To tblCount - 1
tblName = cobTable(i).ToString()
If tblName <> " " Then
MsgBox(tblName)
strSql = strSql + "SELECT * INTO " & tblName & " "
strSql = strSql + "IN '" & Txt_OutFolder.Text & "\Test_" & tblName & ".xls' 'EXCEL 5.0;'"
strSql = strSql + "FROM " & tblName & ""
cnn.Execute(strSql)