2007/07/12(Thu) 19:29:32 編集(投稿者)
■No5404 (kawa さん) に返信
mdb に、SQL Server 2000 のデータを取り込むのですよね。DTS は使えませんか?
http://www.microsoft.com/japan/msdn/sqlserver/columns/
> SELECT テーブル名 INTO〜のSQL文を使うことはできないということでしょうか?
使えると思いますよ。
当方で追試してみましたが、.NET 1.1/2.0 のいずれでも、問題なく生成されまたし。
何か、権限周りの問題だったりはしませんか?
'=======================
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
Module Test
Sub Main()
Const serverName As String = 〜〜
Const dbName As String = 〜〜
Const mdbTable As String = 〜〜
Const sqlTable As String = 〜〜
Const userID As String = 〜〜
Const password As String = 〜〜
Dim sqlPattern As String = "SELECT * INTO [{1}] FROM " & _
"[ODBC;DRIVER={{SQL SERVER}};SERVER={2};DATABASE={3};UID={4};PWD={5}].[{0}]"
Dim sql As String = String.Format(sqlPattern, sqlTable, mdbTable, _
serverName, dbName, userID, password)
#If VBC_VER < 8.0 Then
Dim cn As OleDbConnection = Nothing
Try
'cn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.mdb;")
cn = New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\test.mdb;")
cn.Open()
Dim cmd As OleDbCommand = Nothing
Try
cmd = New OleDbCommand(sql, cn)
cmd.ExecuteNonQuery()
Finally
If Not cmd Is Nothing Then cmd.Dispose()
End Try
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation)
Finally
If Not cn Is Nothing Then
cn.Close()
cn.Dispose()
End If
End Try
#Else
'Using cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.mdb;")
Using cn As New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\test.mdb;")
cn.Open()
Using cmd As New OleDbCommand(sql, cn)
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation)
End Try
End Using
cn.Close()
End Using
#End If
End Sub
End Module</pre></pre>