Arsip: Pls Mohon Bantuan, Data Tidak Tersimpan Karena ROLLBACK

 
user image
more 13 years ago

hendrang

Mohon bantuannya yang jago-jago Delphi. Saya sedang buat program sederhana untuk entry DAFTAR BARANG (field KODEBARANG,NAMA,HARGA) dengan Database MICROSOFT ACCESS. Saya sengaja buka file dengan locktype ltBatchOptimistic karena mau tahu cara kerjanya. Di table Daftar Barang field Harga saya kasih validasi Rule" <>0 " untuk validasi harga harus diisi (tidak boleh kosong atau tidak diisi). Untuk Save saya pakai procedure : Procedure Save; ADOConnection1.BeginTrans; try try DaftarHarga.UpdateBatch(); Except On E:Exception do ShowMessage(E.Message); end; finally if ADOConnection1.Errors.Count = 0 then ADOConnection1.CommitTrans; else ADOConnection1.RollbackTrans; end Ini adalah prosedur standar yang saya baca di buku-buku ttg procedure save untuk table yang locktype ltBatchOptimistic. Jadi kalau misalnya di antara data yang di entry ada yang harga tidak diisi maka akan muncul error message dan di ROLLBACK. Misalnya table daftar barang masih kosong dan saya tambah 10 record barang baru dan record ke 5 saya isi 0 lalu save maka akan muncul error message dan data tidak bisa di save. Masalahnya adalah kenapa setelah saya perbaiki kesalahan dengan isi harga di record ke 5 dan saya save ulang maka hanya record ke 5 yang tersimpan sedangkan yang lainnya tidak tersimpan. Kalau saya hapus ADOConnection1.RollbackTrans di prosecedure Save, semua data bisa tersimpan pada save yang ke 2 kalinya. Sedangkan ADOConnection1.RollbackTrans tetap harus dipakai karena kalau tidak bisa menyebabkan FILE LOCK saat ada user lain yang juga sedang entry daftar barang di work station lain. Mohon bantuan bagaimana mengatasi masalah ini.
user image
more 13 years ago

maulaku

kondisi nya ada kesalahan
user image
more 13 years ago

hendrang

Trims ada tanggapannya. Apa maksud mas dengan "konsidi nya ada kesalahan"? Permasalahannya setelah saya baca ttg cara kerja ROLLBACK/COMMIT adalah setelah di ROLLBACK /COMMIT maka cache memory yang berisi data-data yang di entry itu langsung di tandai sebagai data yang sudah diproses, jadi tidak bisa di update ulang. Kecuali saya bisa mengubah kondisi (flag) dari data-data itu sebagai data yang belum di proses pada saat ROLLBACK. Untuk sementara karena belum bisa memecahkan masalah ini saya tidak ROLLBACK pada saat ada error kecuali user membatalkan data itu.
user image
more 13 years ago

DelphiExpert


Procedure Save; 
begin
  ADOConnection1.BeginTrans; 
  try 
    DaftarHarga.UpdateBatch(); 
    ADOConnection1.CommitTrans; 
  except 
    On E:Exception do
    begin
      ADOConnection1.RollbackTrans;
      ShowMessage(E.Message); 
    end;
  end; 
end;
more ...
  • Pages:
  • 1
Share to

Random Topic

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