Author Topic: Buffering beberapa tabel ?  (Read 6666 times)

0 Members and 1 Guest are viewing this topic.

Offline GoodOne

  • Junior Member
  • *
  • Posts: 117
Re: Buffering beberapa tabel ?
« Reply #30 on: March 27, 2009, 09:55:51 AM »
Quote
bung David, dalam kondisi apakah setelah rollback perlu ditambahkan tablerevert?
misalkan kita melakukan edit terhadap sebuah tabel, lalu pada saat melakukan TABLEUPDATE(.T.,.F.,"mytable") terjadi error karena tableupdate ini tidak menginginkan "forced" update. Nah, dalam hal ini belum tentu kita inginkan langsung TABLEREVERT() karena bisa saja setelah mempertimbangkan si-kon si user tetap menginginkan perubahan lalu menembak ulang TABLEUPDATE(.T.,.T.,"mytable"), TANPA harus melakukan input ulang detil2 perubahan yang sudah dilakukan.
ok, cuma kalo memang niatnya di rollback, apakah tetep harus diikuti tablerevert?

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 13.702
  • Awas ya...
Re: Buffering beberapa tabel ?
« Reply #31 on: March 27, 2009, 10:09:07 AM »
ROLLBACK cuman membatalkan "paket penyatuan" rangkaian buffering tableupdate(), artinya sekedar memastikan bahwa semua tableupdate() yang dilakukan antara BEGIN dan END/ROLLBACK harus BERSAMAAN YA ATAU TIDAK SAMASEKALI,   belum melakukan pengembalian nilai2 yang terlanjur diubah pada tabel oleh rangkaian commands kita sebelum BEGIN, untuk itu diperlukan TABLEREVERT() terhadap semua tabel yang udah terlanjur diedit.

Offline GoodOne

  • Junior Member
  • *
  • Posts: 117
Re: Buffering beberapa tabel ?
« Reply #32 on: March 27, 2009, 10:16:36 AM »
hmmm... kayaknya konsep tentang buffering saya masih belum bener....
untuk contoh kasus aja,

use TblName IN 0 Shared
select TblName
=cursorsetprop("Buffering",5,"TblName")
append blank
replace UserId with "Admin"

begin transaction
if !tableUpdate(1,.F.,"TblName")
       rollback
else
       end transaction
endif

nah, kalo setelah rollback tidak dikasih tablerevert, apakah append dan replace tadi tetep ditulis di TblName?
« Last Edit: March 27, 2009, 10:31:45 AM by GoodOne »

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 13.702
  • Awas ya...
Re: Buffering beberapa tabel ?
« Reply #33 on: March 27, 2009, 10:30:11 AM »
...hmmm kedua fungsi dalam contoh diatas koq kayak kurang parameternya ya...

tapi menjawab pertanyaannya: kalau cursorsetprop("buffering",5,"namatabel") udah dibuat jelas command append blank atau apapun cuman nulis di buffer. Tanpa tableupdate() - bisa di-uji/bukti-kan - bahwa kalau kita keluar aplikasi dan masuk lagi: table tidak berubah

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 13.702
  • Awas ya...
Re: Buffering beberapa tabel ?
« Reply #34 on: March 27, 2009, 10:32:29 AM »
catatan: sebenarnya hanya table yang berada dalam dbc bisa diikutkan dalam transaction, tapi ada command, saya lupa, untuk memaksakan free table ikut transaction mulai VFP 9

Offline GoodOne

  • Junior Member
  • *
  • Posts: 117
Re: Buffering beberapa tabel ?
« Reply #35 on: March 27, 2009, 10:34:20 AM »
maaf bung David, sudah saya ralat, tapi ternyata kalah cepet dengan responnya yang secepat kilat  :icon_thumright:

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 13.702
  • Awas ya...
Re: Buffering beberapa tabel ?
« Reply #36 on: March 27, 2009, 10:37:03 AM »
untuk free tables check Help fungsi MAKETRANSACTABLE()

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 13.702
  • Awas ya...
Re: Buffering beberapa tabel ?
« Reply #37 on: March 27, 2009, 10:43:41 AM »
oww alah, postingannya diedit ya... jadinya comment saya "membingungkan" buat yang baca karena fungsi sekarang terbaca udah benar.... hehehe.
Anyway... dalam contoh diatas kayaknya tableupdate-nya pasti berhasil jadi akan berlaku END TRS, tapi kalo kita misalkan aja emang gagal maka  ROLLBACK tanpa TABLEREVERT belum mengembalikan nilai2 pada buffer, hanya membatalkan tableupdate(). Tegasnya: tablerevert() perlu untuk mengembalikan buffer jadi sama kembali dengan original table, jadi = status sebelum append

Offline GoodOne

  • Junior Member
  • *
  • Posts: 117
Re: Buffering beberapa tabel ?
« Reply #38 on: March 27, 2009, 10:51:02 AM »
yes.... tambah jelas dan mantap.... jadi tablerevert dilakukan untuk mengembalikan buffer ke kondisi sebelumnya ya... thanks alot bung David... :icon_salut:

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 13.702
  • Awas ya...
Re: Buffering beberapa tabel ?
« Reply #39 on: March 27, 2009, 10:56:31 AM »
catatan tambahan: hati2 kalau mix row/table buffer ( 3/5 )... bisa timbul keanehan2... saya tidak mendalami betul kerja internal dari vfp... tapi saya anjurkan aja kalau cursorsetprop() seragamkan tipe buffering semua ke 5 aja (table, bukan 3=row)

Offline foxever_fox

  • Hero Member
  • *
  • Posts: 1.280
Re: Buffering beberapa tabel ?
« Reply #40 on: March 27, 2009, 11:11:45 AM »
Memang awalnya saya juga bingung pake buffering , tapi setelah pake Buffering 5 udah kerasa enak nya  :icon_thumright: :icon_thumright:
Ini ada potongan kode Update DataSet saya , masih standard tapi bisa jadi ide....


LOCAL retval
*** update data set
** jika gunakan transaksi

IF this.Usingtransaction
     this.beginTransaction()     
ELSE
   this.automaticTransaction()
ENDIF
 
 
  **** 
  Retval=.t.
  cobj=null   
  FOR EACH Cobj IN this.Ocoll
   Cobj.TryUpdate()    && mengupdate cursor ke Backend

   IF Cobj.IsError
     retval=.f.
     EXIT
   ENDIF     
  NEXT
 

 
  IF this.UsingTransaction
   IF ! retval
        this.rollBack()
   ELSE
        this.commit()
   ENDIF
  ENDIF
 
 
  RETURN retval


Mungkin bisa dikembangkan dan diperbaiki ....


"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." - Martin Fowler-

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 13.702
  • Awas ya...
Re: Buffering beberapa tabel ?
« Reply #41 on: March 27, 2009, 11:16:41 AM »
Mantap mas FF..  ( eh dalam hexa FF itu emang TOP ya ) hehehe

PsycoBlade

  • Guest
Re: Buffering beberapa tabel ?
« Reply #42 on: March 28, 2009, 10:56:25 AM »
Kesimpulan yang saya dapatkan setelah melihat jawaban dari mas david mungkin saja error handling yang saya terapkan salah. Nanti saya akan coba dulu menggunakan perintah _tally untuk cek apakah proses update gagal atau tidak.
Thx atas masukannya.
Semoga fox-id tambah maju.

Offline davidmustakim

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 13.702
  • Awas ya...
Re: Buffering beberapa tabel ?
« Reply #43 on: March 28, 2009, 12:36:38 PM »
oalah.. sekarang saya yang error kali: PsycoBlade=GoodOne ?

Offline GoodOne

  • Junior Member
  • *
  • Posts: 117
Re: Buffering beberapa tabel ?
« Reply #44 on: March 28, 2009, 01:07:57 PM »
bung David, PsycoBlade <> GoodOne  :merror:
saya cuman mempertajam pemakaian tablerevert aja  :icon_salut: