. Я пытаюсь найти строку, содержащуюся в любом столбце таблицы sql, добавив все имена полей в предложение WHERE, используя цикл for. Также я использую параметры для защиты от SQL-инъекций. Но когда я бегу я получаю сообщение об ошибке, как это:Unspecified Ошибка при поиске таблицы для строки в sql delphi с использованием параметров - Delphi SQL
Unspecified error
Как это можно исправить, и что это проблема (не обязательно в таком порядке). Вот мой код. Я пользуюсь Delphi 7
procedure TfrmView.edtSearchChange(Sender: TObject);
var
i, i2: integer;
obj: TEdit;
QueryText: string;
begin
obj:= Sender as TEdit;
with dmInfo do
begin
qryInfo.SQL.Clear;
qryInfo.SQL.Add('SELECT * FROM ' + tableName);
qryInfo.Open;
tblInfo.SQL.Clear;
tblInfo.SQL.Add('SELECT * FROM ' + tableName);
tblInfo.SQL.Add('WHERE (' + qryInfo.Fields[0].FieldName + ' LIKE :SQuery0)');
QueryText:= '%' + obj.Text + '%';
tblInfo.Parameters.ParamByName('SQuery0').Value:= QueryText;
ShowMessage(QueryText);
ShowMessage(tblInfo.Parameters.ParamByName('SQuery0').Value);
for i:= 1 to qryInfo.FieldCount - 1 do
begin
tblInfo.SQL.Add(' OR (' + qryInfo.Fields[i].FieldName + ' LIKE :SQuery' + IntToStr(i) + ')');
tblInfo.Parameters.ParamByName('SQuery' + IntToStr(i)).Value:= '%' + obj.Text + '%';
end;
tblInfo.Open;
end;
Вы перепутать '' Field.FieldName' и Field.Value' снова. При настройке значений параметров вы хотите использовать ** содержимое ** поля **, а не ** имя ** поля **. Вам действительно нужно научиться действительно читать код, который вы пишете. –
Извините, что наклеил неправильный код. Собирался написать вопрос вчера, но только написал его сегодня. Я редактировал код вопроса. Такая же ошибка, как раньше @KenWhite –
Поместите TMemo в свою форму и, прежде чем вызывать tblInfo.Open, скопируйте в него tblInfo.Sql.Text. Я подозреваю, что вы увидите свою ошибку. – MartynA