Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

оцените код , и оптемезуйте [D7, mdb]


Cranky ©   (2004-07-07 15:20:00) 

procedure TForm1.Button1Click(Sender: TObject);
var
id1,id2,id3:integer;
begin
if not printers.Locate('printer',Edit1.Text,[loCaseInsensitive])
 then
 begin
 printers.Insert;
 printers.FieldValues['printer']:=Edit1.Text;
 printers.Post;
 id1:=printers.FieldValues['id'];
 end else  id1:=printers.FieldValues['id'];

if not host.Locate('host',Edit2.Text,[loCaseInsensitive])
 then
 begin
 host.Insert;
 host.FieldValues['host']:=Edit2.Text;
 host.Post;
 id2:=host.FieldValues['id'];
 end else   id2:=host.FieldValues['id'];

if not users.Locate('user',Edit3.Text,[loCaseInsensitive])
 then
 begin
 users.Insert;
 users.FieldValues['user']:=Edit3.Text;
 users.Post;
 id3:=users.FieldValues['id'];
 end else   id3:=users.FieldValues['id'];

 Log.Insert;
 log.FieldValues['printer']:=id1;
 log.FieldValues['host']:=id2;
 log.FieldValues['user']:=id3;
 log.FieldValues['tip']:=Edit4.Text;
 log.FieldValues['name']:=Edit5.Text;
 log.FieldValues['page']:=strtoint(Edit6.Text);
 log.Post;
end;


Sandman25   (2004-07-07 17:03:00) [1]

-Доктор, меня все игрнорируют.
-Следующий


Cranky   (2004-07-07 17:01:00) [2]

але тогда при смене полей нужно Active:=false и Active:=true делать


Cranky   (2004-07-07 16:42:00) [3]

пример плизз вот етого

Там ИМХО можно вообще обойтись тремя вызовами одной процедуры. Только DataSet и имена полей/значения передавать.


jack128   (2004-07-07 15:45:00) [4]


> Там ИМХО можно вообще обойтись тремя вызовами одной процедуры.
> Только DataSet и имена полей/значения передавать
ну да. Это и имелось в виду. код же один к одному...


Sandman25   (2004-07-07 15:38:00) [5]

[9] jack128 ©   (07.07.04 15:36)

Там ИМХО можно вообще обойтись тремя вызовами одной процедуры. Только DataSet и имена полей/значения передавать.


jack128   (2004-07-07 15:36:00) [6]

условия
> if not printers.Locate('printer',Edit1.Text,[loCaseInsensitive])
>  then
> ...
> end


> if not host.Locate('host',Edit2.Text,[loCaseInsensitive])
>  then
>  ....
> end


> if not users.Locate('user',Edit3.Text,[loCaseInsensitive])
>  then
>  ...
> end;

лудше вынести в отдельную процедуру...


Sandman25   (2004-07-07 15:35:00) [7]

вот блин, я попался...


Соловьев   (2004-07-07 15:34:00) [8]

Во народ пошел. Наглый блин....


bushmen   (2004-07-07 15:33:00) [9]

> Cranky   (07.07.04 15:20)  

Не надо плодить топики, тем более под разными именами:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1089007411&n=1


Johnmen   (2004-07-07 15:28:00) [10]

>оцените код ,

Цена близка к 0

>и оптемезуйте

Зачем ? Сколько платишь ?
:)


Sandman25   (2004-07-07 15:27:00) [11]

[2] Anatoly Podgoretsky ©   (07.07.04 15:26)

Оптемезовать, там же написано :)


Anatoly Podgoretsky   (2004-07-07 15:26:00) [12]

Что мы должны сделать?


Sandman25   (2004-07-07 15:26:00) [13]

Строка id1:=printers.FieldValues['id'] должна быть вынесена из if, чтобы не дублироваться.


Sandman25   (2004-07-07 15:25:00) [14]

Все неправильно :)


PrinterName := Trim(Edit2.Text);
...
printers.Insert;
try
  printers.FieldByName('printer').AsString := PrinterName;
  printers.Post;
except
  printers.Cancel;
  raise
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо