You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击ComboBox选择月份查询人员时遇'incompatible data type'错误求助

解决“incompatible data type in criteria expression”错误的方案

问题原因

Num_Month字段是整数类型,但你用QuotedStr(ComboBox1.Text)把选中的月份值转成了带引号的字符串,SQL执行时会尝试将字符串与整数做比较,触发类型不兼容错误。

修正方案

方案1:直接转换为整数拼接(简单直接)

With Q1 do
Begin
  Close;
  Sql.Clear;
  Sql.Add('Select * from Person_Month Where Num_month = ' + IntToStr(StrToInt(ComboBox1.Text)));
  Open;
  // 注意:Q1已打开,无需重复打开DBGrid2的DataSet,可删除DBGrid2.DataSource.DataSet.Open;这行
End;

方案2:参数化查询(更安全,避免SQL注入)

With Q1 do
Begin
  Close;
  Sql.Clear;
  Sql.Add('Select * from Person_Month Where Num_month = :MonthNum');
  ParamByName('MonthNum').AsInteger := StrToInt(ComboBox1.Text);
  Open;
End;

额外注意事项

  • 如果ComboBox显示的是带汉字的月份(如“1月”),需要先提取数字部分再转换:
    var
      MonthStr: string;
    begin
      MonthStr := Copy(ComboBox1.Text, 1, Pos('月', ComboBox1.Text)-1);
      // 之后用StrToInt(MonthStr)转换为整数
    end;
    
  • 使用TDBLookupComboBox时,需正确配置字段:
    • 设置KeyField为Num_Month(返回整数值)
    • 设置ListField为显示用的月份名称字段(如Month_Name)

内容的提问来源于stack exchange,提问作者fateh djelti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:42:05