Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Проблемка с запросами

Автор: dron4ik 30.11.2010 20:06

Имееться две таблицы:
1)Услуги оказанные гражданам, со след полями:
а)Код оказанных услуг
б)Код услуги
в)Соц номер
г)Код оргнизации-исполнителя
д)Дата зявления
е)Дата исполнения

2)Организация-исполнитель, со след полями:
а)Код организации-исполнителя
б)Наименование организации-исполнителя

Нужно выполнить запрос--Выявить наимен-ие органи-ии - исполнителя, оказавших соц помощь после конкретного числа..
Готовый запрос у мя есть, который работает в dbExplor---Select DISTRINCT Organ_ispol.naimen_organ, uslu_ok_gra.data_isp From organ_ispol INNNER JOIN uslu_ok_gra ON organ_ispol.kod_organ=uslu_ok_gra.kod_organ Where uslu_ok_gra.data_isp>'21.02.2007'
Но он не будет работать в Delphi.
Сначала я поместил на форму компоненты--Query1, Query2(для своих 2 табл)поместил компоненты DataSource1, DbGrid1 и поместил кнопку..в ней и будет выполняться запрос, а результ запроса отобразиться в DBGrid.А как сделать запрос я не знаю..((

Автор: volvo 30.11.2010 20:18

Цитата
А как сделать запрос я не знаю..((

Обычно
Query1.Active := False;
Query1.SQL.Text := 'текст запроса';
Query1.Active := True;
по нажатию кнопки...

Автор: dron4ik 30.11.2010 20:19

smile.gif а что содержиться в тескте запроса..я не могу написать правильно..

Добавлено через 1 мин.
тем более в запросе участвуют две таблицы(

Автор: volvo 30.11.2010 21:06

Цитата
тем более в запросе участвуют две таблицы(
А какая разница? Хоть 5.

Query1.Active := False;
with Query1.SQL do
begin
Clear;
Add('Select DISTRINCT Organ_ispol.naimen_organ, uslu_ok_gra.data_isp ');
Add('From organ_ispol INNER JOIN uslu_ok_gra ');
Add('ON organ_ispol.kod_organ=uslu_ok_gra.kod_organ ');
Add('Where uslu_ok_gra.data_isp > ' + QuotedStr('21.02.2007'));
end;
Query1.Active := True;


Автор: dron4ik 30.11.2010 21:28

хм...я не так сделал..

Query1.Close;
Query1.SQL.Text := 'Select Organ_ispol.naimen_organ, uslu_ok_gra.data_isp From organ_ispol INNNER JOIN uslu_ok_gra ON organ_ispol.kod_organ=uslu_ok_gra.kod_organ Where uslu_ok_gra.data_isp >"10.05.1999"';
Query1.Open;


Добавлено через 1 мин.
а вот такой запрос не поместился в одну строку--
Query3.SQL.Text :='Select chelovek1,* From chelovek1, mesto_rab, Dok_lgot WHERE chelovek1.Kod_predp=mesto_rab.kod_predp AND chelovek1.Soc_nom=Dok_lgot.Soc_nom AND mesto_rab.kod_predp=1 AND Dok_lgot.kod_kategor=1 AND "20.02.1998" dok_lgot.data_nach_dei AND dok_lgot.data_okon_dei';

Автор: dron4ik 30.11.2010 21:56

Проблема решена..но хотелось бы чтобы можно было ввести дату(т.е. Выявить наимен-ие органи-ии - исполнителя, оказавших соц помощь после ВВЕДЕНОГО числа..)в какое нибудь поле..а как это сделать?)

Автор: Client 30.11.2010 22:48

нужно поле - добавь его в селект запрос
в чем проблема?

Автор: dron4ik 30.11.2010 22:50

синтаксис не знаю(

Добавлено через 1 мин.

Query1.SQL.Text := 'Select  Organ_ispol.naimen_organ, uslu_ok_gra.data_isp From organ_ispol INNNER JOIN uslu_ok_gra ON organ_ispol.kod_organ=uslu_ok_gra.kod_organ Where uslu_ok_gra.data_isp' > Edit1.Text='';--такое написал..жалуется на типы

Автор: Client 30.11.2010 23:01

ну тогда учи запросы
http://www.sql-tutorial.ru/

Автор: dron4ik 30.11.2010 23:06

мдаа..проблема не в запросе проблема..в добавлении Edit'а.

Автор: Client 30.11.2010 23:12

Код
Where uslu_ok_gra.data_isp =' +Edit1.Text;

попробуй так, проверять не на чем
или через параметр сделай, ты же хочешь что ввел в эдит, то и найти?

Автор: dron4ik 30.11.2010 23:13

да, что ввел то и найти, но без всяких проверк типа..если есть такое то, если нету то...

Автор: Client 30.11.2010 23:16

Цитата
но без всяких проверк типа

ты про какую проверку?? если у тебя поле числовое а передашь строку - то конечно будет ошибка.

Автор: dron4ik 30.11.2010 23:20

вообщем компилится нормально..ввожу в едит 12.05.1999
и нажимаю кнопку чтоб выполнить запрос и выскакивает такое



Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Client 30.11.2010 23:27

закинь проект с базой
у меня сейчас даже базы нет готовой чтоб проверять

Автор: volvo 30.11.2010 23:49

А вот так:

Query1.SQL.Text := 'Select  Organ_ispol.naimen_organ, uslu_ok_gra.data_isp From organ_ispol INNNER JOIN uslu_ok_gra'+
' ON organ_ispol.kod_organ=uslu_ok_gra.kod_organ Where uslu_ok_gra.data_isp > "' + Edit1.Text + '"';
?

P.S. Почему ты упорно пишешь INNNER с тремя N ???

Автор: dron4ik 30.11.2010 23:55

потому что я добиваюсь свое цели..))шучу...исправил)