Kalau menurut saya begini.. Kerangka berpikirnya harus diubah. 1. Lihat dulu, apakah yang akan dijadikan key uniknya sudah ada di database ataukah tidak. Misalnya, - diklarasikan dulu aa dim aa as variant > aa = "jalan" > Konek ke database > sql untuk melihat ada tidaknya isi field unik > Jika ada ==> aa = "stop" > close connetion if aa = "stop" then msgbox "Data sudah ada" dll... dlll else eksekusi insert > koneksi > insert > close koneksi end if
Namun... melihat pesan error yang muncul, sepertinya ada kesalahan type data. Coba lihat di filed type data Tabel di database. Varcar ataukah int. Sesuaikan dengan data yang dimasukkan. Dalam kasus : mText0 = Nz(Me.Text0.Value, "") ==> kalau nilai Text0 kosong ==> "". Jika type data didabase int, sebaiknya diganti dengan ini: mText0 = Nz(Me.Text0.Value, 0) ==> kalau nilai Text0 kosong ==> 0 Mengapa? karena type data int tidak mau dimasukkan dengan tanpa value. Jika type data didabase varchar, sebaiknya diganti dengan: mText0 = Nz(Me.Text0.Value, "Null") ==> kalau nilai Text0 kosong ==> "Null" Mengapa? karena type data varchar tidak mau diinsert dengan tanpa value. Value Null sama dengan tidak ada datanya. Atau, gunakan 3 sql: if mText0 <> "" and mText2 <>"" then kode = "insert into nilai(id,ujianke,nilai) Values ('" & mText0 & "','" & mText2 & "',0);" elseif mText0 <> "" and isnull(mText2) then kode = "insert into nilai(id,nilai) Values ('" & mText0 & "',"',0);" elseif isnull(mText0) and mText2 <>"" then kode = "insert into nilai(ujianke,nilai) Values ('" & mText2 & "',0);" end if 'baru lakukan proses insert: CurrentProject.Connection.Execute (kode)
Semoga ini dapat membantu dan memberi semangat. Hariyanto (Surabaya) --- On Wed, 6/4/11, Mister Eggs <ginoek_ginoek@yahoo.com> wrote:
From: Mister Eggs <ginoek_ginoek@yahoo.com> Subject: Re: [belajar-access] Re: runtime 13 To: belajar-access@yahoogroups.com Date: Wednesday, 6 April, 2011, 7:06 PM
Terima kasih atas tanggapan Sdr Sudarsono, karena newbie saya masih juga fasih tentang relationship. Menurut saya kalo ingin menjadikan lebih dari 1 (satu) kolom sebagai Id Unique, maka harus menggunakan 2 (dua) primary key. Pada contoh yang diberikan ternyata anggapan saya ini salah .
Pertanyaannya sekarang; Bagaimana menerapkan error handling pada kasus diatas. Ketika terjadi pengisian ganda pada kolom-kolom Id Unique (dalam kasus ini; kolom Id dan ujianke) masih menghasilkan jendela error dengan alternatif end, debug, dan help. Tentunya lebih baik jika bila terjadi entry data ganda muncul messagebox "Maaf, Anda tidak diperkenankan mengisi data ganda" (atau kalimat lain), dan ketika user menekan tombo OK, kursor kembali ke textbox pertama guna pengisian ulang data.
Saat saya mencoba kembali memakai error handling yang saya pakai pertama dan kode koreksi dari Sdr Sudarsono (struktur dan relasi telah diperbaiki), yaitu :
Private Sub Command4_Click() On Error GoTo TheSchool
Dim dbs As Database
Dim kode As String Dim mText0 As String Dim mText2 As String
Set dbs = CurrentDb
mText0 = Nz(Me.Text0.Value, "") mText2 = Nz(Me.Text2.Value, "")
kode = "insert into nilai(id,ujianke,nilai) Values ('" & mText0 & "','" & mText2 & "',0);"
CurrentProject.Connection.Execute (kode)
MsgBox "Saved !" Call kosong Call awal
naK: dbs.Close Exit Sub
TheSchool: MsgBox "Kode Error : " & Err.Number + Chr(13) + Err.Description, vbCritical Resume naK
End Sub
Sub kosong() Me!Text0 = "" Me!Text2 = "" End Sub
Sub awal() Me!Text0.SetFocus End Sub
kembali muncul error :
Run-time error '13' Type mismatch
aduhhhhh....
--- On Wed, 4/6/11, sudarsono <jkssbma@yahoo.com> wrote: From: sudarsono <jkssbma@yahoo.com> Subject: [belajar-access] Re: runtime 13 To: belajar-access@yahoogroups.com Date: Wednesday, April 6, 2011, 9:31 AM
ini seperti masalah di relatioship , coba di hapus atau di tata ulang . Dimana relasi Id ( tabel siswa ) di kaitkan dengan ID ( tabel nilai ) . Namun pada Tabel Nilai ID dan UjianKe merupakan PrimaryKey . Akhirnya si Access bingung menata ulang relasi.
untuk solusi silakan download [salahrelasi 30484.rar] di [files] [jkssbma] [cobasolusi] [relasi]
|
|
No comments:
Post a Comment