![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Визуальное отбражение кода
Nutz © (2009-10-12 18:48:00)дайте совет, Как код будет смотреться лучше
так:
(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;
sniknik (2009-10-12 20:46:00) [1]> Не вчитываясь вижу, что в (1) дублируется запрос это плохо.
не вчитываясь, не вижу параметров, это ваще отстой...
Kolan (2009-10-12 20:43:00) [2]Не вчитываясь вижу, что в (1) дублируется запрос это плохо.
KilkennyCat (2009-10-12 19:31:00) [3]Мне бы твои проблемы.