Author Topic: perintah set filter to  (Read 19260 times)

0 Members and 1 Guest are viewing this topic.

Offline nxs_02

  • Newbie
  • *
  • Posts: 9
perintah set filter to
« on: April 08, 2009, 01:00:17 PM »
jika saya menggunakan code berikut:

select nama_tabel
set filter to thisform.angka.value<angka

mengapa code diatas tidak berjalan?

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 14.053
  • Awas ya...
Re: perintah set filter to
« Reply #1 on: April 08, 2009, 01:48:22 PM »
jangan pakai kata "thisform" dalam ekspressi filter
...
public x
x=thisform.angka.value
set filter to angka>x
thisform.refresh

Offline Haryadivfp

  • Junior Member
  • *
  • Posts: 181
  • KNOWLEDGE IS POWER
Re: perintah set filter to
« Reply #2 on: April 08, 2009, 01:52:29 PM »
Ya iyalah.......Lha perintahnya aja kebalik gitu, liat help dong..
tak kasih contoh nih..:

Select Mahasiswa
set filter to Mahasiswa.kota="Semarang"
atau
set filter to year(Mahasiswa.TahunMasuk) > 2000

begitu.......
Manfaatkan waktu untuk medapatkan ilmu...

Offline ganaz

  • Junior Member
  • *
  • Posts: 237
Re: perintah set filter to
« Reply #3 on: April 08, 2009, 01:58:03 PM »
select nama_tabel
set filter to thisform.angka.value<angka

mengapa code diatas tidak berjalan?

logika set filter salah mas anda terbalik memasukkannya, kalo menurut saya yang benar

Code: [Select]
select nama_tabel
set filter to angka < thisform.angka.value

selamat mencoba. :thumbsup:

@pak david kenapa pake thisform dilarang untuk ekspresi filter??terus terang saya sering menggunakannya dan tidak ada masalah tuh.

Thank'z
Thank'z


Ganaz

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 14.053
  • Awas ya...
Re: perintah set filter to
« Reply #4 on: April 08, 2009, 02:09:59 PM »
thisform hanya bisa dipakai dari dalam form itu... ada situasi kita berada "diluar" form dan perlu berinteraksi dengan set data sama / itu juga, misalnya kalo nge-print ato pindah form... kayak klo LM bilang Mas Mas... nah tergantung dimana dia maka siapa yang dimaksud?
« Last Edit: April 08, 2009, 02:14:19 PM by davidmustakim »

Offline armen_sakti

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 1.254
Re: perintah set filter to
« Reply #5 on: April 08, 2009, 11:03:31 PM »
Saya tambahkan ya,
Quote
thisform hanya bisa dipakai dari dalam form itu... ada situasi kita berada "diluar" form dan perlu berinteraksi dengan set data sama / itu juga, misalnya kalo nge-print ato pindah form...
Maka Filter Clear, karea sesion

Filter yang diningikan antar Form/Report bersifat Public ya harus juga Rules of Filternya menggunakan Public VarMem.

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.605
    • Foxy Land
Re: perintah set filter to
« Reply #6 on: April 08, 2009, 11:28:42 PM »
@ganaz:

Sebenarnya, selama expression filter itu masih dalam scope, pasti program akan berjalan baik-baik saja. Tapi, siapa yang bisa menjamin itu? Sama dengan @davidmustikim, imho, tidak mudah untuk menjamin bahwa focus program akan selalu berada di form yang Anda buat - terutama kalau Anda menggunakan MDI (Multiple Document Interface). Kalau model aplikasi MDI, Anda akan menggunakan WindowType Modeless, dan Anda tau kan; dengan model itu, user bisa berpindah antara satu form ke form lain. Nah... kalau filter expression Anda menggunakan thisform, jadi seperti bom waktu.... Memang, kalau Anda selalu pakai SDI, tidak akan ada masalah. Jadi kembali ke preference programmer deh...

hth,
foxy
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 14.053
  • Awas ya...
Re: perintah set filter to
« Reply #7 on: April 08, 2009, 11:55:42 PM »
@ganaz: kabuuur... digempur sama wong sakti dan papa suhu, hehehe

Offline ganaz

  • Junior Member
  • *
  • Posts: 237
Re: perintah set filter to
« Reply #8 on: April 09, 2009, 08:54:43 AM »
*banyak jalan menuju roma, meskipun kadang mbulet rutenya* ::) ::)

@ foxy & david mustakim, thank'z atas arahannya.
@ david mustakim, saya gak kabur bos.. cuma emang kemarin di kantor banyak kerjaan jadi saya logout. :thefinger:

Thank'z semuanya
Thank'z


Ganaz

Offline nestorbj

  • Junior Member
  • *
  • Posts: 134
    • http://
Re: perintah set filter to
« Reply #9 on: April 09, 2009, 09:58:52 AM »
Banyak programmer VFP menghindari perintah SET FILTER krn bisa sangat lambat. Tapi ini juga pilihan / preferrence pribadi. Saya secara pribadi lebh senang menggunkan parameterized View atau Cursor.
untuk contoh diatas, saya gunakan:

Code: [Select]
LOCAL lcFilter
lcFilter = thisform.angka.value

SELECT * FROM namatabel;
   WHERE angka<lcFilter;
   INTO CURSOR crsTemp
SELECT crsTemp
 .... && lakukan yg anda inginkinkan setelah ini
 Remember ... the FOX will be with you ... always *

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 14.053
  • Awas ya...
Re: perintah set filter to
« Reply #10 on: April 09, 2009, 11:28:52 AM »
- kalau pake select sql untuk buat cursor ya boleh aja pake "where angka<thisform.text1.value"
- kalau mau buat "parameterized view/query" harusnya gini
CREATE SQL VIEW namaview AS SELECT * FROM tabel WHERE tabel.angka < ?lcFilter

Offline armen_sakti

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 1.254
Re: perintah set filter to
« Reply #11 on: April 09, 2009, 11:39:09 AM »
Quote
Banyak programmer VFP menghindari perintah SET FILTER krn bisa sangat lambat. Tapi ini juga pilihan / preferrence pribadi. Saya secara pribadi lebh senang menggunkan parameterized View atau Cursor

Wah yang benar aja mas, anda tidak bisa membandingkan SET FILTER dengan Query ya itu jelas beda perlakuan VFP IDE.

Wah jadi OOT neh gara2 post anda ini.

Ok coba Run Code berikut
Code: [Select]
SET decimal TO 3
CREATE CURSOR curTest ( ID_ n( 10 ), Remark c( 20 ), timestamp c( 30 ) )
FOR i = 1 TO 100000
INSERT INTO curTest VALUES ( i, SYS( 2015 ), TRANSFORM( DATETIME() ) )
ENDFOR
MESSAGEBOX( 'Saatnya melakukan Perbandingan kecepatan Filter vs Query' )

*-- Test waktu dengan Set Filter
cKondisi = MOD( ID_,125 ) = 0
nSec = SECONDS( )
SET FILTER TO ( cKondisi )
*COPY TO ADDBS( GETENV( "TEMP" ) ) + SYS ( 2015 ) + '.tmp'
nSecFilter = SECONDS( ) - nSec

*-- Test Waktu dengan Query masih dengan kondisi yang sama
nSec = SECONDS ()
SELECT * FROM curTest WHERE ( cKondisi ) INTO CURSOR curQryResult
nSecQuery = SECONDS( ) - nSec

*-- Perbandingan waktu
cSelisih =  TRANSFORM( nSecQuery - nSecFilter )
MESSAGEBOX('Waktu Filter : '+TRANSFORM(nSecFilter)+ CHR 13  + 'Waktu Query : ';
+TRANSFORM( nSecQuery )+ CHR 13  + 'Filter lebih cepat '+cSelisih+' dari Query ')

use in select( 'curTest' )
use in select( 'curQryResult ')

p.s

ada kesalahan script PHP pada jadi CHR 13 angka 13 dalam tanda kurung menyebabkan siaaaaal hehehe

terlihat SET FILTER waktunya = 0  ( nol ) atinya ibarat hanya khayalan aja alias belum ada hasil apa2, tetapi Query membutuhkan waktu ini sebab nya Query itu harus menulis hasil Filter ke cursur, dan cursor itu secara fisik filenya terbentuk pada Default Temporaty folder.
« Last Edit: April 09, 2009, 11:41:24 AM by armen_sakti »

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 14.053
  • Awas ya...
Re: perintah set filter to
« Reply #12 on: April 09, 2009, 11:56:35 AM »
sebenarnya yang dimaksud @nestorbj bahwa "set filter" itu lambat adalah sbb:
a - misalkan data berisi 2 juta records dan kita inginkan tampil di form dengan kondisi filter
b - maka 2 jt records harus melalui kabel jaringan ke pc klien dulu keseluruhannya - > lambat
c - set filter akan menyaring tampilan (misalnya di grid pada form) hanya yang angka<syarat_nilai
d - navigasi pointer naik-turun pada grid akan terasa lambat selain kelambatan  a  dan  b  diatas

parameterized view dalam postingan saya sebelum ini adalah kutipan rekomendasi microsoft

Offline armen_sakti

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 1.254
Re: perintah set filter to
« Reply #13 on: April 09, 2009, 08:00:25 PM »
sebenarnya yang dimaksud @nestorbj bahwa "set filter" itu lambat adalah sbb:
a - misalkan data berisi 2 juta records dan kita inginkan tampil di form dengan kondisi filter
b - maka 2 jt records harus melalui kabel jaringan ke pc klien dulu keseluruhannya - > lambat
c - set filter akan menyaring tampilan (misalnya di grid pada form) hanya yang angka<syarat_nilai
d - navigasi pointer naik-turun pada grid akan terasa lambat selain kelambatan  a  dan  b  diatas

Kapan pak David diberitauhu maksud tesebut oleh nestorbj? Wah kok ga di post langsung ya di forum?

tambahan :
Yang jelas SET FILTER ITU tidak boleh dibanding kan dengan VIEW/CURSOR QUERY, coz tidak sebanding alias beda perlakuannya dari Engine VFP sendiri.
Selama ini saya masih pake SET FILTER ITU juga jika dan setelah terbentuk Cursor dari Query, kenapa?
Sebab ada kalanya saya hanya mo liat record tertentu aja pada GRID yang telah terisi Cursor...ya ga mungkinlah saya lakukan Query lagi untuk hal itu.

Dan tidak mungkin saya memfilter Record dari DB Server (DB saya MySQL), jika pake DBF yang lewat media Networking. spt point a dan b yang ditulis pak David. Alasannya Lambat kalo ini baru benar.

Offline Leon2

  • Junior Member
  • *
  • Posts: 305
  • Jelajahi Fox World U'll Be Happy n Rich
Re: perintah set filter to
« Reply #14 on: April 10, 2009, 01:48:27 AM »
Tanya kenapa HARUS menghindari 'Set Filter'...
Numpang sharing pengalaman pribadi :
-------------------------------------
Untuk aplikasi integrated multiuser akan sangat terasa pengaruhnya, kalau untuk aplikasi multiuser non-integrated masih bisa toleransi namun tetap saja tidak saya sarankan krn tetap saja akan lebih lambat saat mengkases data dengan jumlah record yang cukup besar.
-Gunakan Filter untuk akses data master
-Gunakan Query/SQL untuk akses data transaksi

Banyak cara untuk mengambil air ('data') untuk cuci muka dengan gayung ('set filter') tentu lebih cepat dari pada pake ember ('Query/SQL'), tapi kalau tujuan kita ambil air dari sungai untuk mengisi bak mandi sebaiknya pakai ember, tanya kenapa silahkan coba sendiri , dan tentu saja keahlian kita juga akan mempengaruhi hasilnya.  :icon_biggrin:

Seperti yang sudah dicontohkan p.Armen  :icon_salut: (mengakses data yg sudah ada di buffer memory/RAM) maupun p.David  :icon_salut:(mengakses data yang disimpan di fisik filedata/table dbf via PC-Server/Jaringan) adalah sesuatu hal yang berbeda yang perlu kita cermati lebih seksama.
« Last Edit: April 10, 2009, 02:15:06 AM by Leon2 »
Kasih Sayang Tanpa Kekuatan Adalah Kelemahan
Kekuatan Tanpa Kasih Sayang Adalah Kezaliman
Cinta Itu Buta Tapi Lebih Buta Orang Yang Tidak Kenal Cinta