Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
1-37743
alexnmsk
2003-12-30 09:19
2004.01.13
Изменение размера формы


3-37569
bon
2003-12-15 10:43
2004.01.13
Query


1-37638
Эли
2003-12-27 13:20
2004.01.13
Добавить иконку в EXE файл


1-37608
mik_1
2003-12-28 18:29
2004.01.13
прерывание исполнения программы


1-37763
miracle_fox
2003-12-29 17:00
2004.01.13
клавиша <enter> в Edit - как придать ей особое значение?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский