Лучшее решение - НЕ хранить даты в виде строк. Все базы данных могут обрабатывать даты, а ADO может возвращать значения даты напрямую, без преобразования их в строки. Если данные даты хранятся в виде типа даты, вам, вероятно, вообще не нужно использовать CDate. Возвращенный набор записей будет содержать базовые данные в качестве варианта даты.
Если все-таки данные хранятся в виде строки, вы можете изменить оператор SQL, чтобы преобразовать строку в дату, используя встроенные функции вашей БД. В SQL Server вы можете сделать это с помощью функций CAST и CONVERT, например,
CAST(myDateAsTextField as datetime)
Тип данных SQL Server DATETIME
принимает доли секунды с 1-3 цифрами.
Наконец, вы можете проверить содержимое строки и преобразовать ее в другую форму перед вызовом CDate. Это следует использовать в качестве крайней меры, если вы не можете исправить данные на уровне базы данных.