顯示具有 Access VBA 標籤的文章。 顯示所有文章
顯示具有 Access VBA 標籤的文章。 顯示所有文章

2016年1月8日 星期五

Access DLookup,DCount 函式


Access DLookup 函式


用途: 
 一個快速的函式, 可以在一個表格中比對某一欄位是否為某值, 若找到後傳回該列的某一欄位值。

DLookup("field","table",Criteria')



Dim varX As Variant
varX = DLookup("[CompanyName]","Shippers", "[ShipperID] = 1")

---------------------------------
  Private Sub combo_string2id()
   
   job_name = Me.JOBTYPE1.Value
   Me.JOBTYPE1.Value = DLookup("jobtype_id", "index_jobtype", "jobtype_name='" & job_name & "'")
  
  End Sub
  
  '-----------------------
    Private Sub combo_id2string()

      
   job_id = Me.JOBTYPE1.Value
   Me.JOBTYPE1.Value = DLookup("jobtype_name", "index_jobtype", "jobtype_id='" & job_id & "'")
  
  End Sub

------------

也可以用底下程式來實現DLookup,其中ComboBox.Column(1, i) 表示為第i列第1欄的值 (欄是從0開始算)
Dim i As Integer

For i = 0 To ComboBox.ListCount-1
    If ComboBox.Column(1, i) = "ittraining" Then   
        ComboBox.Value = ComboBox.ItemData(i)
        Exit For
    End If
Next i


Access DCount 函式

用途: 
 一個快速的函式, 可以在一個表格中,根據Criteria的設定, 在table中計數的field的數量。

Dcount("field","table",Criteria')

利用Dcount的函式, 在查詢的結果, 增加一欄位作為序號。


中間那個"table"可以是別的查詢的結果, 另外要產生序號,如底下方式, 必須要找出這個"field"在
"table"中本身是沒有重覆的。

RowNum: DCount("[產品編號]","[產品資料]","[產品編號]<=" & [產品編號])






[Access VBA] Send Email from Access VBA

Private Sub Command0_Click()


Dim olApp As Object
Dim objMail As Object

On Error Resume Next 'Keep going if there is an error


Set olApp = GetObject(, "Outlook.Application") 'See if Outlook is open


If Err Then 'Outlook is not open
Set olApp = CreateObject("Outlook.Application") 'Create a new instance of Outlook
End If

'Create e-mail item
Set objMail = olApp.CreateItem(olMailItem)


With objMail

'Set body format to HTML
.BodyFormat = olFormatHTML

.To = "your email; your second email"
.Subject = "Subject"
.HTMLBody = "<HTML><H2>The body of this message will appear in HTML.</H2><BODY>Type the message text here. </BODY></HTML>"
'.Send     ' 直接寄出
.Display  ' 顯示outlook

End With


參考資料: http://msdn.microsoft.com/en-us/library/office/ff861332.aspx

[Access VBA] 如何滙出資料到Excel


Q1: 
 in  VBA code , 

  Dim appExcel As Excel.Application

 why ?? 在執行的時候會出現 "使用者自訂型態尚未定義"

Answer: 

    在工具->設定引用項目  ,選擇 Microsoft Excel 12.0 Object Library

2015年10月18日 星期日

Access VBA: 查詢方式有3種方式



進入Access 查詢[設計模式]下, 可以設定查詢的連接屬性, 如下。 預設是1:  查詢結果是當兩個個資料表都必須要有記錄才算. 另外2種就是看要以那一個表格為主去查詢另外一個表的記錄, 也就是通常有些記錄,只存在於其中一個表格而已。





Access VBA表單傳遞資料的方式


 Method 1: 從表單找到控制項,取值
  Forms("資料表單").Controls("StudentNo").Value 

 Method 2: 使用Form.OpenArg

  開智表單並傳傳參數
  DoCmd.OpenForm stDocName, , , stLinkCriteria, , , StudentNo

  被開智的表單,利用Form.OpenArgs 取得傳入的參數
   lbl_studentNo.Caption = Me.OpenArgs    ' set studentNo to correct data




2015年4月26日 星期日

Access VBA: 如何針對SQL輸出表格內容進行操控


目標: 讓Access顯示出資料表的型式,並且每個欄位都可以個別控制



Step 1: 利用建立一個表單, 型式為"子表單工作表" , 表單名稱為 "newsubform",

"子表單工作表"設定屬性

卷軸列: 只有垂直
允許新增: 否
記錄選取器:否
記錄導覽按鈕: 否
事件: onClick 建立"內嵌巨集", 以開啓表單,並filter以顯示對應的record

Step2: 讓"子表單工作表"的每一個欄位是可以選取並加以控制


設定好子表單工作表的欄位
子表單工作表資料顯示

內嵌巨集的內容 (或是使用巨集openForm 呼叫)



step 3: 可以建立一個空白表單, 插入一個"子表單控制項", 資料來源選擇"newsubform" 即大空告成