មេរៀន Access- ភ្ជាប់ SQL និង Module

aI ) អ្វីទៅភាសារុករកទិន្នន័យ? What is SQL?
SQL (Structured Query Language): គឺជាភាសាមួយប្រភេទដែលគេប្រើសំរាប់ទាញទិន្នន័យពី Database  មកធ្វើការគណនា បង្ហាញ ផ្លាស់ប្ដូរ លុប និង កែប្រែ ទៅតាមការកំណត់លក្ខខ័ណ្ឌផ្សេងៗដែលយើងកំណត់ ។
ទំរង់ទូទៅរបស់ SQL Statements :
SELECT Tablename.fieldname?,Tablename.fieldname?,…….or Expression
FROM Tablename,Tablename,….
[WHERE Condition…..]
[ORDER BY….Tablename.fieldname,.. ASC/DESC]
[GROUP BY Tablename.fieldname,…]
[ HAVING Condition….]
Ex:
ចូរប្រើប្រាស់ Database Northwind of Sample Microsoft in Folder Programfiles\Microsoft Offiec\OfficesXX\Sample\Northwind.mdb
Select CustomerID,CompanyName,ContactName
From Customers
ការចូលសរសេរ ត្រូវ ចុច Object Query–>New–>Design View–>OK
aបន្ទាប់មកត្រូវចុច Close Button:
aបន្ទាប់មកទៀតត្រូវចុច SQL button on Toolbar រួចសរសេ កូដបានហើយ
aពេលដែលសរសេរួចហើយអាច View or Run សំរាប់មើលលទ្ធផលៈ
II) Type of Sql statement
ប្រភេទនៃភាសារុករកទិន្នន័យ
គេចែក SQL Statement ជាពីរប្រភេទគឺដូចខាងក្រោម ៖
1-DDL(Data Definition Language)
DDL
គឺជាភាសាមួយប្រភេទដែលអាច Delete, Update, Insert, Alter ,Create Table and Drop នៃ Database
a) Syntax Delete SQL:
DELETE * FROM TableName,…
[WHERE Condition]
ប្រើសំរាប់លុប Records ទិន្នន័យក្នុង Table ណាមួយ ទៅតាមលក្ខខ័ណ្ឌដែលបានកំណត់ ។
b) Syntax Update SQL :
Update TableName,..
Set Tablename.Fieldname=NewValues or Expression
Where Condition
ប្រើសំរាប់កែប្រែ ទិន្នន័យក្នុង Table ណាមួយ ទៅតាមលក្ខខ័ណ្ឌដែលបានកំណត់ ។
c) Syntax  Insert 1:
Insert Into TableDestination(FieldName,…) Values(?,?,?,?,…)
ប្រើសំរាប់យកទិន្នន័យពិតចូល TableDestination
d) Systax Insert 2:
Insert Into TableDestination(FieldName,…)
Select Fieldnamesource,….
From TableSourec,…
[WHERE Condition]
ប្រើសំរាប់យកទិន្នន័យពី TableSource ទៅ TableDestination តាមលក្ខខ័ណ្ឌដែលបានកំនត់ ។
1. What is Module?
Modules
ជា Object មួយមានលក្ខ្ខណៈស្រដៀងនឹង Macro ដែរ តែខុសគ្នាត្រង់ Modules ត្រូវសរសេរ Code ដើម្បីអោយវាធ្វើអ្វីមួយ ចំណែកឯ Macro វិញគ្រាន់តែយើង Select យកនោះជាការស្រេច។ Modules ធ្វើអោយ Object ក្នុង MS Access ទាក់ទងគ្នាហើយ វាជួយបង្កើនល្បឿនការងារ ក្នុងការប្រើ Database
ឧៈ យើងត្រូវការគណនាញឹកញាប់ រឺ យើងត្រូវការប្រើវាច្រើនដង តែយើងសរសេរ Code តែម្ដងប៉ុណ្ណោះ។
aនៅក្នុងការប្រើ Modules ដូចនឹងការប្រើ Macro ដែរគឺ យើងអាចសរសេរតាមពីររបៀបគឺ សរសេររួចហើយ ទើបភ្ជាប់ទៅកាន់ Form និងសរសេរដោយផ្ទាល់នៅក្នុង Form តែម្ដង។
2 Procedure:
នៅក្នុងការប្រើ Sub Procedure គឺមានពីររបៀបដែលត្រូវបានគេនៅក្នុងការសរសេរ Code នៅក្នុង MS Access
-Public Function
-Private Sub
a) Public Function:
ត្រូវបានគេប្រើជាលក្ខណៈទូទៅ បន្ទាប់មកទើបគេភ្ជាប់វាដើម្បីអោយវាធ្វើការអ្វីមួយតាមតំរូវការ របស់គេ។
b) Private Sub:
ត្រូវបានគេប្រើដើម្បីសរសេរភ្ជាប់ដោយផ្ទាល់ទៅនឹង Form, Button,… ដើម្បីអោយវាធ្វើការអ្វីមួយតាម តំរូវការ។
-
របៀបបង្កើត Sub Procedure:
+
ចុចលើ Modules Object នៅក្នុង Database
+
ចុចលើ New
+
ចុចលើ Insert Menu
- ជ្រើសរើសយក Procedure ពេលនោះវានឹងបង្ហាញនូវប្រអប់មួយដូចខាងក្រោមៈ
a-Name: សំរាប់ក្នុងការសរសេរ Code
-Scope
និង Type: សំរាប់អោយយើងជ្រើសរើសប្រភេទ Procedure ក្នុងការសរសេរ
+
បន្ទាប់ពីកំនត់រួចហើយចុច Ok
ឧទាហរណ៍១ៈ ការបង្កើតនៅក្នុង Public Function:
Public Function Total(A, B As Integer) As Integer
Total = A * B
End Function
ឧទាហរណ៍២ៈ ការបង្កើតនៅ Private Sub:
Private Sub Cmd_Click()
Me.Text4 = Me.Text0 * Me.Text2
End Sub
3 Arguments:
ជា Variable ដែលត្រូវហៅយកមកប្រើនៅក្នុងការសរសេរ មានន័យថាកំនត់ប្រភេទវាជាអ្វីមួយ។
Arguments As Data Type
មានដូចជាៈ
String
ផ្ទុកតំលៃជាអក្សរ
Byte
ផ្ទុកតំលៃជាចំនួនគត់ពី 0-255
Integer
ផ្ទុកតំលៃជាចំនួនគត់
Long
ផ្ទុកតំលៃជាចំនួនគត់
Single
ផ្ទុកតំលៃជាទស្សភាគ
Double
ផ្ទុកតំលៃជាទស្សភាគ
Boolean
ផ្ទុកតំលៃជាចំនួនពិត ឬ មិនពិត
Date
ផ្ទុកតំលៃជាថ្ងៃ ខែ ឆ្នាំ
ឧទាហរណ៍ៈ     Public Function Total(A, B As Integer) As Integer
Total = A * B
End Function
4)
ការប្រើ Statements:
a) Dim:
ប្រើសំរាប់ Declare Variable មានន័យថា វាប្រាប់អោយ Memory របស់ម៉ាស៊ីនទុក Space សំរាប់ ដាក់តំលៃដែលយើងកំនត់ ។
-
របៀបប្រើ Dim ដើម្បី DeclareDim Variable_Name As Data Type
ឧទាហរណ៍ៈ     Private Sub CmdMin_Click()
Dim Min As Double
Dim A As Integer
Dim B As Integer
———————-
———————-
-b) Const:
ប្រើសំរាប់ Declare Variable ដែលមានតំលៃថេរ។
ឧទាហរណ៍ៈ    Public Function Unit_Price(Device, Qty As Integer) As Currency
Const Table = 20
Const Chair = 5
——————–
——————–
-c) If ……Then:
ជា Statement ប្រើសំរាប់ដាក់ល័ក្ខខ័ណ្ឌដើម្បីពយភាក្សាទៅលើអ្វីមួយ។
-
របៀបប្រើៈ
If Condition Then
Do Something
End If
-
ប្រសិនបើល័ក្ខខ័ណ្ឌយើងមានច្រើនយើងត្រូវប្រើពាក្យ ElseIf ដើម្បីបន្ដល័ក្ខខ័ណ្ឌផ្សេងៗទៀត។
If Condition Then
Do Something
ElseIf Condition Then
Do Something
End If
-
ប្រសិនបើយើងមានល័ក្ខខ័ណ្ឌពីរ ឬ យើងចង់អោយវាមានល័ក្ខខ័ណ្ឌផ្ទុយពីល័ក្ខខ័ណ្ឌផ្សេងៗដែលយើងបានកំនត់ យើងត្រូវប្រើពាក្យ Else ហើយបញ្ចប់ដោយ End If
-If Condition Then
Do Something
Else
Do Something
End If
-If Condition Then
Do Something
Elseif Condition Then
Do Something
Elseif Condition Then
Do Something
Else
Do Something
End If
ចំណាំៈ     – ElseIf អាចប្រើបានច្រើនដង
-Else
អាចប្រើបានតែម្ដងប៉ុណ្ណោះ។
d) Select Case:
ប្រើសំរាប់ដាក់ល័ក្ខខ័ណ្ឌដូចទៅនឹង Statement If ដែរ តែរបៀបប្រើមានលក្ខណៈខុសគ្នា។
-
របៀបប្រើៈ
Select Case Expression
Case
ទី១
Do Something
Case
ទី២
Do Something
Case Else
Do Something
End Select
ឧទាហរណ៍ៈ     Public Function Result(Average As Double) As String
Select Case Average
Case Is < 5
Result = “Fall”
Case is >= 5
Result = “Pass”
Case Else
Result = ” ”
End Select
End Function


មេរៀន Access- លំហាត់ពី Modules
1) ចូរបង្កើត Button Open form Study List និង Button Close form Student List
a-Program’s Code ភ្ជាប់ទៅនឹង Button Open:
Private Sub CmdOpen_Click()
DoCmd.OpenForm “Study List”, acNormal
End Sub
-Program’s Code
ភ្ជាប់ទៅនឹង Button Close:
Private Sub CmdClose_Click()
DoCmd.Close
End Sub
2)
ចូរបង្កើត Message នៅពេលបើក ឬ បិទ Form Student List
a-Program’s Code ភ្ជាប់ទៅនឹង Form:(សរសេរលើ On load On open)
Private Sub Form_Open(Cancel As Integer)
MsgBox “Welcome to Student List form.”,  , “Student List Form”
End Sub
ចំនែក ឯនៅពេលបិទ Formវិញ ធ្វើដូចខាងលើដែរ ប៉ុន្ដែត្រូវសរសេរលើ On close នៅក្នុង Event Tab
3)
ចូរបង្កើត Button Fist, Previous, Next, Last និង Add New Record
a-Program’s Code ភ្ជាប់ទៅនឹង Button ទាំង 5 ខាងលើ
Private Sub CmdFirst_Click()
DoCmd.GoToRecord , , acFirst
End Sub
Private Sub CmdPrevious_Click()
On Error Resume Next
DoCmd.GoToRecord , , acPrevious
End Sub
Private Sub CmdNext_Click()
On Error Resume Next
DoCmd.GoToRecord , , acNext
End Sub
Private Sub CmdLast_Click()
DoCmd.GoToRecord , , acLast
End Sub
Private Sub CmdAddNewRec_Click()
DoCmd.GoToRecord , , acNewRec
End Sub
4) ចូរបង្កើត Button Preview, Print Report និងបើក Form ជា Design
a-Program’s Code ភ្ជាប់ទៅនឹង Button ទាំងបីខាងលើ
Private Sub CmdDesign_Click()
DoCmd.OpenForm “Student List”, acDesign
End Sub
Private Sub CmdPreviewRe_Click()
DoCmd.OpenReport “Student List”, acViewPreview
End Sub
Private Sub CmdPrintRe_Click()
DoCmd.OpenReport “Student List”, acViewNormal
End Sub
4)
ចូរបង្កើតរូបមន្ដផលគុណតាម Public Function និង Private Sub
a-Program’s Code Public Function:
Public Function Result(A, B As Double) As Double
Result = A * B
End Function
ភ្ចាប់ទៅនឹង Button ក្នុង Form:
Private Sub CmdCalculate_Click()
Me.Text4 = Result(Me.Text0, Me.Text2)
End Sub
- Program’s Code Private Sub:
Private Sub CmdCalculate1_Click()
Me.Text16 = Me.Text11 * Me.Text13
End Sub
Private Sub CmdClose_Click()
DoCmd.Close
End Sub
5)
ចូរបង្កើត Form Exchange Rate ដោយប្រើរូបមន្ដផលគុណខាងលើ
6)
ចូរបង្កើត Form Employee Salary ដូចខាងក្រោម:
a-Program’s Code
Private Sub CmdExchange_Click()
Me.Text12 = InputBox(“Enter the price for exchange”, “Exchange”, 4000)
End Sub
ចំណែក Total in Riel= [Salary] * [Text12](ប្រើនៅក្នុង Control Source)
Total=Sum([Salary])*[Text12] (
ប្រើនៅក្នុង Control Source)
7)
ចូរគណនា Mention និង Result ដោយប្រើរូបមន្ដ If……Then ….End If
a-Program’s Code សំរាប់ Mention:
Public Function Mention(D As Double) As String
If D = 0 Then
Mention = ” ”
ElseIf D < 5 Then
Mention = “Weak”
ElseIf D >= 5 And D <= 6 Then
Mention = “Medium”
ElseIf D > 6 And D <= 8 Then
Mention = “Good”
ElseIf D > 8 And D <= 10 Then
Mention = “Very good”
Else
Mention = ” ”
End If
End Function
-Program’s Code
សំរាប់ Result:
Public Function Result(E As Double) As String
If E = 0 Then
Result = ” ”
ElseIf E < 5 Then
Result = “Fail”
Else
Result = “Pass”
End If
End Function
8)
គណនាដូចខាងលើដែរ ទៅលើ Mention និង Result ដោយប្រើរូបមន្ដ Select Case
-Program’s Code
សំរាប់ Mention:
Public Function Mention1(F As Double) As String
Select Case F
Case 0
Mention1 = ” ”
Case Is < 5
Mention1 = “Weak”
Case 5 To 6
Mention1 = “Medium”
Case 6.01 To 8
Mention1 = “Good”
Case 8.01 To 10
Mention1 = “Very good”
Case Else
Mention1 = ” ”
End Select
End Function
-Program’s Code
សំរាប់ Result:
Public Function Result01(G As Double) As String
Select Case G
Case G = 0
Result01 = ” ”
Case Is < 5
Result01 = “Fail”
Case Is >= 5
Result01 = “Pass”
Case Else
Result01 = ” ”
End Select
End Function
9)
ចូរបង្កើត រូបមន្ដ Min តាម Public Function ហើយភ្ជាប់ទៅ Form និង តាម Private Sub
-Program’s Code សំរាប់់ Public Function:
Public Function Min(A, B, C As Double) As Double
Min = A
If Min > B Then Min = B
If Min > C Then Min = C
End Function
បន្ទាប់មក ភ្ជាប់ទៅ Button ក្នុង Form ដូចខាងក្រោម :
Private Sub CmdMinPublic_Click()
Me.Text7 = Min(Me.Text0, Me.Text2, Me.Text4)
End Sub
a-Program’s Code សំរាប់ Private Sub:
Private Sub CmdMinPrivate_Click()
Dim Min As Double
Min = Me.Text13
If Min > Me.Text15 Then
Min = Me.Text15
ElseIf Min > Me.Text17 Then
Min = Me.Text17
End If
Me.Text20 = Min
End Sub
10)
ចំណែករូុបមន្ដ Max ដូចគ្នាទៅនឹងរូប Min ដែរ ប៉ុន្ដែល័ក្ខខ័ណ្ឌផ្ទុយគ្នា
Public Function Max(A, B, C As Double) As Double
Max = A
If Max < B Then Max = B
If Max < C Then Max = C
End Function
11) ចូរបង្កើត Form ដូចខាងក្រោមៈ
a-Program’s Code:
Private Sub Combo10_AfterUpdate()
Me.RecordSource = “select * from [Salary] where Sex like ‘” & Me.Combo10 & “‘;”
End Sub
Private Sub Combo10_GotFocus()
Me.Combo10.RowSourceType = “Value list”
Me.Combo10.RowSource = “F, M”
End Sub
12)
ចូរបង្កើត Form ដូចខាងក្រោមៈ
a-Program’s Code:
Private Sub Frame12Find_Click()
Me.RecordSource = “select * from [Salary] where Name like ‘” & Find & “‘;”
End Sub
Function Find()
Select Case Frame12Find
Case 1
Find = “C*”
Case 2
Find = “D*”
Case 3
Find = “H*”
Case 4
Find = “*”
End Select
End Function
-Program’s Code:
Private Sub Form_Timer()
Me.Text21 = Format(Now, “h:mm:ss”)
End Sub
13) ចូរបង្កើត Button ដើម្បីបើកកម្មវិធីផ្សេងៗ
aរបៀបបង្កើត Dictionary
ដើម្បីបង្កើត Dictionary យើងត្រូវបង្កើត Table 3 ដែលមានឈ្មោះដូចខាងក្រោម
-Table Khmer
-Table English
-Part Of Speed
ហើយនៅក្នុង Table នីមួយៗ មាន
-Table Khmer
•Field Name:
-No Data Type
ជា AutoNumber
-ID Data Type
ជា Number
-Part_Speed Data Type
ជា Look Up Wizard
-Khmer1 Data Type
ជា Text
-Khmer2 Data Type
ជា Text
•    Table English
-ID Data Type
ជា AutoNumber
-English Data Type
ជា Text
•    Table Part Of Speed
-No Data Type
ជា AutoNumber
-Part_Speed Data Type
ជា Text
បន្ទាប់មកយើងធ្វេ្វ្វ្វី Relationship រវាង Table English និង Table Khmer ហើយទាញ ទិន្នន័យចូលក្នុង Query
•    
ទិន្នន័យក្នុង Query រួមមាន
-ID
និង English របស់ Table English
-Part_Speed, Khmer1, and Khmer2
របស់ Table Khmer
បន្ទាប់មក ភ្ជាប់វាទៅកាន់ Form ជារាង Tabular រួចយើងភ្ជាប់ Code ទៅកាន់ Command button មួយចំនួន
•Command button Add New
Docmd.GoToRecord, , acNewRec
English.Setfocus
•Command button Move First
Docmd.GoToRecord, , acFirst
•Command button Move Previous
On Error Resume Next
Docmd.GoToRecord, , ac Previous
•Command button Move Next
On Error Resume Next
Docmd.GoToRecord, ,acNext
•Command button Move Last
Docmd.GoToRecord, ,acLast
Code
ភ្ជាប់ទៅ Search សំរាប់ពាក្ស
Docmd.ApplyFilter, “English like’” & Search.Text & “*” &”‘”
Search.SelStart = Len(Search.Text)
aa