Rabu, 28 Oktober 2015

Bls: [belajar-access] BELAJAR CLASS

 

incredible bang aksan
saya masih awam tentang class....., berarti perhitungan di atas bisa dilakukan oleh module function dan class
  1. Nah,yang lebih efektif digunakan yang mana ya?
  2. Dalam bayangan saya, contoh class yaitu seperti memanggil form pencarian/searching. Dimana didalam form pencarian tersebut ada misalnya :
Private Sub Close()
    Form_txthasilcari.Nama = Me.Nama
End Sub
dimana textbox form induknya memanggil value dari form searching, masalahnya form induknya lebih dari satu form (waaah maaf nih jadi nglantur temanya...hehehe). Bang admin, lebih baik ganti tema atau gimana nih?
*:D tersenyum lebar*:) senang



Pada Senin, 19 Oktober 2015 9:31, "Aksan Kurdin aksan.kurdin@gmail.com [belajar-access]" <belajar-access@yahoogroups.com> menulis:


 
Pelajaran singkat mengenai class di access
Access menganut hybrid oop
kita bisa membuat class di access (VBA) tetapi tidak full oop, karena class ini tidak bisa dibuat pewarisan.

class itu adalah 'cetak biru' dari obyek yang akan dibuat.
contoh dalam hal ini adalah notaris.

'obyek'nya adalah notaris
dari penjabaran bang satria, diketahui, notaris punya 'property' pengikatan dan besar plafon.
obyek selain punya properti, juga punya 'metode' (apa yang bisa dikerjakan obyek tersebut).
dalam hal ini, metode yang dibutuhkan baru satu, yaitu menghitung biaya.

kita buat definisi class nya dengan memilih menu new Class Module, dan simpan sebagai nama class nya.
Biasanya sebagai standarisasi, nama class diawali dengan huruf C, dari nama obyeknya.
Contoh: obyek notaris, maka nama classnya kita sebut CNotaris

setelah itu kita berikan dia properti pengikatan dan plafon. kita anggap properti ini bisa di baca dan bisa di tulis.
properti ini akan terkait dengan variable internal class (private yang hanya di kenal dalam class itu saja)

untuk properti pengikatan, sifatnya adalah integer, di class bisa didefinisikan:




Private int_pengikatan As Integer

Property Let Pengikatan(value As Integer)
    int_pengikatan = value
End Property

Property Get Pengikatan() As Integer
    Pengikatan = int_pengikatan
End Property



untuk properti plafon, sifatnya adalah double, di class di definisikan:

Private dbl_plafon AS Double

Property Let Plafon(value As Double)
    dbl_plafon = value
End Property

Property Get Plafon() As Double
    Plafon = dbl_plafon
End Property




Setiap class saat di instance kan (definisi dengan dim/private) akan membuat obyek baru dan menjalankan constructor (set nilai awal). di Access fungsi bawaannya adalah nama class _ intialize
Saat tidak dibutuhkan lagi, maka destructor nya pun di panggil untuk melepasnya dari memori, yang dijalankan adalah fungsi bawaan nama class _ terminate.
Definisi di classnya adalah:


Private Sub Class_Initialize()
    int_pengikatan = 0
    dbl_plafon = 0
End Sub

Private Sub Class_Terminate()
    'destroy any defined object
End Sub



dan yang terakhir, class notaris ini membutuhkan satu metode menghitung biaya yang sifatnya public.
kita definisikan sebagai fungsi public:


Public Function Biaya() As Double
    Dim dbl_result As Double
   
    If int_pengikatan = 19 Then
        Select Case dbl_plafon
            Case Is < 10000000: dbl_result = 0
            Case Is < 15000000: dbl_result = 7500
            Case Is <= 20000000: dbl_result = 10000
            Case Is > 20000000: dbl_result = 15000
        End Select
    Else
        dbl_result = 0
    End If
    Biaya = dbl_result
End Function


Nah, class kita sudah jadi.
Untuk implementasinya bisa di form, bisa di module.
Saya contohkan yang sederhana saja dengan module.
Buat module baru, dan cukup tuliskan barisan instruksi berikut:



Sub testNotaris()

    Dim notaris As New CNotaris

    notaris.Plafon = 10000000
    notaris.Pengikatan = 19
    Debug.Print notaris.Biaya

    Set notaris = Nothing

End Sub



Sekarang coba jalankan di Immediate Window (tekan Ctrl-G)
lalu ketikkan testNotaris [hit enter]

Silakan dipelajari.
Dalami dengan fungsi debug di VBA editor step into [F8] berkali-kali.


Regards,
Aksan Kurdin









On 10/19/2015 8:56 AM, Aksan Kurdin wrote:
Dear Bang Satria,
Tugasnya bikin class atau bikin module ?

Kalau bikin class, berarti anda bikin 'template' yang berisi properti seperti (pengikatan, plafon) dan metode seperti(Biaya).

jadi di implementasinya bisa berupa:


dim notaris as new CNotaris
notaris.pengikatan = Me.cboPengikatan
notaris.plafon = Me.txtPlafon
Me.txtBiayaNotaris = notaris.Biaya

set notaris = nothing


Regards,
Aksan Kurdin

On 10/7/2015 9:58 AM, Haer Talib haertalib@gmail.com [belajar-access] wrote:
 
Kalau yg saya buatin kemarin itu function bukan sub.
Function bisa dipanggil untuk menghasilkan nilai, kalau sub hanya menjalankan perintah.

Kalau memberi nilai kepada sebuah control (combo atau text box) via VBA, anda harus memberi identifier yang jelas.

Misal: me.pengikatan dan me.Plafon dan me.By_Notaris

Saran saya, pelajari identifier, hal ini fundamental.
Lalu pelajari pula expression, juga fundamental dalam programming.

Good luck!




Haer Talib

RumahAccess Indonesia
Tempatnya Belajar Microsoft Access
Artikel | Forum | Milis | Download | Training | Links | Blog | Event



2015-10-05 16:13 GMT+07:00 satriauad@yahoo.co.id [belajar-access] <belajar-access@yahoogroups.com>:


Sudah saya coba...tapi masih bingung
Punya saya seperti ini

Modul modHitung
=================
Public Sub Notaris()
    Dim Pengikatan As Integer
    Dim Plafon As Currency
    Dim By_Notaris As Currency

    If Pengikatan = 19 And Plafon < 10000000 Then
        By_Notaris = 0
    ElseIf Pengikatan = 19 And Plafon < 15000000 Then
        By_Notaris = 7500
    ElseIf Pengikatan = 19 And Plafon < 20000000 Then
        By_Notaris = 10000
    ElseIf Pengikatan = 19 And Plafon > 20000000 Then
        By_Notaris = 15000
    ElseIf Pengikatan <> 19 Then
        By_Notaris = 0
    End If
End Sub

Terus di form saya 'Call Notaris' tetep ga keluar angkanya

Dimana pengikatan di form adalah combobox, Plafon itu textbox, By_notaris juga textbox
Maaf nih, baru belajar 






__._,_.___

Posted by: satria kusuma <satriauad@yahoo.co.id>
Reply via web post Reply to sender Reply to group Start a New Topic Messages in this topic (9)
SPAM IS PROHIBITED

.

__,_._,___

Tidak ada komentar:

Posting Komentar