Чтобы ответить на заданный вопрос, эта часть кода не имеет смысла:
DtpDOB.Value.Date.ToShortDateString("dd-MM-YYYY")
Вы должны были уже прочитать соответствующую документацию и решить проблему для себя. Это сказало бы, что у метода ToShortDateString
нет параметров. Весь смысл этого метода в том, что он возвращает указанную дату, используя стандартный формат короткой даты для текущей системы. Это:
DtpDOB.Value.Date.ToShortDateString()
эквивалентно следующему:
DtpDOB.Value.Date.ToString("d")
Если вы хотите определенный формат c, независимо от настроек системы, вам нужно вызвать ToString
и передать соответствующую строку пользовательского формата:
DtpDOB.Value.Date.ToString("dd-MM-YYYY")
На самом деле происходит то, что компилятор делает наилучшее предположение о том, что вы пытаетесь выполнить sh и думает, что вы пытаетесь проиндексировать String
, возвращаемый ToShortDateString
, то есть
DtpDOB.Value.Date.ToShortDateString()("dd-MM-YYYY")
или следующим образом:
Dim str As String = DtpDOB.Value.Date.ToShortDateString()
Dim ch As Char = str("dd-MM-YYYY")
Это не удается, поскольку для индексации требуется Integer
и эту строку формата нельзя преобразовать в Integer
, отсюда и сообщение об ошибке.
Помимо использования параметров для ADO. NET, что делает формат неактуальным, вам также следует включить Option Strict On
в свойствах вашего проекта и параметрах IDE.