Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.13;
Скачать: CL | DM;

Вниз

Надо быстрее.   Найти похожие ветки 

 
gestern   (2003-12-13 18:20) [0]

Подскажите как ускорить работу процедуры? Текст привожу полностью. Поясню: таблица отвечает за запись пациентоа в 12 разных кабинетах клиники.
Поля:id
dok-фамилия доктора
chislo- дата записи
vremya-время записи
appar-апарат с помощью которого производится лечение
После того как запись вставлена нужно посмотреть не занят ли доктор в это время, и не занят ли апарат. Я соченил для этого такое:
procedure TForm1.IBDataSet1AfterPost(DataSet: TDataSet);
var
sql,oldsql:string;
begin
oldsql:=IBDataset1.SelectSQL.Text;//запоминаю старый запрос
sql:="SELECT * from SOTIS where (id<>"""+inttostr(ibdataset1id.AsInteger)+""")and (DOK="""+IBDataSet1dok.AsString+""") and (chislo="""+datetostr(IBDataSet1chislo.AsDateTime)+ """) and (vremya="""+timetostr(IBDataSet1vremya.AsDateTime)+ """)";//проверяю занят ли доктор
IBDataset1.Close;
IBDataset1.SelectSQL.Clear;
IBDataset1.SelectSQL.Add(sql);
IBDataset1.Open;
IBDataset1.First;
if ibdataset1.RecordCount > 0 then // значит занят...
begin
dbgrid6.columns[11].Visible:=true;//вывожу поле с названием кабинета где работает доктор (где он занят)
dbgrid6.Columns[11].Width:=100;
showmessage("Врач в это время занят");
end;
dbgrid6.columns[11].Visible:=false;//прячу поле
//тоже самое для апарата
sql:="SELECT * from SOTIS where (id<>"""+inttostr(ibdataset1id.AsInteger)+""")and(APPAR="""+IBDataSet1APPAR.AsString+""") and (chislo="""+datetostr(IBDataSet1chislo.AsDateTime)+ """) and (vremya="""+timetostr(IBDataSet1vremya.AsDateTime)+ """)";
IBDataset1.Close;
IBDataset1.SelectSQL.Clear;
IBDataset1.SelectSQL.Add(sql);
IBDataset1.Open;
IBDataset1.First;
if ibdataset1.RecordCount > 0 then
begin
showmessage("В это время апарат занят");
end;
//
IBDataset1.Close;
IBDataset1.SelectSQL.Clear;
IBDataset1.SelectSQL.Add(oldsql);//вывожу грид в начальном виде
IBDataset1.Open;
IBDataset1.First;
end;


 
gestern ©   (2003-12-13 20:45) [1]

ау......


 
Mike_Goblin ©   (2003-12-13 21:46) [2]

Начнем пожалуй
1)
>Поясню: таблица отвечает за запись пациентоа в 12 разных >кабинетах клиники.
А если кабинетов будет 5 или 16, от этого что-то изменится?
2)
>После того как запись вставлена нужно посмотреть не занят ли >доктор в это время, и не занят ли апарат
То есть мы записались на прием, а потом смотрим, а может ли доктор нас принять? странная логика, однако.

3) Стоит задуматься о том, что случиться если вдруг возникнет ошибка при выполнении процедуры. Как минимум текст страрого запроса не будет восстановлен

4)"SELECT * from SOTIS where ....
а затем
if ibdataset1.RecordCount > 0
вопрос, а нафига выбирать ВСЕ поля и зачем вообще их выбирать

В общем плохо продумана логика работы
1. Продумать логику
2. Провести оптимизацию SQL запросов, а еще лучше задуматься о необходимости хранимой процедуры


 
JibSkeart ©   (2003-12-14 11:11) [3]

Вообщем все правильно сказали
но я всетаки за то чтобы подобные веши "заворачивать"
в сп



Страницы: 1 вся ветка

Текущий архив: 2004.01.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
1-37606
MadAngel
2003-12-28 19:19
2004.01.13
Какая то проблема со шрифтами в RichEdit


3-37568
CraKer
2003-12-14 00:03
2004.01.13
Filter не делается по значениям с пробелом...


1-37795
UNick
2003-12-29 12:27
2004.01.13
Как сделать, чтобы исполнялось нажатие клавиши в OnChange


1-37687
rel_
2003-12-26 10:55
2004.01.13
Последние используемые файлы


14-37928
Agent[007]
2003-12-20 16:55
2004.01.13
СРОЧНО! У МЕНЯ 22 ДЕКАБРЯ ЭКЗАМЕН ПО ГЕОМЕТРИИ!