Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 512

/ вопрос открыт /

Здравствуйте, уважаемые светлые головы, отцы и благодетели!
Снова обращаюсь к вам с воплем о помощи. Проблема:
Есть в таблице два поля с датами (Начало заболевания и окончание болезни).
Вопрос:
Как написать запрос на выборку персон, которые болели в указанную,например в Edit, дату.
Заранее очень признательна!

marinochka_m Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: marinochka_m (статус: Посетитель)
Вопрос отправлен: 18 августа 2010, 22:25
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 20 августа 2010, 19:02; участников в обсуждении: 3.
IlluminatI

IlluminatI (статус: 2-ой класс), 19 августа 2010, 10:04 [#1]:

Я так понимаю SQL? Допустим таблица имеет такой вид:
+-------+----------+----------+
| name  | start    | finish   |
+-------+----------+----------+
| first | 12.01.05 | 22.01.05 |
+-------+----------+----------+
| second| 15.06.08 | 24.06.08 |
+-----------------------------+
Тогда запрос будет таким:
SELECT `name` FROM `tabl` WHERE (`start`='Edit1.Text' AND `finish`=Edit2.Text)
Вадим К

Вадим К (статус: Академик), 19 августа 2010, 10:24 [#2]:

to IlluminatI:
и если человек болел два дня и более, то ... то ничего не будет выбрано.
Запрос как минимум должен выглядеть так
QueryXXX.SQL.Text := 'SELECT `name` FROM `tabl` WHERE (`start`<='+Edit1.Text+' AND `finish`>='+Edit1.Text+')'
правда нужно что бы дата в Edit1 была записана как нужно. и поля start и finish были типа "дата", а не типа "строка".
Галочка "подтверждения прочтения" - вселенское зло.
IlluminatI

IlluminatI (статус: 2-ой класс), 19 августа 2010, 10:33 [#3]:

упс, извиняюсь :) просмотрел знаки :)
marinochka_m

marinochka_m (статус: Посетитель), 20 августа 2010, 18:49 [#4]:

Спасибо за помощь,но...Уважаемый Вадим К, а разве не будет сообщения о несовместимости типов (я имею ввиду 'start' типа дата и Edit типа строка.)?
Я промучалась с этим вопросом два дня, и единственное до чего додумалась, это такой монстроподобный код:

procedure Tfrm_Find.btn_1Click(Sender: TObject);
var
  s:string;
begin
 if frm_Find.Caption='Поиск отсутствующих' then
  begin  //Во вспомогательное поле таблицы ставлю значение
    fDM.tbl_Otsutctvie.First;
    while not fDM.tbl_Otsutctvie.Eof do
     begin
       if (fDM.tbl_Otsutctvie['Отсутствовал_с']>=cal1.Date) and (fDM.tbl_Otsutctvie['По']<=cal1.Date)then
        begin
          fDM.tbl_Otsutctvie.Edit;
          fDM.tbl_Otsutctvie['D']:='1';
          fDM.tbl_Otsutctvie.Post;
        end;
          fDM.tbl_Otsutctvie.Next;
     end;
   //Делаю выборку по вспомогательному полю<a href="https://www.delphi-int.ru/user/192/" style="color: black;
text-decoration: none;">Вадим К</a>: 
    s:='SELECT Взвод,Фамилия,Отсутствовал_с,По,Причина  FROM Glavn,Otsutctvie '+
       'WHERE (Glavn.Ключ=Otsutctvie.Кадет)AND '+
       '(D="1")';
  end
  else

Но самое смешное, что и он не работает. То есть во вспомогательное поле таблицы не вставляется значение. Буду очень признательна Вам за консультацию.
Вадим К

Вадим К (статус: Академик), 20 августа 2010, 19:02 [#5]:

по поводу совместимости. в Edit нужно вписывать строковое представление даты. тогда запрос будет работать. в sql иначе дату не вставишь, кроме как текстом.
Но вот как вставлять? если это был бы ms access через ADO, то вставляют так
#mm/dd/yyyy#
да, именно с решетками, и вначале месяц, потом число и год.

Код вроде правдоподобный, но нужно разбираться. Рекомендую Вам сделать примитивное логирование и жизнь станет проще. В данном случае я бы наверно делал так - поставил на форму Memo1, а в коде писал что то вида
Memo1.lines.add('контрольная точка 1 пройдена');
Memo1.lines.add('i= '+ inttostr(i));
и тому подобное. думаю быстро найдете все ответы.

О том, что в делфи ещё есть отладчик... я молчу:)
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:49
Выполнено за 0.05 сек.