Untuk Pak Eric
dan Farul serta kawan-kawan semua,
Saya sudah coba
ternyata hasilnya adalah:
1. Window berhasil memunculkan
data sesuai kewenangan intern ataupun lintas bidang dan lintas departemen.
2. Tapi, control datawindow
yang berisi objek datawindow tersebut tidak dapat di tambah atau pun diedit
ketika saya klik tombol New atau Edit. Lalu ketika saya klik tombol cancel
untuk kembali ke posisi awal maka muncul window Specify Retrieval Arguments
yang meminta saya untuk memasukkan ketiga value dari retrieval argument yang
telah dibuat tersebut.
Ini adalah script
yang saya buat:
/*--------------------------------------------*/
Di datawindow painter sudah saya buat script di bawah ini
dan pada menu Rows > Update Properties sudah saya Allowes update table: Trans
dan saya pilih semua sebagai iupdatable Column dan saya pilih nip sebagai
primary key.
SELECT trans.Nip,
trans.Password,
trans.NIP,
trans.Peran,
trans.Lintas
FROM trans
,pegawai
,bidang
WHERE trans.NIP =
pegawai.NIP
and
pegawai.ID_Bidang = bidang.ID
and
trans.nip like :ra_nip
and
pegawai.ID_Bidang like :ra_bidang
and
bidang.ID_Departemen like :ra_departemen
/*--------------------------------------------*/
//Pada saat login di window login saya buat global string
untuk UserID, Password, NIP, dan Lintas dengan
gs_userid,gs_password,gs_nip, dan gs_lintas pada saat login
/*--------------------------------------------*/
Pada saat masuk window utama saya buat global string untuk
bidanhg dan departemen
select bidang.id, bidang.id_departemen into :gs_bidang,:gs_departemen
FROM bidang inner join pegawai on bidang.id = pegawai.id_bidang
inner join user on pegawai.nip = user.nip
where user.nip = :gs_nip
using sqlca;
/*--------------------------------------------*/
SELECT trans.NIP,
trans.FieldA,
trans. FieldB,
trans. FieldC,
trans. FieldD
FROM trans
,pegawai
,bidang
WHERE trans.NIP = pegawai.NIP
and pegawai.ID_Bidang = bidang.ID
and
trans.nip like :ra_nip
and
pegawai.ID_Bidang like :ra_bidang
and
bidang.ID_Departemen like :ra_departemen
/*--------------------------------------------*/
/* Ini saya buat karena pada column nip saya buat dropdown
dw sehingga kalau nanti mau Add atau Edit maka nip yang muncul dari table
pegawai hanya yang terkait dengan kewenangan lintas bidang atau departemen*/
datawindowchild ldwc_1 //, ldwc_2, ldwc_3
string ls_filter
if gs_lintas="0" then
ls_filter = "bidang = '" + gs_bidang
+ "'"
elseif gs_lintas="1"
then
ls_filter = "departemen =
'" + gs_departemen + "'"
else
ls_filter =
''
end if
dw_1.GetChild("nip",ldwc_1)
ldwc_1.setfilter(ls_filter)
ldwc_1.filter()
dw_1.settransobject(sqlca)
/*--------------------------------------------*/
if gs_lintas="0" then
dw_1.retrieve(
'%', gs_bidang, '%')
elseif gs_lintas="1" then
dw_1.retrieve(
'%','%', gs_departemen)
else
dw_1.retrieve('%','%','%')
end if
/*--------------------------------------------*/
Pertanyaan Saya adalah:
1. Bisakah kita mengedit datawindow yang dibuat dengan
merelasikan 3 tabel seperti di atas? Karena yang saya pernah baca dalam sebuah
tutorial bahwa kalau lebih dari 1 tabel maka datawindow tidak bisa diupdate.
Kalau pemahaman saya salah maka bagaimana dan pada event apa proses Add dan
Update datawindow tersebut dapat dilakukan.
2. Jika cara select dan retrieve dengan 3 argument seperti
cara yang diuraikan Pak Eric dapat dilakukan untuk me-retrieve dan meng-update
data apakah pada saat saya meng-cancel proses Add atau Edit ataupun setelah
selesai prose Add atau Edit maka apakah kita perlu me-retrieve data lagi dengan
menggunakan 3 argument tersebut?
Mohon pencerahan.
Trims banyak untuk semuanya