Есть ли способ, которым я могу поместить держателей мест в дату и заставить SQL понять, что это дата?
Using sqlconn As New SqlConnection("sqlstring") Using da As New SqlDataAdapter(String.Empty, sqlconn) Dim death As New StringBuilder("") Dim Cemetery As New StringBuilder("") Dim sql As New StringBuilder("Select profile.Individual_ID, First_name, Middle_name, Last_name, Sex, Race, Place_of_birth, County_of_birth, State_of_birth, Date_of_birth") 'inner join death on death.individual_ID = profile.individual_ID Dim wherestatement As New StringBuilder(" WHERE 1 = 1 ") If Not String.IsNullOrEmpty(Birthyearstart.Text) AndAlso Not String.IsNullOrEmpty(Birthyearend.Text) Then wherestatement.Append(" And Year(Date_of_birth) Between Year(@StartYear) And Year(@EndYear)") da.SelectCommand.Parameters.AddWithValue("@StartYear", Birthyearstart.Text) da.SelectCommand.Parameters.AddWithValue("@EndYear", Birthyearend.Text) End If sql.Append(" from profile ") sql.Append(death) sql.Append(Cemetery) sql.Append(wherestatement) ' da.SelectCommand.CommandText = sql.ToString() + " Order by Last_name ASC;" da.SelectCommand.CommandText = sql.ToStr
Я сохраняю даты как таковые 00/00/1901, когда я не знаю месяц или день, или и то, и другое. Однако, когда я запускаю свой код, я не получаю никаких строк, возвращаемых для структуры даты. Если я поставлю фактическую дату, например 01/01/1901, она вернет все записи, относящиеся к этой дате.
Есть ли способ использовать заполнители и все же фильтровать год?
Что я уже пробовал:
Я попытался сделать еще один держатель размещения и все равно получил тот же результат.
MadMyche
Я не вижу от ни в одном из этих SQL беспорядков
Dave Kreskowiak
Этот код-беспорядок, не будет компилироваться, так как третий StringBuilder не завершен. Там нет закрытия ") на нем.
Как уже указывалось, в вашем SQL-операторе нет предложения FROM. С какой таблицы должен начинаться этот запрос для извлечения данных?
Это также ужасный способ построения SQL-оператора. Лучший способ сделать это - создать хранимую процедуру в базе данных и просто передать ей параметры. Он прекрасно очищает код и делает его гораздо более гибким и ремонтопригодным.
Richard MacCutchan
Почему вы используете текстовые строки, когда ссылаетесь на значения дат? Используйте правильные типы даты и времени.