【问题标题】:Delphi 2007 Adoquery Parameters not workingDelphi 2007 Adoquery 参数不起作用
【发布时间】:2016-06-27 18:28:49
【问题描述】:
   ADOQuerySelect.Close;
    ADOQuerySelect.SQL.Add(' AND (дата_заказа between #'+dat+'# and #'+da+'#)');
    if ComboBox6.Text <> '' then
    begin
    ADOQuerySelect.Parameters.ParamByName('Name').Value := ComboBox6.Text ;
      ADOQuerySelect.SQL.Add(' AND (Наименование = :Name)');
    end;
ADOQuerySelect.Open;

我使用的是 Delphi 2007,MS Access。而且我现在不知道如何使用参数。在此代码上,我有错误:找不到参数名称。我尝试了许多其他代码变体,但它们都不起作用。我通过 GUI 使用数据类型 ftstring 添加参数名称;

【问题讨论】:

    标签: sql delphi


    【解决方案1】:

    在代码中更改 SQL 会清除现有参数,因此在您尝试设置其值时没有名为“名称”的参数。然后创建Name 参数,但为时已晚。

    更改语句的顺序:

    ADOQuerySelect.Close;
    ADOQuerySelect.SQL.Add(' AND (дата_заказа between #'+dat+'# and #'+da+'#)');
    if ComboBox6.Text <> '' then
    begin
      ADOQuerySelect.SQL.Add(' AND (Наименование = :Name)');
      ADOQuerySelect.Parameters.ParamByName('Name').Value := ComboBox6.Text ;
    end;
    ADOQuerySelect.Open;
    

    您应该为 all 您的替代品使用参数,顺便说一句。让数据库驱动程序为您处理转换和日期格式以及引用值以及所有这些。

    【讨论】:

      【解决方案2】:

      在对象检查器中,ADOQuerySelect 应该在参数列表中包含“名称”。

      您还可以使用以下代码创建参数“名称”:

      with ADOQuerySelect.Parameters.AddParameter do
      begin
        Name := 'Name';
        DataType := ftString;
      end;
      

      【讨论】:

      • 它在对象检查器中
      • SQL 表中的“名称”是什么?
      • 表 TAB 和一个参数名称的以下代码正在工作: ADOQuerySelect.SQL.Add('INSERT INTO TAB ( name ) '); ADOQuerySelect.SQL.Add('VALUES(:name)'); ADOQuerySelect.Parameters.ParamByName('Name').Value := ComboBox6.Text ;试试 ADOQuerySelect.ExecSQL;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多