Mercurial > hg > ltpda
diff m-toolbox/classes/@repogui/buildquery.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/@repogui/buildquery.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,102 @@ +% BUILDQUERY build a query from the settings on the query panel +% +% M Hewitson +% +% $Id: buildquery.m,v 1.3 2011/04/08 08:56:26 hewitson Exp $ +% +function buildquery(varargin) + + + mainfig = varargin{end}; + + % Get number of conditions + Nc = mainfig.Nconditions; + + conn = mainfig.connection; + if ~isempty(conn) + % Select fields + fieldList = findobj(mainfig.handle, 'Tag', 'fieldsList'); + fieldsStr = get(fieldList, 'String'); + vals = get(fieldList, 'Value'); +% if numel(fieldsStr) == 1 && vals > 1 +% fields = fieldsStr(1); +% else + fields = fieldsStr(vals); +% end + + % Get table + tableSel = findobj(mainfig.handle, 'Tag', 'tableSelect'); + tbls = get(tableSel, 'String'); + tbl = tbls{get(tableSel, 'Value')}; + + else + fields = {'-'}; + tbl = {'-'}; + end + + % Start the query + q = 'SELECT '; + for j=1:length(fields) + q = [q fields{j} ',']; + end + q = [q(1:end-1) ' FROM ' tbl]; + + + for k=1:Nc + + if k==1 + q = [q ' WHERE ']; + end + + % get field + h = findobj(mainfig.handle, 'Tag', sprintf('c%02dField', k)); + fields = get(h, 'String'); + field = fields{get(h, 'Value')}; + + q = [q field]; + + % get condition + h = findobj(mainfig.handle, 'Tag', sprintf('c%02dCondition', k)); + conds = get(h, 'String'); + cond = conds{get(h, 'Value')}; + + q = [q ' ' cond ' ']; + + % get value + h = findobj(mainfig.handle, 'Tag', sprintf('c%02dValue', k)); + val = get(h, 'String'); + q = [q '"' val '"']; + + % Get compound + if k<Nc + + h = findobj(mainfig.handle, 'Tag', sprintf('c%02dCompound', k)); + comps = get(h, 'String'); + comp = comps{get(h, 'Value')}; + + q = [q ' ' comp ' ']; + + end + + + end + + % Order by + h = findobj(mainfig.handle, 'Tag', 'fieldOrderBy'); + fields = get(h, 'String'); + field = fields{get(h, 'Value')}; + + q = [q ' ORDER BY ' field]; + + h = findobj(mainfig.handle, 'Tag', 'sortDir'); + dirs = get(h, 'String'); + dir = dirs{get(h, 'Value')}; + + q = [q ' ' dir ';']; + + % Set query string on GUI + h = findobj(mainfig.handle, 'Tag', 'queryDisplayTxt'); + set(h, 'String', q); + + drawnow +end