簡體   English   中英

有沒有辦法在不使用表格的情況下在 MS-Access 中創建表單?

[英]Is there a way to create a Form in MS-Access without using a table?

我想在 ms-Access 中顯示調用 web 服務(幾行)的結果。 為此,我創建了一個帶有 defaultView = 1(= 連續表單)的表單。

現在我想知道是否可以直接在我的表單中使用來自 web 服務的顯示結果。 這意味着無需創建一個表,然后我使用 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 會引發錯誤“無效參數”。

我還想過將記錄源設置為不使用表名的選擇語句(在 oracle 中,這將是“選擇...來自雙重”),但我沒有找到工作語句。 “從雙中選擇 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

在 Erik AII 的幫助下,找到了一個有效的解決方案:

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”作為參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM