Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Большая работа (клиентское приложение для больницы), много вопросов  (Прочитано 11870 раз)
0 Пользователей и 1 Гость смотрят эту тему.
СвоЕобразнаЯ
Участник

ru
Offline Offline

« : 23-10-2010 18:00 » 

Всем Привет! Жду...
У меня задание создать клиентское положение для больницы. Программа сложная, трудности начались с самого начала :weep1:Возможно вопросов будет много. Но пока что только 1.
По щелчку в DBGrid (там отображается ФИО пациентов) в Memo должен отображаться адрес и телефон этого пациента.
Вот
Код:
procedure TForm1.DBGrid2CellClick(Column: TColumn);
begin
ADOQuery5.Active:=False;
ADOQuery5.Close;
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('SELECT * FROM Patient');
ADOQuery5.Open;
ADOQuery5.Active:=True;
Memo4.Lines.Add(ADOQuery5.FieldByName('Sity').AsString);
Memo4.Lines.Add(ADOQuery5.FieldByName('Street').AsString);
Memo4.Lines.Add(ADOQuery5.FieldByName('Home').AsString);
Memo4.Lines.Add(ADOQuery5.FieldByName('Kv').AsString);
Memo4.Lines.Add(ADOQuery5.FieldByName('P_Kont_Phone').AsString);
end;
Но у меня отображается в Memo только запись которая в акцессе в таблице первая записана. А их там 25 штук разных адресов, при каждом щелчке на другом пациенте должен отбражаться его адрес. Что делать?  Жаль
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 23-10-2010 18:13 » 

Могу только предположить...

По шелчку нужно получить id пациента из колонки
а след. строчку записать
ADOQuery5.SQL.Add('SELECT * FROM Patient where id= :ColumnId');
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
СвоЕобразнаЯ
Участник

ru
Offline Offline

« Ответ #2 : 23-10-2010 18:28 » 

Просто в БД 4 связанных между собой таблицы... может изза этого...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 23-10-2010 18:37 » 

смотри...
Ты заполняешь грид, я не знаю как, щелкая на строке грида, ты должна сопоставить id выбранной строки с таблицей пациентов.

например, заполняем грид
select pacient.id, pacient.fio, history id
from pacient, history
where pacient.id=history.id

по шелчку выбираем значение столбца pacient.id  в columnid, а затем

ADOQuery5.SQL.Add('SELECT * FROM Patient where id= :ColumnId');
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
СвоЕобразнаЯ
Участник

ru
Offline Offline

« Ответ #4 : 23-10-2010 18:52 » 

Большое спасибо! Улыбаюсь
Записан
СвоЕобразнаЯ
Участник

ru
Offline Offline

« Ответ #5 : 24-10-2010 08:41 » 

С этим справились. Настигла ещё одна проблема.  :(По заданию нужно заносить из Edit'ов и Memo'в в таблицу в Акцессе всё что доктор туда напишет, а также ID доктора и пациента. В БД 4 связанные таблицы (на картинке схема данных).
Как с ними работать мне никто не объяснял, погуглила, кое-что нашла, но конечно же ничего не работает.
Вот что у меня примерно получилось:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject); {зарегистрировать приём}
begin
ADOQuery4.Active:=False;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('INSERT INTO Visit');
ADOQuery4.SQL.Add('VisitDate, VisitTime,Resultat,Symptoms,Diagnos');
ADOQuery4.SQL.Add('VALUES("'+Edit2.Text+'", "'+Edit3.Text+'", "'+ComboBox1.SelText+'", "'+Memo1.Lines+'", "'+Memo2.Lines+'", "'+Memo3.Lines+'");
ADOQuery4.SQL.Add('WHERE (D.ID_Doctor=V.ID_Doctor) AND P.ID_Patient=V.ID_Patient');
ADOQuery4.ExecSQL;
end;
Подсвечивает "'+Memo1.Lines+'", говорит "Incompatible types: 'String' and 'TStrings' ". А у меня там ещё и ComboBox... Как эту процедуру правильно записать?  Не понял

* shema.png (21.31 Кб - загружено 796 раз.)
Записан
СвоЕобразнаЯ
Участник

ru
Offline Offline

« Ответ #6 : 24-10-2010 08:57 » 

Всё вместе

* Проектир_ИС_лаб.zip (436.09 Кб - загружено 751 раз.)
* Проектир_ИС_лаб.zip (436.09 Кб - загружено 706 раз.)
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #7 : 25-10-2010 15:16 » 

1. ComboBox1.SelText - это только выбранный (выделенный курсором или мышкой) текст, надо использовать свойство ComboBox1.Text.
2. Memo1.Lines - это массив строк, вам нужно получить его одной строкой, для это используется Memo1.Lines.Text.

но вообще хочу сказать, что подобный подход не является стандартным и используется в определённых ситуациях. почему вы отказались от использования DB-контролов, таких, как TDBMemo, TDBEdit? это на порядки уменьшит количество кода.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines