Текущий архив: 2004.09.26;
Скачать: CL | DM;
ВнизЗапрос SQL в Делфи Найти похожие ветки
← →
Drozdov A (2004-08-30 09:36) [0]Уважаемые Мастера, помогите плиз составить запрос !
Есть таблица с данными.
Есть два поля квартал и год (kvar, god).
Мне нужно выбрать все те записи, которые удовлетворяют следующему условию: К примеру сегодня 30.08.04.
08 месяц - это 3 квартал. Так вот мне нужно выбрать все записи, которые в поле квартал равны 3 и соотвественно поле год = 04.
Также нужно выбирать записи 3-го квартала, если ещё 3 квартал не наступил за 15 дней. Т.е. если сегодня не 30 августа, а 16 июня.
← →
Ega23 © (2004-08-30 09:48) [1]
Select * from Table1
where god=Year(getdate()) and
kvar=((Month(gatdate())-1)/3)+1
← →
Drozdov A (2004-08-31 09:16) [2]В Квери Анализере у меня всё получилось...
Спасибо !
Но переношу этот код в ДЕЛФИ
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-31 09:23) [3]1. query2.Active:=True; - это лишнее, ты уже сделал Open.
2. По-моему ты скобку где-то пропустил.
3. Поставь breakpoint на Query2.Open и через Ctrl+F7 посмотри значение Query2.Sql.Text. Значение выложи сюда.
← →
KSergey © (2004-08-31 09:32) [4]> Query2.SQL.Add(" end ");
Это что такое и зачем??
← →
Drozdov A (2004-08-31 10:39) [5]> 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"
← →
Ega23 © (2004-08-31 11:11) [6]Может у тебя With какой-нибудь выше стоит?
← →
roottim © (2004-08-31 11:13) [7]а если
Form1.Query2.Sql.Text
← →
Ega23 © (2004-08-31 11:15) [8]Почему сразу Form1? Может DataModule?
← →
Drozdov A (2004-08-31 11:24) [9]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) [10]Да проще переменную определи s:string и ей присвой Sql.Text перед Open - тогда не будет проблем и ошибок (в прочтении). Ну а как текст получишь - так сам его смотри. Ну или сюда...
← →
Ega23 © (2004-08-31 11:27) [11]Попробуй
((sled_god < YEAR(GETDATE())) and (sled_kvar <> 0))
← →
Drozdov A (2004-08-31 11:39) [12]((sled_god < YEAR(GETDATE())) and (sled_kvar <> 0))
не прокатило, тоже самое...
а как скопировать значение точки останова
я после опена поставил
s:=Form1.Query2.Sql.Text;
ну и гляжу его...
там много писать надо...
а как скопировать ? Не подскажете ?
← →
Ega23 © (2004-08-31 11:48) [13]До опена поставь s:=Form1.Query2.Sql.Text;, на ней же - точку останова, дальше либо через Ctrl+F7, либо через WatchList->AddWatch
← →
Drozdov A (2004-08-31 11:55) [14]...нажимаю Ctrl+F7 пишет там
s:=Form1.Query2.Sql.Text (process not accessible)
← →
sniknik © (2004-08-31 11:59) [15]Drozdov A (31.08.04 11:55) [14]
переменную s (и всю операцию s:=Form1.Query2.Sql.Text) скорее всего выкинул оптимизатор, ты ее нигде больше не используеш, вот оно и не ставится.
отключи ее (оптимизацию), либо после гденибудь используй в полезном действии Label1.Caption:= s например.
← →
KSergey © (2004-08-31 12:35) [16]Короче, кинь Memo и Memo.Lines.Text := Query2.SQL.Text;
Вот и cкопируешь потом из Memo
← →
Drozdov A (2004-08-31 13:54) [17]вроде разобрался...
Сделал отдельный на форме ДБГРИД и новый ДАТАСОУРС с КВЕРИ и потом всё пошло.
Видать, шо-то у меня было не в порядке ранее с Датасоурсом, Квери или Дбгридом, но вот что это для меня непостижимо.
Всё-равно всем спасибо.
Страницы: 1 вся ветка
Текущий архив: 2004.09.26;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.037 c