Jika ingin singkat, tangkap saja error yang timbul saat save.
Untuk data duplikat, err.number yang muncul adalah 3022, maka anda bisa modify error handle seperti potongan skrip yang sudah saya posting. (maaf posting kemarin tidak ada penjelasan):
------------------------------------------
TheSchool:
If Err.Number = 3022 Then 'duplicate key
MsgBox "Kode " & ID & " untuk ujian ke " & ujianke & " sudah pernah dimasukkan.", vbInformation, "BEEP!!"
Resume naK
Else
MsgBox "Kode Error : " & Err.Number + Chr(13) + Err.Description, vbCritical
End If
Resume naK
------------------------------------------
aksan kurdin
--- In belajar-access@yahoogroups.com, hari yanto <har_i20002000@...> wrote:
>
> 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@...> wrote:
>
>
> From: Mister Eggs <ginoek_ginoek@...>
> 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@...> wrote:
>
>
> From: sudarsono <jkssbma@...>
> 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]
>
------------------------------------
SPAM IS PROHIBITEDYahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/belajar-access/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/belajar-access/join
(Yahoo! ID required)
<*> To change settings via email:
belajar-access-digest@yahoogroups.com
belajar-access-fullfeatured@yahoogroups.com
<*> To unsubscribe from this group, send an email to:
belajar-access-unsubscribe@yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
No comments:
Post a Comment