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

Вниз

Визуальное отбражение кода   Найти похожие ветки 

 
Nutz   (2009-10-12 18:48) [0]

дайте совет, Как код будет смотреться лучше

так:

(1)


function Tdatamodule_Connection.FindByField2(const FieldName,
 FieldValue: string; Where: Integer): Integer;
var
 No: Integer;
 sSQL: string;
begin
 Result := -1;

 if ConnectionStatus = csConnected then
 begin
   SelectionStatus := ssByField;
   try
     if not IsTryField(FieldName, No) then
       raise Exception.CreateResFmt(@const_msg_InvalidFieldName, [FieldName]);
     case Where of

       W_ITEMS:
         sSQL := Format("SELECT * FROM Item WHERE (%s = %s) AND (group_id <> 0) AND (flags <> 1) ORDER BY group_id",
           [FieldName, StrToFieldType(FieldName, FieldValue)]);

       W_SECTIONS:
         sSQL := Format("SELECT * FROM Item WHERE (%s = %s) AND (group_id = 0) AND (flags <> 1) ORDER BY group_id",
           [FieldName, StrToFieldType(FieldName, FieldValue)]);

       W_ITEMS_AND_SECTIONS:
         sSQL := Format("SELECT * FROM Item WHERE (%s = %s) AND (flags <> 1) ORDER BY group_id",
           [FieldName, StrToFieldType(FieldName, FieldValue)]);

       else
         raise Exception.CreateResFmt(@const_msg_InvalidWhereParam, [Where]);

     end;
     cmp_QueryByField_.SQL.Text := sSQL;
     cmp_QueryByField_.Open;
     Result := cmp_QueryByField_.RowsAffected;
   except
     on E: Exception do
       LastMsgError := E.Message;
   end;
 end
 else
   LastMsgError := LoadResString(@const_msg_ConnectionNotExists);
end;


или так:

(2)


function Tdatamodule_Connection.FindByField2(const FieldName,
 FieldValue: string; Where: Integer): Integer;
var
 No: Integer;
 sSQL: string;
begin
 Result := -1;
 if ConnectionStatus = csConnected then
 begin
   SelectionStatus := ssByField;
   try
     if not IsTryField(FieldName, No) then
       raise Exception.CreateResFmt(@const_msg_InvalidFieldName, [FieldName]);
     case Where of

       W_ITEMS:
         sSQL := "AND (group_id <> 0)",
           [FieldName, StrToFieldType(FieldName, FieldValue)]);

       W_SECTIONS:
         sSQL := "AND (group_id = 0)";

       W_ITEMS_AND_SECTIONS:
         sSQL := "";

       else
         raise Exception.CreateResFmt(@const_msg_InvalidWhereParam, [Where]);

     end;
     cmp_QueryByField_.SQL.Text := Format("SELECT * FROM Item WHERE (%s = %s) %s AND (flags <> 1) ORDER BY group_id",
       [FieldName, StrToFieldType(FieldName, FieldValue), sSQL])
     cmp_QueryByField_.Open;
     Result := cmp_QueryByField_.RowsAffected;
   except
     on E: Exception do
       LastMsgError := E.Message;
   end;
 end
 else
   LastMsgError := LoadResString(@const_msg_ConnectionNotExists);
end;


 
KilkennyCat ©   (2009-10-12 19:31) [1]

Мне бы твои проблемы.


 
Kolan ©   (2009-10-12 20:43) [2]

Не вчитываясь вижу, что в (1) дублируется запрос это плохо.


 
sniknik ©   (2009-10-12 20:46) [3]

> Не вчитываясь вижу, что в (1) дублируется запрос это плохо.
не вчитываясь, не вижу параметров, это ваще отстой...



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

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

Наверх




Память: 0.48 MB
Время: 0.008 c
15-1254496978
Германн
2009-10-02 19:22
2009.11.29
Название контакта датчика


15-1254234150
Частный инвестор
2009-09-29 18:22
2009.11.29
Идеи для бизнеса


15-1254378020
RWolf
2009-10-01 10:20
2009.11.29
Инструменты для ведения лога обращений к памяти


15-1254385969
Franzy
2009-10-01 12:32
2009.11.29
Отключить дебаггер!


15-1254244818
tesseract
2009-09-29 21:20
2009.11.29
литература по posix