【问题标题】:Is there a way to create a Form in MS-Access without using a table?有没有办法在不使用表格的情况下在 MS-Access 中创建表单?
【发布时间】:2020-02-11 00:33:10
【问题描述】:

我想在 ms-Access 中显示调用 Web 服务(多行)的结果。为此,我创建了一个带有 defaultView = 1 的表单(= 连续表单)。

现在我想知道是否可以直接在我的表单中使用来自网络服务的显示结果。这意味着无需创建表,然后我使用 recordsource-property 进行选择。

有没有办法在不使用表格的情况下在 MS-Access 中以连续形式显示数据?

我尝试像这样自己设置记录集:

Private Sub Form_Load()

  Set m_Dataset = CurrentDb.OpenRecordset("Test", RecordsetTypeEnum.dbOpenDynamic)
  Call m_Dataset.AddNew
  m_Dataset("OutOfThinAir") = "Hallo"
  Set Me.Recordset = m_Dataset

End Sub

但 OpenRecordset 引发错误“无效参数”。

我还想过在不使用表名的情况下将记录源设置为 select 语句(在 oracle 中,这将是“Select ... from dual”),但我没有找到工作语句。 “从双重中选择 1;”绝对不行。

【问题讨论】:

    标签: vba forms ms-access datatables


    【解决方案1】:

    是的,但您需要使用 ADODB 记录集,而不是 DAO 记录集。

    例如

    Dim m_Dataset As New ADODB.Recordset
    m_Dataset.Fields.Append "OutOfThinAir",adVarWChar, 6, adFldUpdatable
    m_Dataset.Open
    m_Dataset.AddNew 'No call!
    m_Dataset("OutOfThinAir") = "Hallo"
    Set Me.Recordset = m_Dataset
    

    【讨论】:

    • 当我将第一行更改为: "Dim m_Dataset As Object Set m_Dataset = CreateObject("ADODB.Recordset") m_Dataset.Fields.Append "OutOfThinAir", 202, 6, 4 时代码工作正常" 但在我的文本框中 - 具有属性 ControlSource=OutOfThinAir - 显示#error 而不是 "Hallo"。但我可以看到有一行。
    • 出于任何原因,这对我不起作用。但是在您的帮助下,我找到了一个适合我的解决方案 => 查看我的答案。
    【解决方案2】:

    在 Erik A I 的帮助下,我想出了一个可行的解决方案:

    Private Sub Form_Load()
    
      Dim rstADO As ADODB.Recordset
      Set rstADO = New ADODB.Recordset
      rstADO.Fields.Append "OutOfThinAir", adVarChar, 100, adFldMayBeNull
      rstADO.LockType = adLockOptimistic
      rstADO.Open
    
      rstADO.Addnew
      rstADO.Fields("OutOfThinAir") = "Hello"
      rstADO.Update
      rstADO.Addnew
      rstADO.Fields("OutOfThinAir") = "Du"
      rstADO.Update
    
      Set Me.Recordset = rstADO
    End Sub
    

    顺便说一句,为了使用常量和“ADODB.Recordset”作为变量类型,我必须添加“Microsoft ActiveX Data Objects 6.1 Library”作为参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 2012-07-25
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多