docs: def _doAction(self, action):
  		"""This function will perform a FileMaker action."""
  
  		if self._db == '':
  			raise FMError, 'No database was selected'
  
  		result = ''
  
  		try:
  			request = [
  				uu({'-db': self._db })
  			]
  
  			if self._layout != '':
  				request.append(uu({'-lay': self._layout }))
  
  			if action == '-find' and self._lop != 'and':
  				request.append(uu({'-lop': self._lop }))
  
  			if action in ['-find', '-findall']:
  
  				if self._skipRecords != 0:
  					request.append(uu({ '-skip': self._skipRecords }))
  
  				if self._maxRecords != 0:
  					request.append(uu({ '-max': self._maxRecords }))
  
  				for i in range(0, len(self._sortParams)):
  					sort = self._sortParams[i]
  					request.append(uu({ '-sortfield.'+str(i+1): sort[0] }))
  
  					if sort[1] != '':
  						request.append(uu({ '-sortorder.'+str(i+1): sort[1] }))
  
  			for dbParam in self._dbParams:
  
  				if dbParam[0] == 'RECORDID':
  					request.append(uu({ '-recid': dbParam[1] }))
  
  				elif dbParam[0] == 'MODID':
  					request.append(uu({ '-modid': dbParam[1] }))
  
  				elif hasattr(dbParam[1], 'strftime'):
  					d = dbParam[1]
  					if (not hasattr(d, 'second')):
  						request.append(uu({ dbParam[0]: d.strftime('%m-%d-%Y') }))
  					else:
  						request.append(uu({ dbParam[0]: d.strftime('%m-%d-%Y %H:%M:%S') }))
  					del(d)
  				else:
  					request.append(uu({ dbParam[0]: dbParam[1] }))
  			request.append(action)
  
  			if self._extra_script:
  				request += self._extra_script
  				self._extra_script = None
  
  			result = self._doRequest(request)
  
  			try:
  				result = FMResultset.FMResultset(result)
  			except FMFieldError, value:
  				realfields = FMServer(self._buildUrl(), self._db, self._layout).doView()
  
  				l = []
  				for k, v in self._dbParams:
  					if k[-3:] != '.op' and k[0] != '-':
  						l.append(("'%s'" % k.replace('::','.')).encode('utf-8'))
  				raise FMError, "Field(s) %s not found on layout '%s'" % (', '.join(l), self._layout)
  
  			if action == '-view':
  				result = result.fieldNames
  
  		finally:
  			self._dbParams = []
  			self._sortParams = []
  			self._skipRecords = 0
  			self._maxRecords = 0
  			self._lop = 'and'
  
  		return result