Запрос 100% правильный. Нужно грамотно сделать выборку. Типа:
PHP код:
function Tdatamodule_Connection.FindByField(const FieldName,
FieldValue: string): Integer;
begin
Result := -1;
if ConnectionStatus = csConnected then
begin
// cmp_Query_.SQL.Text := Format('SELECT * FROM ITEM WHERE %s = %s', [FieldName, FieldValue]);
cmp_Query_.Close;
cmp_Query_.SQL.Text := 'SELECT * FROM ITEM WHERE ' + FieldName + ' = :FieldValue';
if not cmp_Query_.Prepared then
cmp_Query_.Prepare;
if что-то then // может быть проверять тип поля (числовой или текстовый, и как нибудь по другому)
cmp_Query_.ParamByName('FieldValue').AsInteger := StrToInt(FieldValue)
else
cmp_Query_.ParamByName('FieldValue').AsString := FieldValue;
cmp_Query_.ExecSQL;
Result := cmp_Query_.RowsAffected;
end;
FSelectedByKey := False;
end;