Sabtu, 26 November 2011

Re: [belajar-access] Jalankan proses dengan VBA untuk semua record sekaligus

penggunaan blok select case bisa diganti dengan fungsi choose:

function namahari(noHari as integer) as string
    namahari = choose(noHari,"Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu")
end function

calculated field di tabel sebenarnya melanggar normalisasi, tetapi bisa dianggap sebagai view. Jadi tidak perlu lagi buat calculated field di querynya.


aksan kurdin

On 11/25/2011 7:11 PM, Morina Done wrote:
 

Bung Bud,

kalau byk kondisinya …  bisa juga bikin function utk update field di tabelnya lewat DAO.

Ini dibawah contoh ya, applicable dengan data "Hari" di email sblmnya. Utk kebutuhan kembangin ndiri ya. Good luck!

 

Function getHaree()

Dim rst As DAO.Recordset

Dim strHaree As String

Set rst = CurrentDb.OpenRecordset("SELECT TAbsen.TimeIn, TDetail.Hari FROM TAbsen INNER JOIN TDetail ON TAbsen.Nomor = TDetail.Nomor")

rst.MoveFirst

Do While rst.EOF = False

    Select Case Weekday(rst!TimeIn)

    Case Is = 1

        strHaree = "Sunday"

    Case Is = 2

        strHaree = "Monday"

    Case Is = 3

        strHaree = "Tuesday"

    Case Is = 4

        strHaree = "Wednesday"

    Case Is = 5

       strHaree = "Thursday"

    Case Is = 6

        strHaree = "Friday"

    Case Is = 7

        strHaree = "Saturday"

    End Select

   rst.Edit

   rst!Hari = strHaree

   rst.Update

   rst.MoveNext

Loop

rst.Close

Set rst = Nothing

End Function

 

Trus di button on click nya tinggal manggil function ini

 

Private Sub Command11_Click()

getHaree

Me.Requery

End Sub

 

daagh

MDone

From: belajar-access@yahoogroups.com [mailto:belajar-access@yahoogroups.com] On Behalf Of budi suryadi
Sent: Thursday, 24 November, 2011 3:03 PM
To: belajar-access@yahoogroups.com
Subject: Bls: [belajar-access] Jalankan proses dengan VBA untuk semua record sekaligus

 

Sebelumnya terima kasih atas sarannya bang MDone,

sudah saya coba dan untuk kasus tersebut berhasil dengan cara yg bang MDone sarankan,
saya memang sengaja hasilnya di store ke dalam field krn berikutnya field tersebut akan diproses lagi
tetapi masih ada kendala nih bang, bagaimana klo syarat dan kondisinya cukup banyak, misalkan :

NILAI = IIF (A=1 and B=1 and C=1,"Luar Biasa",IIF((A=1 and B=1 and C=0) or (A=1 and B=0 and C=1) or (A=0 and B=1 and C=0),"Memuaskan",dst..)

saya sudah coba dengan cara yang sama dan dengan cara call procedure tp masih belum berhasil, mohon sarannya...



 

Best Regard's
Budi Suryadi

 


Dari: Morina Done <morina.done@yahoo.co.id>
Kepada: belajar-access@yahoogroups.com
Dikirim: Rabu, 23 November 2011 22:39
Judul: RE: [belajar-access] Jalankan proses dengan VBA untuk semua record sekaligus

 

Bung Budi;

Ini mo ngambil HARI nya si TimeIn kan?

Kenapa harus di store ke dalam field? Kalau hanya utk sekedar information TimeIn itu hari apa, kalo bole saran bisa pake unbound saja.

Di Hari textbox nya, control source nya di set =[TimeIn] trus format nya dddd (d untuk day, kalau d-nya empat akan menampilkan nama hari secara lengkap) ga pake vba code dan button.

 

Tapi kalau mau di store juga ke dalam field, pake access berapa? Kalau 2010, ada type baru namanya Calculated field, bisa pake itu.

 

Atau, kalo pake 2003 atau masih mau teteup lewat button yang langsung update seluruh recordsnya HARI sesuai dengan hari di TimeIn, bisa pake sql.

Di btn on click Code nya

 

CurrentDb.Execute "UPDATE TAbsen INNER JOIN TDetail ON TAbsen.Nomor = TDetail.Nomor " & _

"SET TDetail.Hari = IIf(Weekday([TimeIn])=1,'Sunday',IIf(Weekday([TimeIn])=2,'Monday'," & _

"IIf(Weekday([TimeIn])=3,'Tuesday',IIf(Weekday([TimeIn])=4,'Wednesday',IIf(Weekday([TimeIn])=5,'Thursday'," & _

"IIf(Weekday([TimeIn])=6,'Friday',IIf(Weekday([TimeIn])=7,'Saturday','')))))))"

Me.Requery

 

Banyak sih jalan menuju roma ….

 

Semoga bermanfaat.

 

MDone

 

From: belajar-access@yahoogroups.com [mailto:belajar-access@yahoogroups.com] On Behalf Of budi suryadi
Sent: Wednesday, 23 November, 2011 4:58 PM
To: belajar-access
Subject: [belajar-access] Jalankan proses dengan VBA untuk semua record sekaligus [1 Attachment]

 

 

[Attachment(s) from budi suryadi included below]

Selamat Sore teman-teman access..

 

Saya sedang mencoba membuat database, tetapi menemui kendala

Misalnya saya punya dua buah tabel yang dihubungkan dengan relasi, dan satu buah query yang dibuat dari 2 buah tabel tersebut.

Kemudian saya membuat sebuah form dari data query tadi, dengan sebuah button yang berisi perintah berikut :

 

Private Sub Command11_Click()

    Dim HarTemp As Integer
    Dim Bulan As Integer
    HarTemp = Weekday([TimeIn])
    Select Case HarTemp
        Case Is = 1
            Hari.Value = "Sunday"
        Case Is = 2
            Hari.Value = "Monday"
        Case Is = 3
            Hari.Value = "Tuesday"
        Case Is = 4
            Hari.Value = "Wednesday"
        Case Is = 5
            Hari.Value = "Thursday"
        Case Is = 6
            Hari.Value = "Friday"
        Case Is = 7
            Hari.Value = "Saturday"
    End Select

 

    Tgl.Value = DateValue(TimeIn.Value)
    Jam.Value = TimeValue(TimeIn.Value)
End Sub

 

Yang ingin saya tanyakan bagaimana caranya agar ketika button proses diclick, maka perintah tersebut langsung berjalan

pada setiap record yang ada, sehingga saya tidak perlu berpindah record lalu klik button, lalu pindah record lagi dan klik button lagi...?

 

Apabila saya coba langsung bikin dengan query alhamdulillah bisa, tapi bagaimana caranya bila dengan code vba seperti di atas  ?

Untuk lebih jelasnya saya lampirkan contoh databasenya...sebelumnya saya ucapkan terima kasih

 

Best Regard's
Budi Suryadi


Tidak ada komentar:

Posting Komentar