![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос SQL в Делфи [D5, MSSQL]
Drozdov A © (2004-08-30 09:36:00)Уважаемые Мастера, помогите плиз составить запрос !
Есть таблица с данными.
Есть два поля квартал и год (kvar, god).
Мне нужно выбрать все те записи, которые удовлетворяют следующему условию: К примеру сегодня 30.08.04.
08 месяц - это 3 квартал. Так вот мне нужно выбрать все записи, которые в поле квартал равны 3 и соотвественно поле год = 04.
Также нужно выбирать записи 3-го квартала, если ещё 3 квартал не наступил за 15 дней. Т.е. если сегодня не 30 августа, а 16 июня.
Drozdov A (2004-08-31 13:54:00) [1]вроде разобрался...
Сделал отдельный на форме ДБГРИД и новый ДАТАСОУРС с КВЕРИ и потом всё пошло.
Видать, шо-то у меня было не в порядке ранее с Датасоурсом, Квери или Дбгридом, но вот что это для меня непостижимо.
Всё-равно всем спасибо.
KSergey (2004-08-31 12:35:00) [2]Короче, кинь Memo и Memo.Lines.Text := Query2.SQL.Text;
Вот и cкопируешь потом из Memo
sniknik (2004-08-31 11:59:00) [3]Drozdov A (31.08.04 11:55) [14]
переменную s (и всю операцию s:=Form1.Query2.Sql.Text) скорее всего выкинул оптимизатор, ты ее нигде больше не используеш, вот оно и не ставится.
отключи ее (оптимизацию), либо после гденибудь используй в полезном действии Label1.Caption:= s например.
Drozdov A (2004-08-31 11:55:00) [4]...нажимаю Ctrl+F7 пишет там
s:=Form1.Query2.Sql.Text (process not accessible)
Ega23 (2004-08-31 11:48:00) [5]До опена поставь s:=Form1.Query2.Sql.Text;, на ней же - точку останова, дальше либо через Ctrl+F7, либо через WatchList->AddWatch
Drozdov A (2004-08-31 11:39:00) [6]((sled_god < YEAR(GETDATE())) and (sled_kvar <> 0))
не прокатило, тоже самое...
а как скопировать значение точки останова
я после опена поставил
s:=Form1.Query2.Sql.Text;
ну и гляжу его...
там много писать надо...
а как скопировать ? Не подскажете ?
Ega23 (2004-08-31 11:27:00) [7]Попробуй
((sled_god < YEAR(GETDATE())) and (sled_kvar <> 0))
Drozdov A (2004-08-31 11:24:00) [8]WITH нет
Сократил свой запрос, но всё-равно ругаеца также...
Если убираю WHERE (sled_god < YEAR(GETDATE()) and sled_kvar <> 0) , то запрос выполняеца без проблем
procedure TForm1.Button2Click(Sender: TObject);
begin
Query2.close;
Query2.SQL.clear;
Query2.SQL.Add(' SELECT * ');
Query2.SQL.Add(' FROM Baza_Metro ');
Query2.SQL.Add(' WHERE (sled_god < YEAR(GETDATE()) and sled_kvar <> 0) ');
Query2.open;
Query2.First;
end;
Пробовал Form1.Query2.Sql.Text ставить
терь не понимает шо такое FORM1 ....
KSergey (2004-08-31 11:24:00) [9]Да проще переменную определи s:string и ей присвой Sql.Text перед Open - тогда не будет проблем и ошибок (в прочтении). Ну а как текст получишь - так сам его смотри. Ну или сюда...
Ega23 (2004-08-31 11:15:00) [10]Почему сразу Form1? Может DataModule?
roottim (2004-08-31 11:13:00) [11]а если
Form1.Query2.Sql.Text
Ega23 (2004-08-31 11:11:00) [12]Может у тебя With какой-нибудь выше стоит?
Drozdov A (2004-08-31 10:39:00) [13]> Query2.SQL.Add(' end ');
я убрал... ошибся
1. query2.Active:=True; - это лишнее, ты уже сделал Open.
- убрал
2. По-моему ты скобку где-то пропустил.
- проверял, вроде всё пучком...лишних нет
3. Поставь breakpoint на Query2.Open и через Ctrl+F7 посмотри значение Query2.Sql.Text. Значение выложи сюда.
- тут чуток загруз
поставил точку основа на Квери2.Опен, нажал Ctrl+F7 выдало мне окошко с заглавием Evaluate/Modify там в Expression я ввёл Query2.Sql.Text в Rezult мне выдало
Undeclared identifier: 'Query2'
KSergey (2004-08-31 09:32:00) [14]> Query2.SQL.Add(' end ');
Это что такое и зачем??
Ega23 (2004-08-31 09:23:00) [15]1. query2.Active:=True; - это лишнее, ты уже сделал Open.
2. По-моему ты скобку где-то пропустил.
3. Поставь breakpoint на Query2.Open и через Ctrl+F7 посмотри значение Query2.Sql.Text. Значение выложи сюда.
Drozdov A (2004-08-31 09:16:00) [16]В Квери Анализере у меня всё получилось...
Спасибо !
Но переношу этот код в ДЕЛФИ
Query2.close;
Query2.SQL.clear;
Query2.SQL.Add(' SELECT * ');
Query2.SQL.Add(' FROM Baza_Metro ');
Query2.SQL.Add(' WHERE (sled_god < YEAR(GETDATE()) ');
Query2.SQL.Add(' and sled_kvar <> 0) ');
Query2.SQL.Add(' or (sled_god = YEAR(GETDATE()) ');
Query2.SQL.Add(' and sled_kvar <= (MONTH(GETDATE()) - 1) / 3 + 1) ');
Query2.SQL.Add(' order by uchas, zav_nom ');
Query2.SQL.Add(' end ');
Query2.open;
query2.Active:=True;
Query2.First
и мне выдаёт ошибку..
'invalid use of keyword.
Token: YEAR(GETDATE())
Line Number: 3' Process stopped......
Ega23 (2004-08-30 09:48:00) [17]
Select * from Table1
where god=Year(getdate()) and
kvar=((Month(gatdate())-1)/3)+1