One thing you could look at is how versioning is stored in the URL's for the items.
For a "Tasks" list (with the default of versioning enabled for each edit), the URL for each new version has an number added to it that is incremented in values of 512.
Examples:
An item on the list as version 6.0
The current version (6.0) will appear as: /Lists/Tasks/DispForm.aspx?ID=1
Version 5.0 will be: /Lists/Tasks/DispForm.aspx?ID=1&VersionNo=2560
Version 4.0 will be: /Lists/Tasks/DispForm.aspx?ID=1&VersionNo=2048
Version 3.0 will be: /Lists/Tasks/DispForm.aspx?ID=1&VersionNo=1536
Version 2.0 will be: /Lists/Tasks/DispForm.aspx?ID=1&VersionNo=1024
Version 1.0 will be: /Lists/Tasks/DispForm.aspx?ID=1&VersionNo=512
(You can see these URL's by clicking on version history in the edit dropdown for the list item and hovering over each version's link)
Since these "512-increments" are always consistant, one option would be to use JavaScript to parse the URL for the current item, then based on its version number, dynamically create the URL's for each of the previous versions (you'll know how many to create and the numbers to append, based on the current version number), then (possibly) use JavaScript to crawl these "Created" URL's and parse the HTML on each page to grab the "Due Date" values.
I'm by no means a JavaScript guru, and I'm not sure how to approach this (what the script would entail), but it may be possible.
Question for fellow Moderator:
Paul, can you chime in here on the feasability of this? Can you do an "HTTP Request" through JavaScript to follow a URL, parse the resulting html on multiple pages, then produce the results for each "Due Date" value on a new page...or something similar? Any other ideas on how to get the data from previous versions?
- Dessie