I don't understand this. Doesn't Year() return an integer, and Cstr() convert integers to strings? Note, however, that the following DOES work... yearStr = Cstr(Year( Today )) But why can't I use my DateTime in place of Today? (In the actual application, my thisDate could be any date. It's not actually going to be Today.)
How to get around this the simplest way is going to depend a lot on where you'll be getting the date from when you're writing your actual production code. If, for example, you were pulling a datetime from a document it's already stored in the correct format. You could use
yearStr = Cstr ( Year ( doc.MyDate(0) ) )
If you've got it as a text value that you're reading in from somplace, then do the conversion a little differently:
mydate = Cdat ( "01/01/2005" )
yearStr = Cstr ( Year ( mydate ) )
That's the big problem with hypothetical code, it doesn't have the context to give a solid answer that a real-world situation does.