Useful code snippets

SIS Desktop has many (data) types, this allows it to support many different types of dataset and offers low level compatibility with databases.

Python is a high level language and has less types.

Python and datetime

SIS Desktop uses Win32 legacy code for handling dates. This is the reason it passes back the date as a serial date so that it is more a handy hint.

But accurately converting the serial back to a Python date time object is still important (in computing / mathematics / programming the exact treatment of dates is particularly important).

Python to SIS

Python datetime converts to SIS VARIANT(VT_DATE)

SIS to Python

DATE value SIS VARIANT(VT_DATE) converts to Python double as serial date.

See the following code extract for converting the Python double (serial) to a standard Python datetime object.

      from datetime import datetime 
def convert_serial_date_to_datetime(serial): 
	# 86400 = Seconds in a day 
	# 25569 = Days between 1970/01/01 and 1900/01/01 
	seconds = (serial - 25569) * 86400.0 
	return seconds 

Python and decimal

For decimal to double data types Python will do conversions on the fly but these are not always accurate.

To avoid this we cast to a string then convert using the decimal() method; this ensures whatever is passed out of SIS Desktop as a decimal is accurately converted to a Python double.

When converting from a SIS decimal to a Python double the following method should be used.

      from decimal import Decimal  
def convert_double_to_decimal(value): 
        # cast the value to a string and  
        # and precisely convert to a python 
        # double using decimal() 
        return Decimal(str(value))