Arsip: Get TDBEdit Value Menggunakan LookUp Grid

 
user image
more 11 years ago

lukersgn

Dear Guys, Salam Delphi, Gmn yah cara mengambil nilai dari lookup form yg menggunakan TcxGrid, untuk dimasukkan ke bbrp DBEdit, saya sudah coba, tapi mengalami error terus. (seperti pada gambar). Berikut code waktu doubleclick gridnya : procedure TFormSearchBank.cxGrid1DBTableView1CellDblClick( Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin FormMissionOrder.edBankName.Text := qSearchBank.FieldByName('BANK_NAME').AsString; FormMissionOrder.edAccountName.Text := qSearchBank.FieldByName('ACCOUNT_NAME').AsString; FormMissionOrder.edAccountNo.Text := qSearchBank.FieldByName('ACCOUNT_NR').AsString; Close; end; Terima kasih atas pencerahannya.
user image
more 11 years ago

mas_kofa

error nya begimano mas?
user image
more 11 years ago

lukersgn

Errornya begini Mas,, "Access violation at address 009ABAD8 in module 'Sysapp.exe. Read of address 00000464" terima kasih buat pencerahannya.
user image
more 11 years ago

mas_kofa

FormMisionOrder udah dicreate blom?
user image
more 11 years ago

theodorusap

Mohon ijin comment Gunakan TStringlist sebagai penyimpan data universal. - Hasil lookup disimpan ke TStringList, - Isi TStringList dipindahkan ke Edit Untuk Lookup Form :
Unit USearchBank;
......
interface
......
FormSearchBank = class(TFormSearchBank)
......
private
  FOutputList : Tstrings;
  ....
Public
  Function ExecuteLookup(Title,SQL:String; aOutput:TStrings):Boolean;
End;
implementation
.......

{TFormSearchBank}
....
Function TFormSearchBank.ExecuteLookup(Title,SQL:String; aOutput:TStrings):Boolean;
begin
  FOutput:=aOutput;
  Caption:=Title;
  //Inisialisasi SQL ke qSearchBank dan cxGrid1DBTableView1 di sini
  //misalnya :
  qSearchBank.CommandText:=SQL;
  qSearchBank.Open;
  Result:=ShowModal=MROK; {<<-- kalo lookupnya pake Modal}
end;
.....
procedure TFormSearchBank.cxGrid1DBTableView1CellDblClick( 
  Sender: TcxCustomGridTableView; 
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; 
  AShift: TShiftState; var AHandled: Boolean); 
var
  I:Integer;
begin 
  //Simpan hasil pilihan ke Output Tstrings
  FOutputList.Clear;
  For I:=0 to qSearchBank.FieldCount-1 do
    FOutputList.Values[qSearchBank.Fields.Fields[i].FieldName] := qSearchBank.Fields.Fields[i].AsString;
  ModalResult:=MROK; //<--sekali lagi, kalo pake modal  
end; 
....
End.[/code:1:e0930368e0]

Sementara di FormMissionOrder, misalnya lookup pada saat click Button 1, maka :
[code:1:e0930368e0]......
Implementation
uses ...., TFormSearchBank, ...; {tambahkan TFormSearchBank ke uses}

procedure FormMissionOrder.Button1Click(Sender:TObject);
var
  F:TFormSearchBank;
  SQL:String;
  outputList:Tstrings;
begin
  F:=TFormSearchBank.Create(Application);
  outputList:TstringList.Create;
  try
    SQL:='Select * from ........';
    if F.ExecuteLookup('Pilih Bank',SQL,aOutput) then
    begin
      //set output lookup ke Edit
      edBankName.Text    := outputList.Values['BANK_NAME'];
      edAccountName.Text := outputList.Values['ACCOUNT_NAME'];
      edAccountNo.Text   := outputList.Values['ACCOUNT_NR'];
    end;
  finally
    outputList.Free;
    F.free;
  end;
end;
//=========================================\\ Dengan cara seperti ini, FormSearchBank bisa digunakan sebagai universal lookup form, bukan hanya bank saja. Mudah-mudahan membantu.
user image
more 11 years ago

theodorusap

sedikit revisi postingan ane : bagian ini : if F.ExecuteLookup('Pilih Bank',SQL,aOutput) then seharusnya : if F.ExecuteLookup('Pilih Bank',SQL,outputList) then
user image
more 11 years ago

lukersgn

Dear theodorusap, Many Thanks yah bro,,, bstrgds, hendry
user image
more 11 years ago

theodorusap

Your welcome Bro. Tetep semangat and Maju terus
user image
more 11 years ago

lukersgn

untuk proses ambil datanya sudah bisa dan muncul di DBEditnya bro, tapi waktu disave menggunakan DBNavigator, datanya ga masuk bro, kira-kira kurang dmn yah? Thanks bro.
user image
more 11 years ago

theodorusap

jadi edBankName, edAccountName, edAccountNo itu jenisnya DBEdit bukan TEdit? Kalo TEdit langsung aja edBankName.Text:=................... Tapi kalo jenisnya DBEdit, prosesnya g seperti itu gan. Cek dulu, apakan edBankName sudah dilink ke Datasource dan Dtasource sudah link ke Dataset. Kalo belum, mesti dibuat rutin untuk simpan ke Database atau dilink dulu. kalo sudah link, sebelum masukin, ubah dataset yang digunakan untuk link ke edBankName, edAccountName, dan edAccountNo ke mode edit sebelum diset. Misalnya edBankName, edAccountName, dan edAccountNo link ke dataset yang sama maka :

if F.ExecuteLookup('Pilih Bank',SQL,aOutput) then 
begin 
     //set output lookup ke Edit 
     ededBankName.Datasource.Dataset.edit; //atau append untuk tambah record baru
     try
        edBankName.Field.AsString    := outputList.Values['BANK_NAME']; 
        edAccountName.Field.AsString := outputList.Values['ACCOUNT_NAME']; 
        edAccountNo.Field.AsString   := outputList.Values['ACCOUNT_NR']; 
        edBankName.Datasource.Dataset.Post;
     except
        //gagal simpan
       edBankName.Datasource.Dataset.cancel;
     end;
end; 
more ...
  • Pages:
  • 1
  • 2
Share to

Random Topic

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