jangan gunakan val, tetapi gunakan nz.
script anda tidak umum, karena rst1, rst3 selalu akan mengambil record pertama walaupun isinya lebih dari satu record. table3 pun akan dibabat seluruh record nilainya berupa nz(rst1,0) + nz(rst3,0).
rst2 gak digunakan sama sekali dalam proses, numpang lewat aja :)

Dim rst1, rst2, rst3 As DAO.Recordset

hanya rst3 saja yang DAO.Recordset, rst1 dan rst2 adalah variant. bentuk yang benar harus satu per satu, walau satu baris:

Dim rst1 As DAO.Recordset, rst2 As DAO.Recordset, rst3 As DAO.Recordset

dalam tabel: 1,5 adalah string value, kalau desimal, dia berupa 1.5
kecuali regional seting yang anda pakai sudah diubah format angkanya.
val (1,5) karena ',' adalah string, maka yang diambil selalu sampai 1 doang. contoh lain val(100,05) hasilnya hanya 100, karena ',05' dianggap teks.



aksan kurdin



On 5/21/2010 11:49 AM, tri widodo wrote:

Mohon bantuan pemecahan teman-teman Accesser.
Saya ada masalah perhitungan desimal seperti pada contoh terlampir yaitu jika nilai pecahan misalnya:
Table1: Nilai =1,5
Table3: Nilai =1,5
Kalau saya jumlahkan dengan cript jadinya :
Tabel2: Nilai = 2 bukan 3


Script:
Private Sub Command0_Click()
Dim Db As DAO.Database
Dim rst1, rst2, rst3 As DAO.Recordset
Dim cek As String
Set Db = CurrentDb

Set rst1 = Db.OpenRecordset(" Select Nilai From Table1 ", dbOpenSnapshot)
Set rst3 = Db.OpenRecordset(" Select Nilai From Table3 ", dbOpenSnapshot)
Set rst2 = Db.OpenRecordset(" Select Nilai From Table2 ", dbOpenSnapshot)
Db.Execute "UPDATE Table2 SET Nilai = " & Val(rst1!Nilai) & " + " & Val(rst3!Nilai) & " "


rst3.Close
rst2.Close
rst1.Close
Set rst1 = Nothing
Set rst2 = Nothing
Set rst3 = Nothing
Set Db = Nothing

End Sub



Kirim email ke