Arsip: Lagi: Nomor urut otomatis di dbgrid

 
user image
more 13 years ago

i_hasibuan

Di topik ini http://pascal-id.org/thread/unknown/3050/view-old-thread/ @CH menjawab sbb:

procedure TFMain.Button1Click(Sender: TObject);
begin  
with MyQuery1 do 
  begin    SQL.Clear;   
   SQL.Append('SELECT '+      'db_delphier.tb_customer.id_cust, '+ 
     'db_delphier.tb_customer.nm_cust, '+
      'db_delphier.tb_customer.alamat_cust '+
      'FROM '+      'db_delphier.tb_customer '    );
   Open;
 end;
end;
procedure TFMain.FormCreate(Sender: TObject);
begin  pvCount := 0;
end;
 procedure TFMain.MyQuery1CalcFields(DataSet: TDataSet);
begin
  pvCount := pvCount + 1;
  MyQuery1['no_urut'] := pvCount;
end;
code diatas saya gunakan utk dbgrid dgn 3600 data (salah satu prosedur saya menggunakan query "select from tabelanu" agar user bisa browse database dan menampilkan detail-table). dan DBgrid saya, punya height yg hanya bisa menampilkan 8 records sekaligus. masalahnya
procedure TFMain.MyQuery1CalcFields(DataSet: TDataSet);
(sepertinya) hanya berjalan pada record yang ditampilkan di dbgrid (padahal datasetnya/query select
...) punya 3600 record. Jadi ketika kita broese database dengan "query1.last" maka nomor 9(pvcount=9) diberikan pada record terakhir...dst jika kemudian "query1.prior" maka record ke-3599 nomor/pvcount nya menjadi 10 record ke-3598 nomor/pvcount nya menjadi 9 record ke-3597 nomor/pvcount nya menjadi 8 dst..... tambahan: query1.autocalcfield saya setting true atau false tidak pengaruh. Mohon penjelasan: 1. event "oncalcfield" itu dieksekusi jika ....... 2. apakah data yg di-fetch oleh query1 itu hanya sebatas yg perlu ditampilkan di dbgrid? 3. solusi atas masalah saya tsb diatas. Tambahan(lagi): saya pke delphi6, mysql5, query-nya zeoss, Mudah2an cukup dimengerti masalah yg saya maksud, dan juga dimengerti apa solusinya Tks b4
user image
more 13 years ago

Bahrul_power

sepertinya mas hanya ingin nampilin no urut aja kan? kenapa ga pakai no.record aja....? kan lebih simple? procedure TFMain.MyQuery1CalcFields(DataSet: TDataSet); begin MyQuery1['no_urut'] := MyQuery1.recno; end; mungkin gitu mas......
user image
more 13 years ago

i_hasibuan

Sudah dicoba, tapi yg keluar malah ngaco, gak tahu salahnya dimana Hasil yg keluar jadi kira2 seperti ini no_urut nippegawai namapegawai ......... =========================== 1 123456789 sutan 1 123456789 sutan 2 234567890 santan 4 456789012 sulthan . . . . 3598 358998564 syai than 3598 358998564 syai than 3599 399999999 pangeran 3600 600000000 raja jadi di dbgrid ada beberapa record yg muncul beberapa kali sementara beberapa record malah gak muncul (jumlah row dbgrid tetap 3600). Padahal untuk untuk nyoba cara Bahrul_power diatas saya sudah bela2 in menulis ulang code di event / menunggu procedure "oncalcfield" selesai dulu baru dataaccess.onchange dijalanin.
user image
more 13 years ago

Bahrul_power

Saya juga pakai mas, ga masalah tuh....., mungkin perintah query ada yang salah...... coba deh cek lagi, perintah querynya dipersingkat aja mas with MyQuery1 do begin If active=true then close; SQL.Clear; SQL.Append('SELECT id_cust, nm_cust, alamat_cust FROM db_delphier.tb_customer' ); Open; end; kan lebih pendek mas...... semoga berhasil.
user image
more 13 years ago

nurez

MyQuery1['no_urut'] := MyQuery1.recno; klo pakai itu ada -1 dan kurang dari 1 recordnya... waduhh bs dipetat... klo pakai pvcount.. data sy kn di tampilkan sebanyak 10 per grid, klo ngeroll kebawah... angka-nya aneh2.. atau karna kebanyakan recordnya..? cz hanya 600an :( atau koneksinya yg lama dari MDB..? mohon tanggapannya lebih lanjut kang CH :)
user image
more 13 years ago

i_hasibuan

tks sebelumnya mumpung om bahrup lagi semangat, saya jelasin lagi database saya saya pake query Zeoss dgn nama "querybrowse" tergantung pilihan user, maka querybrowse.sql.text='select from tabelinduk where nip=.......... atau querybrowse.sql.text='select from tabelinduk where nama like ......... atau querybrowse.sql.text='select from tabelinduk; lalu: querybrowse.active:=true; trus datasourcebrowse.dataset:=querybrowse dbgrid1.datasource:=datasourcebrowse nah, jika user berpindah row di dbgrid akan me-run event datasourcebrowse.ondatachange yg isinya nippilih:= querybrowsenip.value; querydetail1.sql.text:='select from tabeldetail1 where nip='+nippilih //saya tambah chr(39) atau yg lainnya seperlunya querydetail2.sql.text:='select * from tabeldetail1 where nip='+nippilih //saya tambah chr(39) atau yg lainnya seperlunya . . dimana querydetail1,.... dari tabeldetail datainduk alasan saya karena isi tabeldetail cukup besar (blob,image,memo), shg yg dipilih satu record aja (nip=primarykey). tadinya saya pake masterfield-detailfield, tapi kayaknya rakus memory. jadi program saya jalan sesuai diharapkan sebelum ada event oncalcfield . setelah saya tamnah procedure oncalcfield, program saya jalan, tapi jalnnya gak nentu arah.... bisa2 user malah kesasar mungkin ada saran ttg apa yg saya buat, atau cara optimasi code saya diatas??? Any help would be appreciated. Tks
user image
more 13 years ago

i_hasibuan

@Bozz Luri, bukan gak sabar nunggu jawaban rekan2, tp cuman memperjelas klo pertanyaan saya itu ada 3 poin
Mohon penjelasan: 1. event "oncalcfield" itu dieksekusi jika ....... 2. apakah data yg di-fetch oleh query1 itu hanya sebatas yg perlu ditampilkan di dbgrid? 3. solusi atas masalah saya tsb diatas.
klo ada yg bisa bantu, yg ingin saya tanya itu bukan cuma solusi autonumber di dbgrid. (1) dan (2) udah konsultasi ke help-nya delphi, tapi malah puyeng..yeng... untuk yg (3) saya coba query

Querybrowse['nomor'] := querybrowse.recno; 
di prosedur lain (button1.onkeypressed misalnya). Tapi malah error. exceptionnya lupa...
user image
more 13 years ago

maulaku

@i_hasibuan: @Bozz Luri, bukan gak sabar nunggu jawaban rekan2, tp cuman memperjelas klo pertanyaan saya itu ada 3 poin
Mohon penjelasan: 1. event "oncalcfield" itu dieksekusi jika ....... 2. apakah data yg di-fetch oleh query1 itu hanya sebatas yg perlu ditampilkan di dbgrid? 3. solusi atas masalah saya tsb diatas.
klo ada yg bisa bantu, yg ingin saya tanya itu bukan cuma solusi autonumber di dbgrid. (1) dan (2) udah konsultasi ke help-nya delphi, tapi malah puyeng..yeng... untuk yg (3) saya coba query

Querybrowse['nomor'] := querybrowse.recno; 
di prosedur lain (button1.onkeypressed misalnya). Tapi malah error. exceptionnya lupa...
ini yang di bahas recno di dbgrid? atau menjawab Topik yang terdahulu
user image
more 13 years ago

i_hasibuan

yg paling utama memang tentang autonumber di db grid (nomor 3). sekalian nanya (1) dan (2) Tapi kalo topiknya jadi terlalu luas, (1) dan (2) gak usah dibahas deh, mungkin nanti buat posting baru aja. Autonumber di dbgrid itu terserah mau pake recno, pvcount (ala CH) atau cara lain, yg penting jalan...
user image
more 13 years ago

zieborg

1. event "oncalcfield" itu dieksekusi jika .......
1.pada saat table dibuka 2.pada saat table masuk ke modus edit 3.table refresh klo autocalcfields=true 4.pada saat focus dari satu visual kontrol ke yang lain, atoutk dbgrid pindah dari satu kolom ke kolom yg lain, ato record di edit
apakah data yg di-fetch oleh query1 itu hanya sebatas yg perlu ditampilkan di dbgrid?
tergantung db server dan kemampuan komponen dataset, firebird support feature tsb about recno : hindari pemakaian recno, karena tidak semua turunan tdataset support recno, dilevel tdataset recno selalu -1
more ...
  • Pages:
  • 1
  • 2
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com