Makasih Bang Aksan, akan saya kembangkan sesuai kebutuhan. Berarti fungsi rank tersebut bisa digunakan efektif di report ya Bang.
diki w ________________________________ Dari: aksan kurdin <[email protected]> Kepada: [email protected] Terkirim: Selasa, 13 Januari, 2009 16:23:18 Topik: Re: Bls: Bls: Bls: [belajar-access] rank Anda lebih enak kerja di report, daripada di query (saya juga :) ) pelajari attachment, di report1. aksan kurdin 2009/1/13 diki wahyudin <pangestu_cx@ yahoo.com> Fungsi Rank tersebut digunakan untuk mendapatkan ranking suatu record dalam tiap-tiap group. Misalnya dalam satu group RECORD GROUP PENYESUAIAN_ PLUS RANK NILAI_POINT NILAI_H 1 AAAB 73,4 1 0,17 A 2 AAAB 72,3 2 0,33 B 3 AAAB 71,2 3 0,50 B 4 AAAB 69,8 4 0,67 B 5 AAAB 67,5 5 0,83 B 6 AAAB 66,9 6 1,00 C dimana : NILAI_POINT : [PENYESUAIAN_ PLUS] / [COUNT_OF_GROUP] NILAI_H : IIF([NILAI_POINT]<=0.25; "A"; IIF([NILAI_POINT]<=0.85; "B";"C")) Maksud saya seperti itu Bang Aksan, tetapi nilai di NILAI_POINT tersebut ngaco. Dengan rumus tersebut, nilainya adanya lebih dari 1, itu kan tidak mungkin. Ternyata yang masalahnya yaitu hasil rank tersebut tidak 1 2 3 dst, tapi 1 3 5 dst, atau 1 4 8 dst. Terima kasih sebelumnya. diki w ________________________________ Dari: aksan kurdin <aksan.kurdin@ gmail.com> Kepada: belajar-access@ yahoogroups. com Terkirim: Senin, 12 Januari, 2009 21:09:31 Topik: Re: Bls: Bls: [belajar-access] rank saya juga blm nangkap dengan fungsi rank yang anda buat. Option Compare Database Dim ctr, INTVAL As Integer Dim CustID As String Public Function R(Id As String, INTVAL As Integer) As Integer If CustID <> Id Then ctr = 1 CustID = Id Else ctr = ctr + 1 End If R = ctr End Function CustID , ctr, intval bukan variabel statik jadi nilai nya pasti kosong/nul setiap kali fungsi dipanggil, artinya custid selalu tidak sama dengan id, sehingga hanya blok pertama saja yang dijalankan, ctr pun pasti kembali 1. sebenarnya apa yang mau dikerjakan fungsi ini ? apa kembaliannya ? untuk perkara query kemarin saya sarankan dengan sub query, sekarang melihat kasusnya, bisa disederhanakan lagi dengan membentuk query average per group dari luar: SELECT NILAI.GROUP, Avg(NILAI.NILAI) AS AvgOfNILAI FROM NILAI GROUP BY NILAI.GROUP; simpan sebagai qsAvg. dan berikut hasil query yang memodifikasi fungsi dvag semula, minus fungsi rank (saya tunggu penjelasannya) : SELECT NILAI.NIK, NILAI.GROUP, NILAI.NILAI, NILAI.PENAMBAHAN, qsAvg.AvgOfNILAI AS Penyesuaian1, [Nilai]/[AvgOfNilai ]*70 AS PenyesuaianPlus, [Nilai]/[AvgOfNilai ]*70+[Penambahan ] AS PenyesuaianPlus1 FROM NILAI INNER JOIN qsAvg ON NILAI.GROUP = qsAvg.GROUP; aksan kurdin 2009/1/13 diki wahyudin <pangestu_cx@ yahoo.com> ada yg terlewat, rumus yang sebenarnya yaitu : PENYESUAIAN_ PLUS = [NILAI]/[RATA2 GROUP] * 70 RATA2 GROUP tsb diambil dari DAVG atau SELECT AVG dari sql ________________________________ Dari: diki wahyudin <pangestu_cx@ yahoo.com> Kepada: belajar-access@ yahoogroups. com Terkirim: Selasa, 13 Januari, 2009 11:08:19 Topik: Bls: [belajar-access] rank Nilai 70 itu memang angka default untuk menyamakan standar penilaian agar berkisar pada angka tersebut. Karena ada penilai yg pelit dan ada juga yg royal. Maaf rata2 AABC emang 70,75, karena dvagnya belum jalan, maka saya tulis manual. Kalau untuk rata2nya dulu sudah bisa, dihitung dulu pake crosstab. Cuman saya pengen coba cara lain kali aja ada yang lebih cepet. Groupnya memang banyak sekitar 150-an. Yang masih jadi masalah itu yaitu fungsi rank-nya, mungkin Bang Aksan punya metode lain. Terima kasih. Diki W ________________________________ Dari: aksan kurdin <aksan.kurdin@ gmail.com> Kepada: belajar-access@ yahoogroups. com Terkirim: Senin, 12 Januari, 2009 18:40:54 Topik: Re: [belajar-access] rank lupa2 ingat masalah statistik, udah lama :) jangan pake davg, : PENYESUAIAN_ 1: DAvg("[NILAI] ","NILAI" ,"[GROUP] = " & "[" & [GROUP] & "]") coba ganti dengan subquery: Penyesuaian1: (SELECT Avg(Nilai) FROM [Nilai] WHERE [Group] = Nilai!Group) Terus yang ini coba terangkan: PENYESUAIAN_ PLUS: IIf([GROUP]= "AAAB",([ NILAI]/71. 17*70)+[PENAMBAH AN],([NILAI] /71*70)+[ PENAMBAHAN] ) Nilai 71.17 adalah rata2 AAAB Nilai 71 ? apakah rata2 AABC (70.75) Terus nilai 70 dapat dari mana ? Bagaimana kalau ada data lain ABCD, BCDE, CDEF, ..... WXYZ ? Nested IIF di banyakin ? aksan kurdin 2009/1/12 diki wahyudin <pangestu_cx@ yahoo.com> Maaf mohon bantuannya lagi nih buat para pakar semuanya. Sebetulnya dulu pernah saya tanyakan. Belum juga ketemu masalahnya. Berikut contoh file terlampir. Yang menjadi permasalahan : 1. menggunakan fungsi davg di query, masih error. 2. fungsi rank yang saya buat hasilnya tidak bisa digunakan untuk perhitungan, karena nilainya berubah sendiri. Jika field NILAI_H pada query PENGHITUNGAN dihapus maka hasil rangkingnya benar. sebenarnya dari hasil rank tsb saya akan melalukan banyak penghitungan. Tetapi semakin banyak penghitungan menggunakan hasil rank, maka hasilnya semakin kacau. Malah pada saat kita pindah kursor di field RANK, nilainya bisa berubah otomatis. Mohon solusinya. Terima kasih diki w ____________ _________ _________ _________ _________ _________ _ Dapatkan nama yang Anda sukai! Sekarang Anda dapat memiliki email di @ymail.com dan @rocketmail.com. http://mail. promotions. yahoo.com/ newdomains/ id/ -- Aksan Kurdin ________________________________ Coba emoticon dan skin keren baru, dan area teman yang luas. Coba Y! Messenger 9 Indonesia sekarang. ________________________________ Apakah demonstrasi turun ke jalan itu hal yang wajar? Temukan jawabannya di Yahoo! Answers! -- Aksan Kurdin ________________________________ Nama baru untuk Anda! Dapatkan nama yang selalu Anda inginkan di domain baru @ymail dan @rocketmail. Cepat sebelum diambil orang lain! -- Aksan Kurdin Menambah banyak teman sangatlah mudah dan cepat. Undang teman dari Hotmail, Gmail ke Yahoo! Messenger sekarang! http://id.messenger.yahoo.com/invite/

