Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2015, 16:19   #1
Антон444
 
Регистрация: 05.03.2015
Сообщений: 8
Стрелка Не получается сделать запрос

нужно сделать запрос. 1ая таблица- клиенты, 2ая - заказы. Нужно выбрать запись с ФИО клиента из 1ой таблицы, затем выбрать диапазон дат и нажать кнопку "ОК". Должен вывести список заказов ТОЛЬКО данного клиента в заданном диапазоне дат. Вот код, вылетает ошибка, что нет поля C_FIO в DSet1, подскажите плиз)

Код:
procedure TForm1.btn4Click(Sender: TObject);
var s1:string;
begin
DataModule2.DSet1.Close;
DataModule2.DSet1.SelectSQL.Clear;
DataModule2.DSet1.SelectSQL.Add ('select  Z_K_Code, C_FIO,  Date_pok from Clients  inner join  Zakazy on C_Code=Z_Code where s1=Z_K_FIO and Date_pok between :date1 and  :date2 ' );
s1:=DataModule2.DSet1.FieldByName('C_FIO').AsString;
DataModule2.DSet1.Params.ParamByName('date1').Value:=datetostr(datetimepicker1.date);
DataModule2.DSet1.Params.ParamByName('date2').Value:=datetostr(datetimepicker2.date);
DataModule2.DSet1.Open;
DBGrid1.Columns[0].Title.Caption:='Код клиента';
DBGrid1.Columns[1].Title.Caption:='ФИО клиента;
DBGrid1.Columns[2].Title.Caption:='Дата покупки';
end;
Антон444 вне форума Ответить с цитированием
Старый 07.03.2015, 16:46   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Молодец, из закрытого датасета извлечь значение поля это гениальный ход
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.03.2015, 17:10   #3
Антон444
 
Регистрация: 05.03.2015
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Молодец, из закрытого датасета извлечь значение поля это гениальный ход
исправил, пишет s1 неизвестно
Код:
var s1:string;
begin
s1:=DataModule2.DSet1.FieldByName('C_FIO').AsString;
DataModule2.DSet1.Close;
DataModule2.DSet1.SelectSQL.Clear;
DataModule2.DSet1.SelectSQL.Add ('select  Z_K_Code, C_FIO,  Date_pok from Clients  inner join  Zakazy on C_Code=Z_Code where s1=Z_K_FIO and Date_pok between :date1 and  :date2 ' );
DataModule2.DSet1.Params.ParamByName('date1').Value:=datetostr(datetimepicker1.date);
DataModule2.DSet1.Params.ParamByName('date2').Value:=datetostr(datetimepicker2.date);
DataModule2.DSet1.Open;
DBGrid1.Columns[0].Title.Caption:='Код клиента';
DBGrid1.Columns[1].Title.Caption:='ФИО';
DBGrid1.Columns[2].Title.Caption:='Дата покупки';
end;
Антон444 вне форума Ответить с цитированием
Старый 07.03.2015, 17:14   #4
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

надо самому писать, тогда s1 будет известно, а так надрали отовсюду вот и не получается.
lomastr_ вне форума Ответить с цитированием
Старый 08.03.2015, 14:19   #5
Антон444
 
Регистрация: 05.03.2015
Сообщений: 8
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
надо самому писать, тогда s1 будет известно, а так надрали отовсюду вот и не получается.
ты объясни по-русски, раз такой умный, че и где писать, я этот код сам писал

Последний раз редактировалось Антон444; 08.03.2015 в 14:21.
Антон444 вне форума Ответить с цитированием
Старый 08.03.2015, 16:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
я этот код сам писал
Тогда расскажи что такое s1 в этом коде.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.03.2015, 08:31   #7
Антон444
 
Регистрация: 05.03.2015
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тогда расскажи что такое s1 в этом коде.
s1 это переменная типа string, ты че слепой, написано же? ей я присваиваю значение ячейки(которую выбираю сам) в таблице "Клиенты", чтобы затем сравнить это значение со значениями в таблице "Заказы", и если такое ФИО есть то вывести записи с этим ФИО и его заказами в заданный промежуток времени...

Последний раз редактировалось Антон444; 09.03.2015 в 08:36.
Антон444 вне форума Ответить с цитированием
Старый 09.03.2015, 09:11   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
ты че слепой, написано же?
Я может и слепой, зато у меня под черепушкой есть кое что.
Итак. Ты описал в запросе некую s1, однако запрос - строка запроса, и s1 в ней не является параметром. Как описывать параметры судя по коду ты знаешь. Сразу возникает вопрос: Почему ты не написал так
Код:
var s1:string;
begin
...
DataModule2.DSet1.SelectSQL.Add ('select  Z_K_Code, C_FIO,  Date_pok from Clients  inner join  Zakazy on 
C_Code=Z_Code where :s1=Z_K_FIO and Date_pok between :date1 and  :date2 ' );
...
DataModule2.DSet1.Params.ParamByName('s1').Value:=s1;
...
end;
Видимо ты не понимаешь смысл параметризации запроса или не желаешь увидеть очевидные вещи. Так кто же из нас слеп?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.03.2015, 09:23   #9
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

если бы писал сам, да еще и с параметрами, то такого бы не пропустил
ну не возможно написать тут правильно а рядом бред, следовательно надрал без малейшего понятия что и как
lomastr_ вне форума Ответить с цитированием
Старый 09.03.2015, 10:14   #10
Антон444
 
Регистрация: 05.03.2015
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я может и слепой, зато у меня под черепушкой есть кое что.
Итак. Ты описал в запросе некую s1, однако запрос - строка запроса, и s1 в ней не является параметром. Как описывать параметры судя по коду ты знаешь. Сразу возникает вопрос: Почему ты не написал так
Код:
var s1:string;
begin
...
DataModule2.DSet1.SelectSQL.Add ('select  Z_K_Code, C_FIO,  Date_pok from Clients  inner join  Zakazy on 
C_Code=Z_Code where :s1=Z_K_FIO and Date_pok between :date1 and  :date2 ' );
...
DataModule2.DSet1.Params.ParamByName('s1').Value:=s1;
...
end;
Видимо ты не понимаешь смысл параметризации запроса или не желаешь увидеть очевидные вещи. Так кто же из нас слеп?
щас он выводит одну запись только

Последний раз редактировалось Антон444; 09.03.2015 в 10:23.
Антон444 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается написать запрос SAN-STR SQL, базы данных 7 29.09.2011 06:26
Не получается запрос lola_lola SQL, базы данных 7 12.02.2010 12:45
Не получается выполнить запрос artemavd БД в Delphi 14 06.08.2009 20:44
не получается запрос с inner join :mad: Только_Учусь SQL, базы данных 16 21.07.2008 09:40