【问题标题】:Error 'Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another'错误“参数类型错误、超出可接受范围或相互冲突”
【发布时间】:2018-10-12 04:12:55
【问题描述】:

在尝试了我所学到的一切之后,我一直遇到这个错误。 我的表单上有两个 DBGrid,它们都有不同的名称并连接到两个不同的 ADO 连接。当我过滤数据库时,我得到了标题中所述的错误,我不知道该怎么做,这就是我的程序部分的外观。

procedure TfrmDatabase.btnYouTubeSearchClick(Sender: TObject);
var
  sName: string;
begin
  sName := InputBox('Enter the name of the YouTuber you want to search',
    'Please enter name here', '');
   with DataModule3 do
   begin
      tblYouTube.Open;
      tblYouTube.Filtered := false;
      tblYouTube.Filter := 'Name of YouTuber = ' + QuotedStr(sName);
      tblYouTube.Filtered := true;

   end;
end;

【问题讨论】:

  • YouTuber 的名称 是三个词,而不是列名。就像在 SQL 语句中一样,您需要在列名周围使用 [] 转义这些空格。
  • 我用谷歌搜索了一下,搜索了那个文本,并找到了this on the Microsoft docs site。换句话说,这是 ADO 错误 3001,而不是 Delphi 错误。

标签: delphi


【解决方案1】:

当使用 dbGO ADO 连接时,带有空格的字段名称需要用括号括起来。它还需要是表格的字段名称,而不是字段标题/标题,因此请仔细检查。

  tblYouTube.Filter := '[Name of YouTuber] = ' + QuotedStr(sName);

来自帮助:Data.Win.ADODB.TCustomADODataSet.Filter

当字段名称包含空格时,您必须将字段名称括在 括号。例如:

[Home State] = 'CA' or [Home State] = 'MA'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    相关资源
    最近更新 更多