= mssqlDataset =

{{{
import pymssql

class mssqlDatarow(object):
	def __init__(self,fields,values):
		self.__fields={}
		for f,v in zip(fields, values):
			self.__fields[f.upper()]=v
		self.__values=values
		
	def getValue(self,fieldName):
		return self.__fields.get(fieldName.upper())

class mssqlDataset(object):
	def __init__(self,cnt):
		self.__cnt=cnt
		self.rows=None
		self.fieldNames=None

	def getFieldNameOnSelectAs(self,sqlSelect):
		sqlSelect=sqlSelect.strip().upper()
		asFix=' as '.upper()
		asIndex=sqlSelect.rfind(asFix)
		if asIndex<=0: return sqlSelect
		sqlSelect=sqlSelect[asIndex+len(asFix):]
		return sqlSelect

	def query(self,sqlSelect,sqlFrom,sqlWhere=None
			,sqlOrder=None,sqlGroup=None,sqlPre=None):
		s=sqlSelect.strip()
		s=s.split(",")
		self.fieldNames=map(self.getFieldNameOnSelectAs,s)
		ssql="select %s%s "%(sqlPre+" " if sqlPre else ""
				,sqlSelect if sqlSelect else "")
		ssql+="\nfrom %s "%(sqlFrom if sqlFrom else "",)
		ssql+="\n%s "%("where "+sqlWhere if sqlWhere else "",)
		ssql+="\n%s "%("order by "+sqlOrder if sqlOrder else "",)
		ssql+="\n%s"%("group by "+sqlGroup if sqlGroup else "",)
		cur=self.__cnt.cursor()
		cur.execute(ssql)
		fetches=cur.fetchall()
		cur.close()
		self.rows=list()
		for fetch in fetches:
			self.rows.append(mssqlDatarow(self.fieldNames,fetch))

}}}