【问题标题】:Upload Multiple Rows to Teradata via VBA ODBC Connection通过 VBA ODBC 连接将多行上传到 Teradata
【发布时间】:2018-09-06 08:57:47
【问题描述】:

我有以下 VBA 代码,可用于 Teradata 的 select 语句。

Sub Item_Review()

Dim strsql As String

strsql = Worksheets("SQL").Range("b3")

    With ActiveWorkbook.Connections("Item_Review").ODBCConnection
    .BackgroundQuery = True
    Debug.Print strsql
    CommandText = SplitMeUp(strsql)

    End With

    ActiveWorkbook.Connections("Item_Review").Refresh

End Sub

但是,我尝试将 strsqlselect 语句更改为 insert into 语句。当我运行 VBA 时,什么也没有发生。我点击了按钮,但没有收到任何更新通知,也没有收到错误通知。当我在 Teradata 中查看表时,我可以看到它尚未更新。有什么想法吗?

Sub Item_Add()

Dim strsql As String

strsql = "insert into Table_1  (Item_id, NOTE, date, Work_STATUS) values ('Item_1','Testing ','2014-01-01','Worked');"

    With ActiveWorkbook.Connections("Item_Add").ODBCConnection
    .BackgroundQuery = True
    Debug.Print strsql
    CommandText = SplitMeUp(strsql)

    End With

    ActiveWorkbook.Connections("Item_Add").Refresh

End Sub

【问题讨论】:

  • 你在strsql中尝试过双引号而不是单引号吗?
  • 如果我尝试双引号,我会在 VBA 编辑器中收到错误。
  • 用两个单引号代替——同样的错误怎么样?
  • @Daniel Marcus 我尝试了两个单引号,但什么也没有。
  • @Portland RunnerThere 没有子具有 On Error Resume NextActiveConnection.Errors() 也不返回任何东西

标签: sql vba excel teradata


【解决方案1】:

只是您没有执行任何操作查询。考虑使用可以从 OLEDB 或 ODBC 工作簿连接构建的 ADO 连接对象来执行此操作(选择合适的一个)。

Sub RunQuery()
On Error GoTo ErrHandle    
    Dim connstr As String, strsql As String
    Dim conn As Object
    Const adModeReadWrite = 3

    ' OLEDB CONNECTION STRING (PREFIXES REMOVED)
    connstr = Replace(ThisWorkbook.Connections("Item_Add").OLEDBConnection.Connection, -
                      "OLEDB;", "")
    ' ODBC CONNECTION STRING (PREFIXES REMOVED)
    connstr = Replace(ThisWorkbook.Connections("Item_Add").ODBCConnection.Connection, _
                      "ODBC;", "")

    strsql = "insert into Table_1  (Item_id, NOTE, date, Work_STATUS)" _
              & " values ('Item_1','Testing ','2014-01-01','Worked');"

    Set conn = CreateObject("ADODB.Connection")

    With conn
       .ConnectionString = connstr
       .Mode = adModeReadWrite
       .Open                   
       .Execute strsql       
    End With

    MsgBox "Successfully ran query!", vbInformation     

ExitHandle:
    Set conn = Nothing
    Exit Sub

ErrHandle:
    MsgBox Err.Number & " - " & Err.Description, vbCritical
    Exit Sub
End Sub

【讨论】:

    【解决方案2】:

    只要我有一个连接到连接的表,我就能让它运行。

    1) 所以我转到 Excel 中的数据选项卡 2)点击现有的连接 3)选择查询 4)将数据导入表

    一旦我这样做了,SQL 就会在刷新时执行。

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 2017-05-21
      • 2023-03-24
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2011-09-25
      相关资源
      最近更新 更多