Topic: Multi select search procedure

What is wrong with the syntax of the procedure?

procedure registru_bSQLSearch_OnClick (Sender: string; var Cancel: boolean);

var
    i,c: integer;
    s: string;
begin
     s := '';
    Registru.bSQLSearch.dbSQL := 'SELECT nrordine, adresa, tipaparat, serie, producator, inst, af, ri, dataraport, datasacadenta, obs, certconf, piesa, pozlivret FROM Registru';
    c := Registru.TableGridReg.RowCount-1;

    for i := 0 to c do
    begin
        if Registru.TableGridReg.Selected[i] then s := s + 'id='+IntToStr(Registru.TableGridReg.dbIndexToID(i)) + ' OR ';
    end;

    if s <> '' then
    begin
        SetLength(s, Length(s)-4);
        Registru.bSQLSearch.dbSQL := Registru.bSQLSearch.dbSQL + ' WHERE ' + s+ 'adresa LIKE '%{Rsearch}%' OR obs LIKE '%{Rsearch}%' OR serie LIKE '%{Rsearch}%' OR dataraport LIKE '%{Rsearch}%' OR datasacadenta LIKE '%{Rsearch}%' OR certconf LIKE '%{Rsearch}% ' OR piesa LIKE '%{Rsearch}%' OR producator LIKE '%{Rsearch}%''; ///Script error ';' expected at 31:95
        //Registru.Label2.Caption := s;
    end;

end;

procedure registru_OnShow (Sender: string; Action: string);
begin
registru.TableGridReg.Options := registru.TableGridReg.Options + goMultiSelect;
end;

Re: Multi select search procedure

Please, attach your project.
I'll test it.

Dmitry.

Re: Multi select search procedure

I tried the version where I got inspiration, and I found many problems:
1. Pressing the "Select Search 'and I try to visualize data gives me invalidity ID
2. I do not manage to use the "LIKE" in the search procedure
3. disability gives me the ID if using "Print select" and "Search Select" called one after another
  Basically this is the difficulty with which I can not manage.

Thanks for the help.

Post's attachments

Attachment icon Employees - Multiselect for report + Search Select.rar 65.44 kb, 989 downloads since 2015-05-11 

Re: Multi select search procedure

Fixed code:

procedure Form1_bSQLSearch_OnClick (Sender: string; var Cancel: boolean);
var
    i,c: integer;
    s: string;
begin
    s := '';
    Form1.bSQLSearch.dbSQL := 'SELECT lastname, firstname, strftime(''%m/%d/%Y'', dateofbirth) as dateofbirth, id FROM employees';
    Form1.bSQLSearch.dbListFieldsNames := 'lastname,firstname,dateofbirth,delete_col';
    c := Form1.GridEmployees.RowCount-1;

    for i := 0 to c do
    begin
        if Form1.GridEmployees.Selected[i] then s := s + 'employees.id='+IntToStr(Form1.GridEmployees.dbIndexToID(i)) + ' OR ';
    end;

    if s <> '' then
    begin
        SetLength(s, Length(s)-4);
        Form1.bSQLSearch.dbSQL := Form1.bSQLSearch.dbSQL + ' WHERE ' + s+ ' AND (lastname LIKE "%{edLastname}%" OR firstname LIKE "%{edLastname}%")';
        //Form1.bSQLSearch.dbSQL := Form1.bSQLSearch.dbSQL + ' WHERE ' + s; //work
        //adresa LIKE '%{RsearchSel}%' OR
    end;
end;
Dmitry.

Re: Multi select search procedure

Thanks for the help, but I found a little inconvenient for me smile make correct line for illustration

Form1.bSQLSearch.dbSQL := Form1.bSQLSearch.dbSQL + ' WHERE ' +'('+ s+')'+ ' AND (lastname LIKE "%{edLastname}%" OR firstname LIKE "%{edLastname}%")';

A great day!

Re: Multi select search procedure

I have one small request to help me function syntax "AS" in line "SQL .." to show my column "First Name" instead of "firstname", "Last Name" instead of "lastname"

Form1.bSQLSearch.dbSQL := 'SELECT lastname AS 'Last Name', firstname AS 'First Name', strftime(''%m/%d/%Y'', dateofbirth) as dateofbirth, id FROM employees';

Thank you again for technical support!

A great day!

Re: Multi select search procedure

in this line you can edit columns name

Form1.bSQLSearch.dbListFieldsNames := 'lastname,firstname,dateofbirth,delete_col';
Dmitry.

Re: Multi select search procedure

It works, you saved my day smile