Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

Запрос 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.033 c
1-1094628544
TUser
2004-09-08 11:29
2004.09.26
После конструктора


14-1094744277
X9
2004-09-09 19:37
2004.09.26
Справка по Opera


14-1094302969
_silver
2004-09-04 17:02
2004.09.26
ping


1-1094620803
StarCon
2004-09-08 09:20
2004.09.26
порядковый номер строки в дб гриде


1-1094676387
Паша555
2004-09-09 00:46
2004.09.26
Узнать Дату





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский