Arsip: Trouble with ADO

 
user image
more 14 years ago

grounders

Teman-teman gw ada masalah ni.... ada yang tau kagak caranya merefresh ADOTable, kalo gw pake DBETable gw biasanya pake sintaks DBETable.Refresh; kalo pake cara yang sama buat komponen ADOTable kok keluar error ya.. tolong bantu ya, thanks banget
user image
more 14 years ago

DonVall

Hola, Coba pake: DBETable.Requery; IMHO, lebih bagus pake: DBETable.Close; DBETable.Open; Soalnya lebih generik.
user image
more 14 years ago

deLogic

kayaknya memang harus Close dan Open, atau Active := False dan Active := True; Sebagai konsekuensinya, cursor kembali ke awal (BOF), CMIIW. btw, pesan errornya bagaimana..? mungkin ada rutin yang terlewat sehingga membuat refresh table menjadi error...
user image
more 14 years ago

cyber_hecker

yup bener... gue juga sering error kalo make perintah "refresh", makanya hampir gak tau make perintah tersebut. yang paling baik sih menggunakan perintah "requery" ataupun "open / close" untuk melakukan refresh data. tapi jika gak mau pointer kursor pindah ke baris pertama. kita bisa mengakalinya dengan menggunakan bookmark. contohnya kayak di bawah ini :
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  bmData : TBookMark;
begin
  bmData := ADOQuery1.GetBookmark;
  ADOQuery1.Requery();  // bisa diganti menjadi perintah open / close
  ADOQuery1.GotoBookmark(bmData);
end;
:D semoga bisa sedikit membantu.. kekekeke
user image
more 14 years ago

DonVall

@cyber_hecker: tapi jika gak mau pointer kursor pindah ke baris pertama. kita bisa mengakalinya dengan menggunakan bookmark. contohnya kayak di bawah ini :
procedure TForm1.BitBtn1Click(Sender: TObject); 
var 
  bmData : TBookMark; 
begin 
  bmData := ADOQuery1.GetBookmark; 
  ADOQuery1.Requery();  // bisa diganti menjadi perintah open / close 
  ADOQuery1.GotoBookmark(bmData); 
end; 
Itu gak pernah masalah? Soalnya kalo baru direfresh apa bookmark-nya masih valid? Trus kalau pun valid, tapi gimana kalau record yang tadinya current mendadak gak ada lagi atau malah ada penambahan record baru (di lingkungan multi user ada kemungkinannya) kan jadi loncat ke record lain. Kalo aku pake fungsi locate berdasarkan primary key atau unique field-nya. Jadi lebih aman. Kalau ketemu maka record yang sebelumnya aktif akan diaktifkan lagi, kalau tidak maka record yang pertama yang aktif. Paling tidak dengan tetap membiarkan record pertama yang aktif, user tau bahwa terjadi penyegaran data, bukannya record yang tadi aktif mendadak berubah isinya.
user image
more 14 years ago

cyber_hecker

:D wakakaka.. iya seh.. kadang-kadang kalo record yang di bookmark ternyata di hapus.. paling-paling muncul kotak dialog "bla.. bla.. n ot valid bookmark" wakakaka :P. habis yang paling simple cuma pake bookmark gitu seh :P males pake listing yang repod-repod. yang penting program masih bisa jalan. wakakaka :oops:
user image
more 14 years ago

DonVall

Hehehehe.... pake contoh berikut aja. Gak ada kode yang aneh2 koq! Cuman perlu disesuaikan field yang terlibat. Usahakan field yang digunakan itu primary atau uniqe.

Procedure TForm1.RefreshDataset;
Var
  vID: Integer;
Begin
  With ADODataset1 do Begin
     // di contoh ini field "ID" adalah primary key
    vID := ADODataset1.FieldByName('ID').AsInteger; 
    DisableControls;
    Try
      Close;
      Open;
      Locate('ID', vID, []);
    Finally
      EnableControls;
    End;
  End;
End;
user image
more 14 years ago

grounders

thanks banget atas bantuannya, emang belum gw coba tapi moga-moga aja berhasil :)
more ...
  • Pages:
  • 1
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com