sql >> データベース >  >> RDS >> Sqlserver

VBA を使用して Excel を SQL にエクスポートする

    パラメータ アプローチは次のとおりです。

    Dim conn As ADODB.Connection
    Dim cmd As ADODB.Command
    
    Dim strSQL As String
    
    strSQL = "INSERT INTO dbo.TimeLog " & _
        "(RecordedPeriod, EventDate, ID, DeptCode, Opcode, StartTime, FinishTime, Units) " & _
    "VALUES (?,?,?,?,?,?,?,?);"
    
    Set conn = New ADODB.Connection
    conn.Open ""Provider=SQLOLEDB;Data Source=db1\db1;Initial Catalog=ProdTrack;Integrated Security=SSPI;"
    'Skip the header row
    iRowNo = 2"
    
    Set cmd = New ADODB.Command
    
    cmd.ActiveConnection = conn
    cmd.CommandType = adCmdText
    cmd.CommandText = strSQL
    
    iRowNo = 2
    
    With Sheets("Sheet1")
      'Loop until empty cell in FirstName
      Do Until .Cells(iRowNo, 1) = ""
    
      cmd.Parameters.Append _
        cmd.CreateParameter("pRecordedPeriod", adDBTimeStamp, adParamInput, 8, .Cells(iRowNo, 1))
      cmd.Parameters.Append _
        cmd.CreateParameter("pEventDate", adVarChar, adParamInput, 8, .Cells(iRowNo, 2))
      cmd.Parameters.Append _
        cmd.CreateParameter("pID", adInteger, adParamInput, , .Cells(iRowNo, 3))
      cmd.Parameters.Append _
        cmd.CreateParameter("pDeptCode", adVarChar, adParamInput, 2, .Cells(iRowNo, 4))
      cmd.Parameters.Append _
        cmd.CreateParameter("pOpCode", adVarChar, adParamInput, 2, .Cells(iRowNo, 5))
      cmd.Parameters.Append _
        cmd.CreateParameter("pStartTime", adDBTime, adParamInput, 0, .Cells(iRowNo, 6))
      cmd.Parameters.Append _
        cmd.CreateParameter("pFinishTime", adDBTime, adParamInput, 0, .Cells(iRowNo, 7))
      cmd.Parameters.Append _
        cmd.CreateParameter("pUnits", adInteger, adParamInput, , .Cells(iRowNo, 8))
    
      cmd.Execute
    
      iRowNo = iRowNo + 1
      Loop
    End With
    
    conn.Close
    Set conn = Nothing
    

    DataTypeEnum

    しかし、これは、DAO のパラメーター クエリと比較して、コーディングするのに適していません。名前付きパラメーターはなく、構成するパラメーターは 5 つです。これは Stored Procedures 用です ? CRUD の場合 これは面白くありません。



    1. ORA-01873:最高の精度

    2. Oracleは、列の値が変更された行を取得します

    3. MariaDBでのBIN()のしくみ

    4. Linuxでmysqlテーブル名を小文字から大文字に変換することは可能ですか?