【问题标题】:Delphi 7 - error when get values using sql operator inDelphi 7 - 使用 sql 运算符获取值时出错
【发布时间】:2014-06-01 14:29:57
【问题描述】:

在相关线程上没有答案,所以我提出了这个问题。我一直在搜索如何使用具有多个值的 where 子句检索记录值,我得到了这个。

表格示例:

|ID |PRICE|
|1  |3000 |
|2  |2000 |
|3  |1000 |
|4  |5000 |
|5  |4000 |

SQL 查询:

DM.Zread.Close;
DM.Zread.SQL.CommaText := 'select PRICE from DVD where ID in (1, 2, 3)';
DM.Zread.Open;

上面给了我一个错误,当我只输入一个 1 值,即 (1) 或 (2) 时,它工作正常。

问题是:

  1. 如何调整它,这样我就可以从 3 个不同的值中获取值 记录 ?
  2. 如何将其应用于字符串值?

【问题讨论】:

  • 为了将来参考,当您遇到错误并需要帮助时:请不要告诉我们“它给了我错误”。告诉我们实际错误消息
  • 感谢您告诉我正确的事情。我认为这就是为什么我减少了我的代表并且您提供的代码很棒,它工作正常。

标签: sql delphi in-operator


【解决方案1】:

SQLTStrings 子类。当您使用上述设置CommaText 时,您实际上将查询设置为:

select PRICE from DVD where ID in (1
2
3)

这显然行不通。
您想设置Text 属性或使用Add() 方法添加单独的行。

【讨论】:

    【解决方案2】:

    尝试在您的 SQL 调用中使用 CommandText 而不是 CommaText

    DM.Zread.Close;
    DM.Zread.SQL.CommaText := 'select PRICE from DVD where ID in (1, 2, 3)';
    DM.Zread.Open;
    
    
    DM.Zread.SQL.CommandText := 'select PRICE from DVD where ID in (1, 2, 3)';
    

    【讨论】:

    • 我尝试改用 CommandText,但它显示 undecleared identifier
    • 也许你想到的是 TClienDataSet,它有一个 CommandText 属性。
    • -1,这不是问题的解决方案,这是一个不正确的假设。
    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 2019-07-31
    • 2021-12-25
    • 2014-03-14
    • 1970-01-01
    相关资源
    最近更新 更多