Arsip: Mohon Bantuan ERROR CODE "$2601 (9729) = Key violation

 
user image
more 13 years ago

crazy_einstein01

Bro, mohon pencerahan nih tentang data base maklum masih Newbie ini salah satu bagian listing yang saya buat..... nah errornya di bagian ini jadi data basenya gak bisa di tambah //Procedur menyiman data .../// Procedure TLIQUIDS.BTN_SIMPANClikck(Sender:TObject); Begin {Menyimpan Data} If BTN_BARU.Caption = 'BATAL' Then Begin If TBL_VISKOSITAS.Locate('VISKOSITAS', EDT_VISKOSITAS.Text,[loCaseInsesitive]) Then Begin ShowMessage('Data Pengukuran Sudah Pernah Diambil..!!) BTN_BARU.Click; EXIT; End; ///Error di bagian yang di cetak tebal, klo program di run muncul error $2601 (9729) = Key violation.
user image
more 13 years ago

indobrainsoft

trusannya mana..??? itu kan baru ceking..?? ... menggunakan koneksi apa ..??? lost information
user image
more 13 years ago

MrLee

key violation itu biasanya table yg mempunyai index dan di simpan lagi dgn data yg sama jadi ada 2 data yg sama; dari pada pakai locate mendingan pakai search buatan sendiri; sama saja; delphi menterjemahkan nya dengan cara mencari satu persatu dr record 1 kalau program itu kamu sudah kamu paste dengan lengkap artinya ada kekurangan 2 buah end; kalau emang ada indexnya lebih baik pakai findkey lebih cepat;
user image
more 13 years ago

Thunder

Saya rasa salahnya bukan pada If TBL_VISKOSITAS.Locate('VISKOSITAS', EDT_VISKOSITAS.Text,[loCaseInsesitive]) Then sebaiknya anda gunakan proses tracing kesalahan, caranya tekan F5 pada baris pertama coding di Procedure TLIQUIDS.BTN_SIMPANClikck(Sender:TObject); lalu jalankan Delphi dengan menekan F9, lalu coba masukkan nilai dan jalankan BTN_Simpanclick sambil tekan tombol F7 step by step, mungkin anda akan ketemu salahnya dimana... Selamat mencoba
user image
more 13 years ago

maulaku

menurutku sih karena duplikasi indeks dilihat dari source codennya : bisa simpan dua kali mungkin metode pencarianya intik mengatasinya : letakan scrip berikut di Table Post Error

const
     eKeyViol = 9729;
     eRequiredFieldMissing = 9732;
     eForeignKey = 9733;
     eDetailsExist = 9734;
     eSqlGralerror = 13059;
   implementation
   
   {$R *.DFM}
   
   procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
     var Action: TDataAction);
   begin
     if (E is EDBEngineError) then
       if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then
       begin
       Application.MessageBox('Duplikasi ...','Bahaya',mb_Ok +
       mb_IconQuestion);
       Abort;
     end;
   end;
user image
more 13 years ago

crazy_einstein01

Trims atas segala sarannya, but saya masih bingung tentang edbenginge. apa edb engine error itu ada hubungannya sama Operating System 2000.
user image
more 13 years ago

maulaku

@crazy_einstein01: Trims atas segala sarannya, but saya masih bingung tentang edbenginge. apa edb engine error itu ada hubungannya sama Operating System 2000.
Menurutku sih ngga kalo errornya eKeyViol = 9729;
user image
more 13 years ago

crazy_einstein01

@indobrainsoft: trusannya mana..??? itu kan baru ceking..?? ... menggunakan koneksi apa ..??? lost information
:? :? :? :? :? // Para Senior yang terhormat ini listing lengkap saya, saran yang sudah dikasih saya coba satu persatu errornya masih sama// [list:17fedf0f04] unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls, Grids, DBGrids, DB, DBTables, Menus, ComCtrls; type TLIQUIDS = class(TForm) EDT_PANEL: TPanel; GAMBAR1: TImage; GAMBAR2: TImage; LBL_PANEL: TLabel; LBL_Massa: TLabel; EDT_Massa: TEdit; LBL_ATENT: TLabel; EDT_ATEN: TEdit; PopupMenu1: TPopupMenu; Timer1: TTimer; DTS_VISKOSI: TDataSource; TBL_VISKOSITAS: TTable; DBGrid1: TDBGrid; TBL_VISKOSITASNAMA: TStringField; TBL_VISKOSITASPRODUSEN: TStringField; TBL_VISKOSITASTANGGAL: TDateField; TBL_VISKOSITASVISKOSITAS: TFloatField; TBL_VISKOSITASKETERANGAN: TStringField; EDT_NAMA: TEdit; LBL_NAMA: TLabel; Label1: TLabel; EDT_KETER: TEdit; EDT_PRODUS: TEdit; EDT_VISKOSITAS: TEdit; LBL_TANGGAL: TLabel; EDT_TANGGAL: TDateTimePicker; LBL_VISKO: TLabel; LBL_KETER: TLabel; EDT_PANEL2: TGroupBox; BTN_AWAL: TButton; BTN_SEBELUM: TButton; BTN_LANJUT: TButton; BTN_AKHIR: TButton; BTN_BARU: TButton; BTN_HAPUS: TButton; BTN_TUTUP: TButton; BTN_EDIT: TButton; BTN_KEMBALI: TButton; BTN_ATENUASI: TButton; BTN_MASSA: TButton; Bevel1: TBevel; Bevel2: TBevel; label3: TLabel; LBL_JAM: TLabel; LBL_BULAN: TLabel; BTN_STOP: TButton; BTN_HITUNG: TButton; BTN_SIMPAN: TButton; procedure BTN_KEMBALIClick(Sender: TObject); procedure BTN_TUTUPClick(Sender: TObject); procedure BTN_BARUClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BTN_EDITClick(Sender: TObject); procedure BTN_HAPUSClick(Sender: TObject); procedure BTN_AWALClick(Sender: TObject); procedure BTN_SEBELUMClick(Sender: TObject); procedure BTN_LANJUTClick(Sender: TObject); procedure BTN_AKHIRClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure BTN_HITUNGClick(Sender: TObject); procedure BTN_STOPClick(Sender: TObject); procedure BTN_SIMPANClick(Sender: TObject); private { Private declarations } public procedure BERSIH; Procedure TAMPIL_DATA; Procedure ATUR_TOMBOL(AKTIF:BOOLEAN); Procedure TulisPort(Addr:word; data:byte); function bacaport(Addr:word):byte; { Public declarations } end; var LIQUIDS: TLIQUIDS; Const f = 40000; implementation Uses Unit1; {$R .dfm} Procedure TLIQUIDS.BERSIH; Begin EDT_NAMA.Text := ' '; EDT_PRODUS.Text := ' '; EDT_TANGGAL.DateTime := DATE; EDT_VISKOSITAS.Text := ' '; EDT_KETER.Text:= ' '; end; Procedure TLIQUIDS.TAMPIL_DATA; Begin EDT_NAMA.Text := TBL_VISKOSITASNAMA.AsString; EDT_PRODUS.Text := TBL_VISKOSITASPRODUSEN.AsString; EDT_TANGGAL.DateTime := TBL_VISKOSITASTANGGAL.AsDateTime; EDT_VISKOSITAS.Text := TBL_VISKOSITASVISKOSITAS.AsString; EDT_KETER.Text := TBL_VISKOSITASKETERANGAN.AsString; end; Procedure TLIQUIDS.ATUR_TOMBOL(AKTIF:BOOLEAN); Begin EDT_NAMA.Enabled:= AKTIF; EDT_PRODUS.Enabled := AKTIF; EDT_TANGGAL.Enabled := AKTIF; EDT_VISKOSITAS.Enabled := AKTIF; EDT_KETER.Enabled := AKTIF; BTN_AWAL.Enabled := Not AKTIF; BTN_LANJUT.Enabled := Not AKTIF; BTN_SEBELUM.Enabled := Not Aktif; BTN_AKHIR.Enabled := Not AKTIF; END; function TLIQUIDS.bacaport(Addr:Word):byte; var tmp:byte; begin asm mov dx,addr; in ax,dx; mov tmp,al; end; bacaport:=tmp; end; procedure TLIQUIDS.TulisPort(Addr:Word; data:byte); begin asm mov dx,addr; mov al,Data; out dx,al; end; end; procedure TLIQUIDS.BTN_KEMBALIClick(Sender: TObject); begin If BTN_KEMBALI.Enabled then DEPAN.Show; end; procedure TLIQUIDS.BTN_TUTUPClick(Sender: TObject); begin If BTN_TUTUP.Enabled then application.Terminate; end; procedure TLIQUIDS.BTN_BARUClick(Sender: TObject); begin If BTN_BARU.Caption = 'BARU' then begin BTN_BARU.Caption := 'BATAL'; BTN_EDIT.Enabled := False; BTN_SIMPAN.Enabled := True; BTN_HITUNG.Enabled := True; BTN_STOP.Enabled := True; BTN_HAPUS.Enabled := False; BTN_TUTUP.Enabled := False; BTN_KEMBALI.Enabled := False; ATUR_TOMBOL(TRUE); BERSIH; EDT_NAMA.SetFocus; End Else Begin BTN_BARU.Caption := 'BARU'; BTN_EDIT.Enabled := True; BTN_SIMPAN.Enabled := False; BTN_HITUNG.Enabled := False; BTN_STOP.Enabled := False; BTN_TUTUP.Enabled := True; BTN_KEMBALI.Enabled := True; LIQUIDS.FormCreate(Self); end; end; procedure TLIQUIDS.FormCreate(Sender: TObject); begin IF TBL_VISKOSITAS.Active = FALSE THEN TBL_VISKOSITAS.Active := TRUE; ATUR_TOMBOL(FALSE); TAMPIL_DATA; LBL_JAM.Caption := FormatDateTime('hh:mm:ss',time); LBL_BULAN.Caption := FormatDateTime('dd-mm-yyyy',date); end; procedure TLIQUIDS.BTN_EDITClick(Sender: TObject); begin If BTN_EDIT.Caption = 'EDIT' then Begin BTN_EDIT.Caption := 'BATAL'; BTN_BARU.Enabled := False; BTN_HAPUS.Enabled := False; BTN_SIMPAN.Enabled := True; BTN_HITUNG.Enabled := True; BTN_STOP.Enabled := True; BTN_TUTUP.Enabled := False; BTN_KEMBALI.Enabled := False; ATUR_TOMBOL(True); EDT_NAMA.SetFocus; End Else Begin BTN_EDIT.Caption := 'EDIT'; BTN_BARU.Enabled := True; BTN_HAPUS.Enabled := True; BTN_HITUNG.Enabled := False; BTN_STOP.Enabled := False; BTN_SIMPAN.Enabled := False; BTN_TUTUP.Enabled := True; BTN_KEMBALI.Enabled := True; LIQUIDS.FormCreate(Self); End; end; procedure TLIQUIDS.BTN_HAPUSClick(Sender: TObject); begin If BTN_HAPUS.Caption = 'HAPUS' then Begin BTN_HAPUS.Caption := 'BATAL'; BTN_SIMPAN.Caption := 'SIMPAN'; BTN_BARU.Enabled := False; BTN_EDIT.Enabled := False; BTN_HITUNG.Enabled := False; BTN_STOP.Enabled := False; BTN_SIMPAN.Enabled := True; BTN_TUTUP.Enabled := False; BTN_KEMBALI.Enabled := False; End Else Begin BTN_HAPUS.Caption := 'HAPUS'; BTN_SIMPAN.Caption := 'SIMPAN'; BTN_BARU.Enabled := True; BTN_EDIT.Enabled := True; BTN_SIMPAN.Enabled := False; BTN_HITUNG.Enabled := False; BTN_STOP.Enabled := False; BTN_TUTUP.Enabled := True; BTN_KEMBALI.Enabled := True; LIQUIDS.FormCreate(Self); End; end; procedure TLIQUIDS.BTN_AWALClick(Sender: TObject); begin TBL_VISKOSITAS.First; TAMPIL_DATA; end; procedure TLIQUIDS.BTN_SEBELUMClick(Sender: TObject); begin TBL_VISKOSITAS.Prior; TAMPIL_DATA; end; procedure TLIQUIDS.BTN_LANJUTClick(Sender: TObject); begin TBL_VISKOSITAS.Next; TAMPIL_DATA; end; procedure TLIQUIDS.BTN_AKHIRClick(Sender: TObject); begin TBL_VISKOSITAS.Last; TAMPIL_DATA; end; procedure TLIQUIDS.Timer1Timer(Sender: TObject); Var Data:Byte; M,A:Integer; {Konstanta Massa Jenis dan Atenuasi} v,n:real; begin Asm mov dx,$37A {Mengaktifkan Port Paralell Bidirectional Mode} Mov al,32d {Mode Bidirectional pada SPP} Out dx,al {Membuat nilai Bit ke 5 Aktif} ; Mov dx,$378 {Mengakses Port Printer alamat Default 378H} in al,dx mov data,al {Mengisi Port Printer dengan data} end; v := (20/100)/data; M := StrToInt(EDT_Massa.Text); A := StrToInt(EDT_ATEN.Text); n := (M A(v vv))/(26.3 f*f); EDT_VISKOSITAS.Text := floattostr(n); end; procedure TLIQUIDS.BTN_HITUNGClick(Sender: TObject); begin If BTN_HITUNG.Enabled then Timer1.Enabled := true; end; procedure TLIQUIDS.BTN_STOPClick(Sender: TObject); begin If BTN_STOP.Enabled then Timer1.Enabled := false; end; procedure TLIQUIDS.BTN_SIMPANClick(Sender: TObject); begin If BTN_BARU.Caption = 'BATAL' then {Menyimpan Data} Begin if TBL_VISKOSITAS.Locate('KETERANGAN',EDT_KETER.Text,[loCaseInsensitive]) then Begin showmessage('Data Sudah Pernah Di Ambil.....!!!'); BTN_BARU.Click; exit; end; TBL_VISKOSITAS.Append; TBL_VISKOSITASNAMA.AsString := EDT_NAMA.Text; TBL_VISKOSITASPRODUSEN.AsString := EDT_PRODUS.Text; TBL_VISKOSITASTANGGAL.AsDateTime := EDT_TANGGAL.DateTime; TBL_VISKOSITASVISKOSITAS.AsString := EDT_VISKOSITAS.Text; TBL_VISKOSITASKETERANGAN.AsString := EDT_KETER.Text; TBL_VISKOSITAS.Post; BTN_BARU.Click; EXIT; END; {Melakukan Edit data} If BTN_EDIT.Caption = 'BATAL' Then Begin TBL_VISKOSITAS.Edit; TBL_VISKOSITASNAMA.AsString := EDT_NAMA.Text; TBL_VISKOSITASPRODUSEN.AsString := EDT_PRODUS.Text; TBL_VISKOSITASTANGGAL.AsDateTime := EDT_TANGGAL.DateTime; TBL_VISKOSITASVISKOSITAS.AsString := EDT_VISKOSITAS.Text; TBL_VISKOSITASKETERANGAN.AsString := EDT_KETER.Text; TBL_VISKOSITAS.Post; BTN_EDIT.Click; EXIT; END; {Hapus Data} If BTN_HAPUS.Caption = 'BATAL' Then Begin TBL_VISKOSITAS.Delete; BTN_HAPUS.Click; EXIT; END; end; end. [/list:u:17fedf0f04] Mohon Pencerahannya..... masih newbie sekali soal database..... saya menggunakan koneksi database paradoks
user image
more 13 years ago

zieborg

procedure TLIQUIDS.BTN_SIMPANClick(Sender: TObject); begin If BTN_BARU.Caption = 'BATAL' then {Menyimpan Data} Begin if TBL_VISKOSITAS.Locate('KETERANGAN',EDT_KETER.Text,[loCaseInsensitive]) then Begin showmessage('Data Sudah Pernah Di Ambil.....!!!'); BTN_BARU.Click; exit; end;
procedure kamu yg ini yang bikin masalah. bila data sudah terisi, trus kamu jalankan perintah locate,next,previous dll, itu sama dg perintah post, karena berpindah record. untuk pengecekan agar tidak berpindah record gunakan lookup, pelajari perintah lookup. good luck!
user image
more 13 years ago

crazy_einstein01

@zieborg:
procedure TLIQUIDS.BTN_SIMPANClick(Sender: TObject); begin If BTN_BARU.Caption = 'BATAL' then {Menyimpan Data} Begin if TBL_VISKOSITAS.Locate('KETERANGAN',EDT_KETER.Text,[loCaseInsensitive]) then Begin showmessage('Data Sudah Pernah Di Ambil.....!!!'); BTN_BARU.Click; exit; end;
procedure kamu yg ini yang bikin masalah. bila data sudah terisi, trus kamu jalankan perintah locate,next,previous dll, itu sama dg perintah post, karena berpindah record. untuk pengecekan agar tidak berpindah record gunakan lookup, pelajari perintah lookup. good luck!
klo bagian ini di hilangkan pengaruhnya dimana dah saya coba hilangkan masih error juga terima kasih atas supportnya
more ...
  • Pages:
  • 1
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com