powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / запрос с участием даты
7 сообщений из 7, страница 1 из 1
запрос с участием даты
    #35832887
ecoli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, всех с праздником!
Ситуация в следующем есть четыре текстовых поля из которых данные передаются в параметры
запроса.
Так как дата строковый параметр, приходится ее конвертировать в тип datetime
В ходе этого есть ряд проблем.
Четыре поля это фамилия имя отчество и дата рождения. Вот как раз с датой рождения проблема
Не всегда в запросе есть данные о дате рождения, если оставить дату пустой выдается ошибка конвертирования. Если использовать какое значение дефолтное, тоже не есть хорошо, так как чистота запроса пострадает.
Кто как выходит из данной ситуации?
...
Рейтинг: 0 / 0
запрос с участием даты
    #35832892
ecoli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim comSQL As SqlCommand = New SqlCommand("select person_surname,person_firname,person_secname,person_birthday from personperiodic WHERE person_surname like '%'+@person_surname+'%'and person_firname like '%'+@person_firname+'%' and person_secname like '%'+@person_secname+'%' and person_birthday like '%'+@person_birthday+'%'", conn)
        Dim birthday As DateTime
        comSQL.Parameters.Add("@person_surname", SqlDbType.VarChar)
        comSQL.Parameters("@person_surname").Value = TextBox1.Text
        comSQL.Parameters.Add("@person_firname", SqlDbType.NVarChar)
        comSQL.Parameters("@person_firname").Value = TextBox2.Text
        comSQL.Parameters.Add("@person_secname", SqlDbType.NVarChar)
        comSQL.Parameters("@person_secname").Value = TextBox3.Text
        birthday = Convert.ToDateTime(TextBox4.Text)
        comSQL.Parameters.Add("@person_birthday", SqlDbType.DateTime)
        comSQL.Parameters("@person_birthday").Value = birthday
вот сам код для наглядности
...
Рейтинг: 0 / 0
запрос с участием даты
    #35833106
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim comSQL As SqlCommand = New SqlCommand("select person_surname,person_firname,person_secname,person_birthday from personperiodic WHERE (person_surname like @person_surname) and (person_firname like @person_firname) and (person_secname like @person_secname) and ((person_birthday=@person_birthday) or (@person_birthday is null))", conn)
comSQL.Parameters.Add("@person_surname", SqlDbType.VarChar)
comSQL.Parameters("@person_surname").Value = "%"+TextBox1.Text+"%"
comSQL.Parameters.Add("@person_firname", SqlDbType.NVarChar)
comSQL.Parameters("@person_firname").Value = "%"+TextBox2.Text+"%"
comSQL.Parameters.Add("@person_secname", SqlDbType.NVarChar)
comSQL.Parameters("@person_secname").Value = "%"+TextBox3.Text+"%"
comSQL.Parameters.Add("@person_birthday", SqlDbType.DateTime)
comSQL.Parameters("@person_birthday").Value=TextBox4.Text!=string.Empty ? (object)Convert.ToDateTime(TextBox4.Text) : DBNull.Value;
сорри за суржик
Надеюсь - идею Вы уловили...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
запрос с участием даты
    #35833155
ecoli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не совсем понял, что Вы имели ввиду.
Попробовал сделать проверку на пустую строку через условие if
но все равно не выходит, ругается если дата не заполнена ((
Есть еще мысли?
...
Рейтинг: 0 / 0
запрос с участием даты
    #35833337
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ecoli
попробуйте так:
Код: plaintext
select ... form personperiodic where ... and ISNULL(@person_birthday, person_birthday) = person_birthday
а перед передачей параметра смотрите, если дата пустая, то DBNull.Value , если нет - значение.
...
Рейтинг: 0 / 0
запрос с участием даты
    #35834535
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ecoli
через условие if

Код: plaintext
1.
2.
3.
4.
5.
comSQL.Parameters.Add("@person_birthday", SqlDbType.DateTime)
if(TextBox4.Text!=string.Empty)
  comSQL.Parameters("@person_birthday").Value=Convert.ToDateTime(TextBox4.Text);
else
  comSQL.Parameters("@person_birthday").Value=DBNull.Value;
???
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
запрос с участием даты
    #35835333
ecoli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Ex_Soft thanks,
сработало, мое почтение за толерантность и выдержку ))
Думаю что это не пследний мой вопрос здесь )))

Спасибо всем остальным, все работает!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / запрос с участием даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]