> Rekan2 aku punya data sbb :
> Nama Alamat Tgl_lahir Gajih_kotor
> A A 01/01/02 500000
> B B Nul 200000
> C C 02/02/02 Nul
> pada saat aku ingin mengcopy beberapa rekord yang di inginkan proses
> error pada saat di check ternyata karena adanya data Nul, please
> mungkin ada rekan2 yang pernah mengalami hal seperti ini, bagaimana
> pemecahannya.
Errornya apa?
Apa maksudnya 'mengcopy beberapa rekord'?
Dari tabel ke tabel lain?
Dari tabel ke komponen (memo, misalnya) ?
What?
Menurut saya ini bukan error, tetapi memang by design.
Contohnya, saat anda proses Gajih_kotor (istilah anda diatas),
misalnya :
...
if (table1.fieldbyname('gajih_kotor').value > 10000000) then
begin
Showmessage('anda makmur');
end else begin
Showmessage('anda belum beruntung, cobalah sekali
lagi!');
end;
...
Kalau ternyata di field gajih_kotor ditemui nilai NULL, program akan
mengalami runtime error message (exception EVariantError atau invalid
Variant Conversion). As I said, this is by design.
Nilai NULL sendiri tidak sama dengan 0 atau '' (empty string), selama
ini banyak terjadi kesalahpahaman tentang ini. Sejauh ini NULL bisa
diartikan sebagai 'not available' atau 'not applicable' atau 'unknown',
tentu saja logic anda harus memperhitungkan hal ini.
Tidak ada cara mudah untuk menghindari hal ini, malah kalau dari segi
relational database-nya, ini dinyatakan sebagai anomali dan kesalahan
design database. Bila salah satu field bisa NULL, maka harus dipecah
menjadi dua table atau lebih:
...
KODE; NAMA; ALAMAT;
...
KODE; GAJIH_KOTOR;
...
KODE; TGL_LAHIR;
...
Jadi tidak akan terjadi error yang anda sebutkan tadi. Semua akses
harus lewat join, (misalnya
select kode, nama, alamat, gajih_kotor
from t1, t2
where t1.Kode = t2.Kode)
Tidak ada nilai null disini.
Tentu saja ini tidak praktis di real world. Anda punya beberapa
alternatif :
1. Paksakan tidak ada nilai null dari server-side. (misalnya dengan
default value, dan NOT NULL constraint).
2. Paksakan tidak ada nilai null dari client-side, seperti yang
sudah disebutkan sdr Agustono. Caranya bisa macam macam,
dari If() sampai CAST().
> Agus statement yang aku pake mngkin seperti ini :
> table_baru.close;
> table_baru.commandtext:='insert into table_disimpan
> (nama,tgl_lahir,gaji_kotor) value(:vnama,vtgl_lahir,vgaji_kotor);
> table_baru.params.prambyname('vnama'):=...;
> table_baru.params.parambyname('vtgl_lahir'):=...;
> table_baru.params.parambyname('vgaji_kotor'):=...;
> table_baru.execute;
> itu kalo baru tiga field yang akan di pake kalo misalkan 25 field
> kalo harus pake IF apa tidak repot database, karena harus tutup dan
> buka kembali untuk execute atau dari pengalaman Agus sendiri database
> tidak terbebani. Mungkin bisalah nanti di coba atau ada statement
> yang agak lebih simple namun padat isinya (hehehehe kaya iklan apa ya
> aku lupa).
Kalau masalahnya untuk copy dari table ke table, rasanya tidak ada
masalah untuk NULL karena implementasinya dengan Variant.
...
table2.paramByName('vnama').value :=
table1.fieldbyname('vnama').value;
...
> Herman.
> NB: Untuk rekan2 yang lain mana nih kontribusinya.
Two points from me :
1. Tidak sopan rasanya kalau anda mengeluarkan statement seperti ini.
Milis delphindo diadakan dengan sukarela, dan semua yang
meluangkan
waktu disini adalah volunteer alias tidak dibayar. We are under
no
obligation to provide anything. Ask politely, and maybe someone
will
be able to help. But do not demand anything.
2. Kalau pertama kali tidak terjawab, ada baiknya kalau pertanyaan
dibuat
lebih jelas/spesifik. Kadangkala bukannya tidak mau menjawab,
tapi
karena pertanyaannya terlalu luas, jadi tidak ada waktu untuk
menulis
panjang lebar.
Salam,
sugi.
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Get 128 Bit SSL Encryption!
http://us.click.yahoo.com/CBxunD/vN2EAA/xGHJAA/i7folB/TM
---------------------------------------------------------------------~->
Berlangganan: [EMAIL PROTECTED]
Stop Berlangganan: [EMAIL PROTECTED]
Keluhan Milis(Unbouncing,spam,dll): [EMAIL PROTECTED]
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/