/* */

Thursday, September 30, 2010

[belajar-access] Re: Pusing buat report

Kita bisa select data dari tabel lain sebagai field dalam satu query melalui sub query, dan tampaknya untuk menghindari penggunaan temp. table, dan cukup dengan satu query saja, anda harus belajar menggunakannya.

perhatikan query ini yang akan jadi query-based untuk report seperti di excel:

SELECT P.NAMA, P.NIPBR, P.NIPLM, P.T4LHR, P.TGLLHR, P.JK, P.AGAMA,
(SELECT TOP 1 NOSK FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK) AS NOSK_ANGKAT,
(SELECT TOP 1 TGLSK FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK) AS TGLSK_ANGKAT,
(SELECT TOP 1 GOLID FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK) AS GOL_ANGKAT,
(SELECT TOP 1 GOL.Pangkat FROM GOL INNER JOIN SK ON GOL.GolId = SK.GOLID WHERE SK.NIPBR = P.NIPBR ORDER BY SK.TGLSK) AS PANGKAT_ANGKAT,
(SELECT TOP 1 TMT FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK) AS TMT_ANGKAT,
(SELECT TOP 1 MKTH FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK) AS MKTH_ANGKAT,
(SELECT TOP 1 MKBL FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK) AS MKBL_ANGKAT,
(SELECT TOP 1 NOSK FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK DESC) AS NOSK_AKHIR,
(SELECT TOP 1 TGLSK FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK DESC) AS TGLSK_AKHIR,
(SELECT TOP 1 GOLID FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK DESC) AS GOL_AKHIR,
(SELECT TOP 1 GOL.Pangkat FROM GOL INNER JOIN SK ON GOL.GolId = SK.GOLID WHERE SK.NIPBR = P.NIPBR ORDER BY SK.TGLSK DESC) AS PANGKAT_AKHIR,
(SELECT TOP 1 TMT FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK DESC) AS TMT_AKHIR,
(SELECT TOP 1 MKTH FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK DESC) AS MKTH_AKHIR,
(SELECT TOP 1 MKBL FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK DESC) AS MKBL_AKHIR
FROM PEGAWAI AS P


ok, coba copy paste query tersebut ke query baru dan jalankan. Anda melihat hasilnya adalah nama pegawai disertai informasi pengangkatan dan pangkat terakhir.
setiap kolom untuk 'pengangkatan sebagai cpns' adalah merupakan field sub query. sub query ini akan memfilter tabel yang dibutuhkan berdasarkan kriteria pada row saat itu berada.
logika yang saya pergunakan untuk informasi pengangkatan adalah tabel SK di sort by TGLSK menaik untuk pegawai di row tabel pegawai yang saat itu cursor berada, dan tarik row paling atas saja (tgl terkecil)


(SELECT TOP 1 NOSK FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK) AS NOSK_ANGKAT,

logika yang sama juga untuk informasi pangkat terakhir, informasi yang diambil adalah dari tabel SK di urut berdasarkan tanggal menurun, dan diambil row paling atas saja untuk pegawai yang ditunjuk kursor (tgl terbesar ada di atas)

(SELECT TOP 1 NOSK FROM SK WHERE NIPBR = P.NIPBR ORDER BY TGLSK DESC) AS NOSK_AKHIR,


cukup sampai disini saya beri contoh, silakan terapkan cara yang sama untuk jabatan terakhir dan pendidikan.


aksan kurdin


--- In belajar-access@yahoogroups.com, Jarjit Aco <jirjit81@...> wrote:
>
> Dear Master Access,
> nanya lagi berikut ada aplikasi sederhana (newbie yang buat nich, terlampir),
> bagaimana yach buat reportnya seperti file contoh di excel (terlampir juga).
> soalnya udah mutar-mutar gga bisa juga
> * apa dibuatkan tabel temporary ato pake query yach ?, trus gimana caranya ?
> mohon bimbingan master skalian.
>
> thank's
>


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

SPAM IS PROHIBITEDYahoo! Groups Links

<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/belajar-access/

<*> Your email settings:
Individual Email | Traditional

<*> To change settings online go to:
http://groups.yahoo.com/group/belajar-access/join
(Yahoo! ID required)

<*> To change settings via email:
belajar-access-digest@yahoogroups.com
belajar-access-fullfeatured@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
belajar-access-unsubscribe@yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/

No comments:

Post a Comment