Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.51 MB
Время: 0.027 c
4-1092727347
BiN
2004-08-17 11:22
2004.09.26
Перенаправление вывода с десктопа Default на произвольное DC


14-1094235016
Verg
2004-09-03 22:10
2004.09.26
Я плачу....


1-1094797030
Квэнди
2004-09-10 10:17
2004.09.26
Заголовок StringGrida


1-1094643691
clampo
2004-09-08 15:41
2004.09.26
Нумерация строк в ListBox-е


1-1094599162
Jetus
2004-09-08 03:19
2004.09.26
MSI и Delphi