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

FireMonkey Windows应用:ComboBox数据写入SQLite数据库失败求助

解决FireMonkey ComboBox选中项写入SQLite数据库的问题

问题原因分析

  1. 第一种写法的问题:cbCN.Items.Text返回的是ComboBox所有选项的文本(各选项用换行符分隔),并非选中项的文本。你看到仅存入第一个项,大概率是因为ComboBox里只有一个选项,或者误将该属性当成了选中项文本的获取方式。
  2. 第二种写法的Access Violation错误:当ComboBox没有选中任何项时,cbCN.Selected会返回nil,直接访问nil对象的Text属性必然触发访问违规。

正确实现方式

方式一:通过ItemIndex获取选中项文本(推荐)

先判断是否有选中项(ItemIndex不等于-1表示有选中项),再通过索引获取对应文本:

// 先确保FDQuery处于可编辑状态(新增记录用Insert,修改用Edit)
FDQue.Insert;
if cbCN.ItemIndex <> -1 then
  FDQue.FieldByName('CustomerName').AsString := cbCN.Items[cbCN.ItemIndex];
FDQue.Post; // 提交数据到数据库

方式二:通过Selected属性获取(需判空)

先检查Selected对象是否存在,再访问其Text属性:

FDQue.Insert;
if Assigned(cbCN.Selected) then
  FDQue.FieldByName('CustomerName').AsString := cbCN.Selected.Text;
FDQue.Post;

额外注意事项

  • 确保SQLite表中的CustomerName字段类型为TEXT,且长度足够容纳选中的文本内容
  • 操作数据库前,确认FDQuery已正确连接到SQLite数据库,FDConnection等相关组件配置无误
  • 如果需要强制用户必须选择项才能提交,可以在判断时加入提示:
    if cbCN.ItemIndex = -1 then
    begin
      ShowMessage('请选择客户名称');
      Exit;
    end;
    

内容的提问来源于stack exchange,提问作者Sandeep Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:12:14