Author Topic: Class Grid Sorting(Hasil Query dari tabel yang diload tidak bisa disort di Grid)  (Read 458 times)

0 Members and 1 Guest are viewing this topic.

Offline adywjy@yahoo.co.id

  • Newbie
  • *
  • Posts: 14
Malam...
saya ada kendala pada saat query ulang terhadap tabel yang diload (saat jalankan form), dimana sort grid menjadi tidak berfungsi setelah proses query. Sort grid hanya bisa berfungsi tanpa/sebelum melakukan query.

Apakah class grdsorting ini memang hanya bisa menggunakan source dari tabel yang diload saat pertama kali buka form?
Saya mencoba menaruh tabel di form init, sort grid juga tidak berfungsi.

Minta pencerahan dari teman-teman agar setelah proses query sort grid tetap bisa berfungsi.
Lampiran file form dan class buat tes ada di https://drive.google.com/drive/folders/0B18-CkJ1zvv9c05OOWZ3VW1iMjg?usp=sharing

Makasih.







« Last Edit: September 23, 2016, 08:47:49 AM by adywjy@yahoo.co.id »

Offline dan2y

  • Senior Member
  • *
  • Posts: 563
maksudnya sort grid itu yg bagaimana?

taruh di dropbox aja ntar kasih linknya di mari

Offline adywjy@yahoo.co.id

  • Newbie
  • *
  • Posts: 14
Sudah saya upload ke googledrive, barusan saya edit post sebelumnya, sekarang sudah ada link untuk download.

Cara tes :
buka file proj1.pjx, disitu ada form2.scx dan class grdsorting.vcx
langsung jalankan form2

klik tombol Tombol 1(tanpa filter), setelah itu klik header masing-masing kolom (sort bisa berfungsi dengan baik)

setelah itu coba klik Tombol 2 (dengan filter), klik header masing-masing kolom (sort jadi tidak berfungsi)

masalahnya adalah eolah-olah sort grid hanya bisa berfungsi jika tabel(kursor) asli yang dibuka pada saat form load ditempelkan ke grid. Jika pingin menampilkan hasil filter(query kasih where terhadap suatu kondisi tertentu dari tabel asli) ke grid, sort jadi tidak berfungsi.






Offline dan2y

  • Senior Member
  • *
  • Posts: 563
bisa itu aku coba..

tabahin ini di procedure: munculkan
di taruh paling atas
   .RecordSource = ""
   .RecordSourceType = 1
   .RecordSource = "coba"

trus hilangin thisform.Grid1.RecordSource = "" di INIT

Offline dan2y

  • Senior Member
  • *
  • Posts: 563
untuk yang tombol2 tambahin di paling atas THISFORM.GRdsorting1.RecordSource =""

Offline adywjy@yahoo.co.id

  • Newbie
  • *
  • Posts: 14
sudah saya tambahkan pada method munculkan posisi paling atas :
WITH thisform.grdsorting1
  .RecordSource = ""
   .RecordSourceType = 1
   .RecordSource = "coba"
ENDWITH


init form :
saya hapus :
**thisform.grdsorting1.RecordSource = ''


tombol 2 :
saya tambahkan :
thisform.grdsorting1.RecordSource = ''

saat klik tombol 2 :
fungsi sortnya tetap tidak berfungsi itu mas...

kalo di tempat mas danys bisa, boleh dishare? :D





Offline dan2y

  • Senior Member
  • *
  • Posts: 563
iya yang tombol2 jadi kadang bisa kadang tidak ???

sudah dari pada pusing untuk tombol2 kamu jangan pake query tapi pake filter saja, itu pasti bisa..

SET FILTER TO harga<50

Offline adywjy@yahoo.co.id

  • Newbie
  • *
  • Posts: 14
kalo pakai set filter to ...... memang jalan, sebelumnya sudah sempat saya coba..

Tapi kalo di form beneran biasanya kondisi query sangat banyak (percabangan logika), kalo filter kayaknya kurang sesuai (menurut pribadi sy, :D)

contoh kalo di form master data stock, biasanya pasti saya kasih kotak isian di bagian atas, terus bawahnya ada grid yang isinya dari kotak isian diatasnya kalo sudah disimpan, bawahnya lagi ada fasilitas pencarian berdasarkan kode, nama dll. pada saat cari, disitu terjadi proses query ulang, hasil query itu ditempelkan kembali ke grid. Dengan kasus saya diatas mmg sampai sekarang belum berhasil, sementara saya koding manual per kolom...hehe.. karna belum bisa buat class.

Makasih banyak atas masukkan mas dan2y.







Offline dan2y

  • Senior Member
  • *
  • Posts: 563
oo gitu..

gridnya bikin sendiri aja, ini dari Mas Erick Gomez, tinggal di kembangin sendiri sesuai kebutuhan

Code: [Select]
*just to add to put the code below in the header click event (better still subclass the grid):
Local lcNdx,lcOrder,lcAlias,lnDot
With This
If .Tag = 'A'
lcOrder = 'Ascending'
.Tag = 'D'
Else
lcOrder = 'Descending'
.Tag = 'A'
Endif
lcNdx = .Parent.ControlSource
lnDot = At('.',lcNdx)
If lnDot > 0
lcNdx = Substr(lcNdx,lnDot+1)
EndIf
lcAlias = .Parent.Parent.RecordSource
Select (lcAlias)
Set Order To (lcNdx) &lcOrder
locate
.Parent.Parent.Refresh
.Parent.Parent.SetAll('FontBold',.F.,'header')
.FontBold = .T.
Endwith


*the above code will sort the column in ascending or descending order granting that you have an index set for that field.
« Last Edit: September 23, 2016, 11:38:37 AM by dan2y »

Offline adywjy@yahoo.co.id

  • Newbie
  • *
  • Posts: 14
ok mas, saya coba dulu.
di grup FB KPFI saya dibantu mas Atmanegara, dibuatkan class baru, saya copas dan jalan lancar .. :D. makasih banyak atas info dan bantuannya.

Offline juniorsiahaan

  • Junior Member
  • *
  • Posts: 248
Quote
ok mas, saya coba dulu.
di grup FB KPFI saya dibantu mas Atmanegara, dibuatkan class baru, saya copas dan jalan lancar .. :D. makasih banyak atas info dan bantuannya.

klo boleh dishare juga mas code yg berhasil itu disini.  :thumbsup:

Offline adywjy@yahoo.co.id

  • Newbie
  • *
  • Posts: 14
Bisa buanget Mas.. ini linknya https://www.dropbox.com/s/rsfa2bynd1h2gk0/GRIDSortingII.rar?dl=0

Pada versi 2 ini, tiap sort akan go top.
Sebetulnya ada yang versi 3, setelah sort akan dikembalikan ke posisi record aktif sebelum klik sort...
Tapi karna kemarin saya nyoba dan kayaknya ada sesuatu (belum pas), terus saya lewatkan karna keburu mau mencari pokemon..(saya kurang teliti/tidak mampu membaca class itu.. :D), sehingga saya masih pakai versi 2 dan modif di form yang menggunakan class itu.

Itu karya Pak Atmanegara.. saya hanya share ulang.

Silahkan mas..