Главная страница
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.013 c
2-1255599480
ford
2009-10-15 13:38
2009.11.29
Получить последнюю папку из пути


15-1254309667
VladOfMonster
2009-09-30 15:21
2009.11.29
Скины для программы


2-1255634244
Drowsy
2009-10-15 23:17
2009.11.29
Представление (View) и процедура выбора.


2-1255541991
user1991
2009-10-14 21:39
2009.11.29
try .. finally .. end. Помогите разобраться


2-1255437491
alkul93
2009-10-13 16:38
2009.11.29
Сложная задача