Arsip: koneksi DBLookupCombobox error

 
user image
more 9 years ago

sania

kk sy ingin bertanya, Saya punya tabel pendaftaran dengan field : - ID (AutoNumber) - RegDate (DateTime) - TargetDate (DateTime) - Rank(Text) 1 buah Combobox (cbField) isi itemnya Field diatas tadi. 1 buah DBLookupCombobox (cbValue) Pas di cbField on change; procedure TcbField.cbFieldChange(Sender: TObject); begin with AQFilter do begin Close; cbValue.ListSource:=nil; cbValue.ListField:=''; cbValue.KeyField:=''; case cbField.ItemIndex of 0: SQL.Text:='SELECT ID FROM Pendaftaran'; 1: SQL.Text:='SELECT RegDate FROM Pendaftaran'; 2: SQL.Text:='SELECT TargetDate FROM Pendaftaran'; 3: SQL.Text:='SELECT Rank FROM Pendaftaran'; end; cbValue.ListSource:=DSFilter; cbValue.KeyField:=cbField.Text; cbValue.ListField:=cbField.Text; Open; end; end; Kalau di running jalan, saya pilih cbField=ID dan cbValue=1 masih jalan, kemudian saya pilih cbfield=RegDate, langsung muncul pesan error "An unknown error has occurred". kasus ini terjadi saat saya memilih combobox(cfield) untuk kedua kali. Apa eror ini ada hubungannya dengan tipe data? Mohon bantuannya. Thx
user image
more 9 years ago

dr4cul453xy

@sania: kasus ini terjadi saat saya memilih combobox(cfield) untuk kedua kali. Apa eror ini ada hubungannya dengan tipe data? Mohon bantuannya. Thx
Ganti Procedure anda yang ini :
procedure TcbField.cbFieldChange(Sender: TObject);
begin
  with AQFilter do
  begin
    Close;
    cbValue.ListSource:=nil;
    cbValue.ListField:='';
    cbValue.KeyField:='';
    case cbField.ItemIndex of
      0: SQL.Text:='SELECT ID FROM Pendaftaran';
      1: SQL.Text:='SELECT RegDate FROM Pendaftaran';
      2: SQL.Text:='SELECT TargetDate FROM Pendaftaran';
      3: SQL.Text:='SELECT Rank FROM Pendaftaran';
    end;
    cbValue.ListSource:=DSFilter;
    cbValue.KeyField:=cbField.Text;
    cbValue.ListField:=cbField.Text;
    Open;
  end;
end;
Dengan Ini :
procedure TcbField.cbFieldChange(Sender: TObject);
begin
  //CATATAN, SEBELUMNYA DATASET ANDA HARUS SUDAH KEBUKA/OPEN/AKTIF
  with cbValue do
  begin
    case cbField.ItemIndex of
      0: ListField :='ID';
      1: ListField :='RegDate';
      2: ListField :='TargetDate';
      3: ListField :='Rank';
    end;    
  end;
end;
Semoga membantu
user image
more 9 years ago

sania

thx atas responnya... Error yg saya dpt juga sepertinya karena keyfield. udah sy coba script di atas dan berhasil. Tp ada kemungkinan index di dalam case tersebut bertambah dan querynya tidak hanya dr 1 tabel. Dan saat ini data yg saya ambil ada pd bagian keyvalue, sehingga msh butuh key field. Punya solusi lainnya kk?
user image
more 9 years ago

dr4cul453xy

@sania: Tp ada kemungkinan index di dalam case tersebut bertambah dan querynya tidak hanya dr 1 tabel.
Baik tabel maupun Query(termasuk query yang berisi lebih dari 1 tabel) hampir sama. Jika anda mau secara dinamis memasukkan daftar kolom dari query/ tabel yang anda buat ke kotak kombo, anda harus inisiasi dulu daftar yang akan anda masukkan ke kotak kombo :
var
  i : integer;
begin
  ComboBox1.Items.Clear;
  qryTest.first;
  for i:= 1 to qryTest.FieldCount-1 do
  try
    ComboBox1.Items.Add(qryTest.Fields[i].FieldName);
  except on e:exception do
    raise exception.Create(e.Message);
  end;
Snippet diatas untuk memasukkan daftar kolom pada query/ table anda ke dalam kotak kombo. Anda bisa memanggilnya pada saat form ditampilkan (Form Show event)
Dan saat ini data yg saya ambil ada pd bagian keyvalue, sehingga msh butuh key field. Punya solusi lainnya kk?
Anda bisa mengubah keyfield/listfield saat runtime. Tapi dengan catatan status query/tabel anda sedang Aktif. Misal
  if DBLookupComboBox1.ListField = 'KODE' then begin
    DBLookupComboBox1.KeyField:='ISI_KOLOM';
    DBLookupComboBox1.ListField:='ISI_KOLOM';
  end
  else begin
    DBLookupComboBox1.KeyField :='KODE';
    DBLookupComboBox1.ListField := 'ISI_KOLOM_LAINNYA';
  end;
Semoga Membantu
more ...
  • Pages:
  • 1
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com