6 / 6 / 0
Регистрация: 20.02.2010
Сообщений: 44
|
||||||
1 | ||||||
Ошибка в запросе SQL20.09.2011, 17:31. Показов 1221. Ответов 9
Метки нет (Все метки)
Всем привет!
Есть база страхователей. Мне нужно вывести список тех людей, чей срок страхования заканчивается в определённый месяц текущего года.
Помогите кто знает в чём дело? Тип поля даты текстовый.
0
|
20.09.2011, 17:31 | |
Ответы с готовыми решениями:
9
Ошибка SQL запросе Ошибка в запросе SQL Ошибка в SQL запросе Ошибка в SQL-запросе |
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
|
20.09.2011, 17:51 | 3 |
Так (LIKE) с датой работать нельзя - либо переводите ее в стринг (Cast) и тогда пожалуйста обращайтесь с нею как со строкой, либо используйте фичи скл (EXTRACT, MONTH, etc - точно сказать нельзя ибо сервер у партизан как всегда засекречен)
0
|
6 / 6 / 0
Регистрация: 20.02.2010
Сообщений: 44
|
|
20.09.2011, 18:08 [ТС] | 4 |
если написать так, то всё работает:
DataModule1.ADOQuery1.SQL.Add('SELECT * FROM FIO, POLIS WHERE Код = № and Конец LIKE "%.01.%";'); значет ошибка с добавлением переменной god. как её правильно подсоединить? тип даты у меня в таблице текстовый.
0
|
6 / 6 / 0
Регистрация: 20.02.2010
Сообщений: 44
|
|
20.09.2011, 18:36 [ТС] | 6 |
А так вообще ни кого не находит
DataModule1.ADOQuery1.SQL.Add('SELECT * FROM FIO, POLIS WHERE Код = № and Конец LIKE "%.01.+god"';
0
|
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
|
20.09.2011, 18:40 | 7 |
Ну если еще развести костер, шарахнуть пару раз в бубен и потрясти бородой сдохшего козла, то точно что-нибудь получится
0
|
6 / 6 / 0
Регистрация: 20.02.2010
Сообщений: 44
|
|
20.09.2011, 19:59 [ТС] | 9 |
Всё. Всем спасибо!
Ситуацию разрешил следующим образом: procedure TForm1.ComboBox2Click(Sender: TObject); var god, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12: string; begin god:= copy(StatusBar1.Panels[0].Text, 15, 4)+'";'; if ComboBox2.ItemIndex = 0 then begin m1:= 'SELECT * FROM FIO, POLIS WHERE Код = № and Конец LIKE "%.01.'+god; DataModule1.ADOQuery1.Active:= false; DataModule1.ADOQuery1.SQL.Clear; DataModule1.ADOQuery1.SQL.Add(m1); DataModule1.ADOQuery1.Active:= true; DBGrid1.SetFocus; end; if ComboBox2.ItemIndex = 1 then begin То есть в запрос передаю уже подготовленную текстовую переменную. Как вам такой вариант?
0
|
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
|||||||||||
21.09.2011, 12:03 | 10 | ||||||||||
Образцы - строки нужно брать в кавычки, а имена полей на кириллице (повбывав бы !) или содержащие пробелы - в кавычки или бракеты.
Ну и вообще-то реальные пацаны всегда код, где идет обращение к базе (у Вас это строка ADOQuery1.Active := True), защищают конструкцией try except. И еще это... Во избежание громоздкости кода в данном случае вполне допустимо использование with В общем как-то так:
Ах, да, сам запрос:
0
|
21.09.2011, 12:03 | |
21.09.2011, 12:03 | |
Помогаю со студенческими работами здесь
10
Ошибка в sql-запросе Ошибка в SQL запросе Ошибка в Sql запросе Ошибка в SQL запросе Ошибка при запросе в SQL Где ошибка в sql-запросе? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |