delphi - Data from ListBox to DataSet -


i have dbgrid load names datasetpeople associated table_people. create drag , drop procedure, user can drag name , drop listbox. user can drop listbox_employees or listbox_manager.

my problem

i want create relationship between people table_people using names user drop in both listbox. create table_relationship employeeid match managerid.

so, how can name each listbox, associate name id, , put id employeeid or managerid datasetrelationship associated table_relationship ?

if ids numeric (integer) values, can use tlistbox.items.objects store when fill (in drop event handler on form):

var   personname: string;   personid: integer; begin   yourdatamodule  // gives access tables in data module   begin     personname := table_people.fieldbyname('employeename').asstring;     personid   := table_people.fieldbyname('employeeid').asinteger);   end;   listbox_employees.items.addobject(personname, tobject(personid); end; 

for manager, change listbox manager , field values manager.

to id out use insert statement:

// make sure both listboxes have same number of items, of course. var   employeeid: integer;   managerid: integer;   i: integer; begin   := 0 listbox_employees.items.count - 1   begin     employeeid := integer(listbox_employees.items.objects[i]);     managerid := integer(listbox_manager.items.objects[i]);     if not yourdatamodule.makerelationship(employeeid, managerid)       showmessage('unable relate employee , manager!');   end; end;  // if you're using sql query, `insert` should created // somewhere, in datamodule's oncreate event //   qryrelationships.sql.clear; //   qryrelationships.sql.add('insert table_relationship (employeeid, managerid)'); //   qryrelationships.sql.add('values (:employeeid, :managerid)'; // // or can type sql property in object inspector @ designtime  //   insert table_relationship (employeeid, managerid) values (:employeeid, :managerid)   function tyourdatamodule.makerelationship(const empid, mgrid: integer):  boolean; begin   result := false;   // insert dataset:   qryrelationships.parambyname('employeeid').asinteger := empid;   qryrelationships.parambyname('managerid').asinteger := mgrid;   try     qryrelationships.execsql;     result := qryrelationships.rowsaffected;       qryrelationships.close;   end; end;  // if you're using table instead of query, getting result harder function tyourdatamodule.makerelationship(const empid, mgrid: integer):  boolean; begin   result := true;   try     tblrelationships.insert;     tblrelationships.fieldbyname('employeeid').asinteger := empid;     tblrelationships.fieldbyname('managerid').asinteger := mgrid;     tblrelationships.post;   except     result := false;   end; end; 

Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -