diff m-toolbox/classes/@repogui/cb_executeQuery.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/cb_executeQuery.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,71 @@
+% Execute the query built on the query panel
+%
+% M Hewitson
+%
+% $Id: cb_executeQuery.m,v 1.7 2011/04/08 08:56:26 hewitson Exp $
+%
+function cb_executeQuery(varargin)
+
+  
+  % Get connection
+  mainfig  = varargin{end};
+  conn     = mainfig.connection;
+  if isempty(conn)
+    error('### Please connect to a database first.');
+  end
+    
+  if ischar(varargin{end-1})
+      q = varargin{end-1};
+      fields = 'id';
+      
+  else
+      % Get Selected fields
+      fieldList = findobj(mainfig.handle, 'Tag', 'fieldsList');
+      fieldsStr = get(fieldList, 'String');
+      vals      = get(fieldList, 'Value');
+      fields    = fieldsStr(vals)';
+      
+      % Get query
+      h = findobj(mainfig.handle, 'Tag', 'queryDisplayTxt');
+      q = get(h, 'String');
+  end
+  
+  try
+    curs = exec(conn, q);
+    curs = fetch(curs);
+    results = curs.Data;
+    close(curs)
+  catch
+    warning('!!! Unable to execute query %s', q)
+%     warning('!!! Server returned: %s', curs.Message);
+    results = {};
+    close(conn);
+    conn = [];
+    disp('* disconnected.');
+    mainfig.connection = conn;
+    mainfig.username   = '';
+    set(findobj('Tag', 'ConnectButton'), 'String', 'connect');
+    set(findobj(mainfig.handle, 'Tag', 'RepoguiStatusTxt'), 'String', 'not connected');
+    mainfig.dbuser = '';
+    mainfig.dbpass = '';
+    popup2change = [findobj(mainfig.handle, 'Tag', 'tableSelect'), findobj(mainfig.handle, 'Tag', 'fieldsList'), findobj(mainfig.handle,'-regexp','Tag','.*Field$')];
+    set(popup2change,'Value',1,'String',{'-'})
+    set(findobj(mainfig.handle, 'Tag', 'tableSelect'),'Value', 1)
+    assignin('base','prova',mainfig)
+    
+    error('### Unable to execute query');
+  end
+  
+  status  = findobj(mainfig.handle, 'Tag', 'RepoguiStatusTxt');
+  if ~isempty(results)
+    if strcmp(results{1}, 'No Data')
+      utils.helper.errorDlg('Query returned no results.', 'Query Empty');
+      set(status, 'String', ['*** No results to query: ' q], 'ForeGroundcolor','r');
+      return
+    else
+      set(status, 'String', sprintf('*** Query returned %d results', numel(results)), 'ForeGroundcolor','b');
+      repogui.sqlResultsGUI(results, fields, q);
+    end
+  end
+  
+end