Sub TrySample_2_4()
Dim dbs As Database
Dim rst As Recordset
Dim strKeyTbl As String
Dim strDataType As String
Dim strSQL As String
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tblテーブル構造")
With rst
Do Until .EOF
If strKeyTbl <> !テーブル名 Then
'テーブル名が切り替わったら1テーブル分を生成
If strKeyTbl <> "" Then
ExecCreateTable strSQL
End If
'テーブル名をキーに設定
strKeyTbl = !テーブル名
'SQL文を初期設定
strSQL = "CREATE TABLE " & strKeyTbl & "(" & vbCrLf
End If
'データ型を変換
Select Case !データ型
Case "テキスト型": strDataType = "nvarchar(" & !サイズ & ")"
Case "メモ型": strDataType = "ntext"
Case "バイト型": strDataType = "tinyint"
Case "整数型": strDataType = "smallint"
Case "長整数型": strDataType = "int"
Case "単精度浮動小数点型": strDataType = "real"
Case "倍精度浮動小数点型": strDataType = "float"
Case "日付/時刻型": strDataType = "datetime"
Case "通貨型": strDataType = "money"
Case "Yes/No型": strDataType = "bit"
Case "オートナンバー型": strDataType = "int IDENTITY(1,1)"
'1から始まり1ずつ増分
Case Else: strDataType = ""
'その他は生成対象外とする
End Select
If strDataType <> "" Then
'1フィールド分をSQL文に追加
strSQL = strSQL & !フィールド名 & " " & strDataType & " " & _
IIf(!値要求, "NOT NULL", "NULL") & "," & vbCrLf
End If
.MoveNext
Loop
.Close
End With
'最後の1テーブル分を生成
If strKeyTbl <> "" Then
ExecCreateTable strSQL
End If
End Sub
Private Sub ExecCreateTable(strSQL As String)
'SQL Server上に1テーブル分を生成する
Dim dbs As Database
Dim strConStr As String
strConStr = "ODBC;DRIVER=SQL Server;" & _
"SERVER=NAFUREI;" & _
"DATABASE=UpSizeTest;" & _
"Trusted_Connection=Yes;"
On Error GoTo Err_Handler
'SQL Server上のUpSizeTestデータベースに接続
Set dbs = OpenDatabase("", False, False, strConStr)
'SQL文の末尾の余分な「,」を削除して「)」を追加
strSQL = Left(strSQL, InStrRev(strSQL, ",") - 1) & vbCrLf & ")"
'SQL文をSQL Serverに発行
dbs.Execute strSQL, dbSQLPassThrough
Exit_Here:
Exit Sub
Err_Handler:
MsgBox "エラー番号:" & Err.Number & vbCrLf & vbCrLf & _
"エラー内容:" & Err.Description, vbOKOnly + vbCritical
Resume Exit_Here:
End Sub