![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравсте я заполняю таблицу данными из бд через запрос
Код:
Query7.SQL.Clear;
Query7.SQL.Text:='select nisl,dv from N_ISL inner join Issp on n_isl.isl=issp.isl where uid='+
MTable1.FieldByName('uid').AsString+' and pri=5'+'and isl=1008'+'order by dv';
Query7.Open;
Table7.Edit;
Table7.Append;
Table7.FieldByName('Naim').AsString:=Query7.FieldByName('nisl').AsString;
if Query7.FieldByName('dv').AsDateTime<>0 then
Table7.FieldByName('Date1').AsDateTime:=Query7.FieldByName('dv').AsDateTime;
Query7.Next;
if Query7.FieldByName('dv').AsDateTime<>0 then
Table7.FieldByName('Date2').AsDateTime:=Query7.FieldByName('dv').AsDateTime;
Query7.Next;
if Query7.FieldByName('dv').AsDateTime<>0 then
Table7.FieldByName('Date3').AsDateTime:=Query7.FieldByName('dv').AsDateTime;
Query7.Next;
if Query7.FieldByName('dv').AsDateTime<>0 then
Table7.FieldByName('Date4').AsDateTime:=Query7.FieldByName('dv').AsDateTime;
Query7.Next;
Table7.Post;Таблица посещений. Когда выполняется программа по человеку у которого было всего 2 посещения таблица заполняется как на рисунке. В первые два поля заполняются два посещения этого человека а два последних поля заполняются датами 2 посещения. Как сделать так что если всего два посещения то остальные два поля были пустыми? |
|
#2
|
||||
|
||||
|
А не проще ли одним запросом это сделать? И не придется забор городить.
З.Ы. Про нормализацию БД слышали? |
|
#3
|
|||
|
|||
|
я не знаю как по другому сделать
|
|
#4
|
||||
|
||||
|
Подселектами. База какая?
|
|
#5
|
|||
|
|||
|
база firebird
|
|
#6
|
||||
|
||||
|
Если структура таблиц ваша и есть еще возможность вносить изменения, я бы вам настоятельно советовал отказаться от горизонтального расположения дат посещения. Если у вас будет посещений не 4, а 400? Вы как собираетесь это фиксировать? А такая посещаемость вполне возможна за несколько лет. Заведите отдельную табличку - скажем Талон(Пациент, ДатаПосещения, Врач) и тогда сколько угодно посещений врача пациентом у вас будет.
И еще совет. Называйте имена полей, таблиц удобочитаемыми именами. Ваши сокращения dv,nisl,issp через пол года вам и самому то непонятны станут. Последний раз редактировалось Страдалецъ, 10.07.2013 в 13:31. |