Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.007 c
4-1223938181
Ruzzz
2008-10-14 02:49
2009.11.29
как "ловить мышку" после ответа HTCAPTION на WM_NCHITTEST


15-1254169806
Юрий
2009-09-29 00:30
2009.11.29
С днем рождения ! 29 сентября 2009 вторник


2-1255407175
TRSteep
2009-10-13 08:12
2009.11.29
большие числа


2-1255588435
RDen
2009-10-15 10:33
2009.11.29
LIKE в ADOQuery без учёта регистра


3-1230041769
ВованХ
2008-12-23 17:16
2009.11.29
Сортировка записей по текстовому полю в кириллице




   Наверх