FDBatchMove执行字串的困惑

秋天之落叶 2024-12-27 10:16:01

 FDBatchMoveSQLReader1.ReadSQL := readstr;
 FDBatchMoveSQLWriter1.WriteSQL := writestr;

readstr=select 业务量,姓名 from [考核$]  where  replace(姓名,chr(9),'') not in ('')
writestr=update 计算表 set 业务量=:业务量 where 姓名=:姓名
<10:04:16> [FireDAC][Phys][ODBC][Microsoft][ODBC Excel Driver] 标准表达式中数据类型不匹配。

问题:

1、把两句读写语句直接写成字符串,正常执行。如果从数据表读出来拼成字符串,就提示如上错误。

2、where  replace(姓名,chr(9),'') not in ('')是为了统一,在sql下执行没问题。

3、如果是写语句为insert,手写字符串和读数据表拼成字符串都没有问题。

4、mode对应insert和update没问题,其他的都一样。

5、去掉where  replace(姓名,chr(9),'') not in ('')就能正确执行,拼接字符串为 where 姓名=''也提示相同错误

问题出在哪里?请指教!

...全文
681 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋天之落叶 2025-01-04
  • 打赏
  • 举报
回复

结贴解密。
终于破解了数据类型不匹配和主键未定义的BUG:
1、数据类型不匹配--access驱动要使用2010,不能使用2007
2、主键未定义--read语句和write语句的字段不匹配时,必须把read的变量全部as成write的字段,而并不是两个一句相对应就行。

  • 打赏
  • 举报
回复

不必纠结,微软的ADO是很老的技术,而且十几年不更新了(见:https://learn.microsoft.com/en-us/sql/ado/guide/ado-history )
ODBC更老,是BDE同一时代的东西,所以里面有什么奇怪的BUG都不奇怪~

秋天之落叶 2024-12-27
  • 打赏
  • 举报
回复

试出来了,和excel的驱动有关,2007不行2010就可以,我去

秋天之落叶 2024-12-27
  • 举报
回复
@秋天之落叶 同样的语句,一个行一个就不行,看来还是没找到门道,唉
秋天之落叶 2024-12-27
  • 打赏
  • 举报
回复

where replace(姓名,chr(9),'') not in ('')转成and replace(姓名,chr(9),'') not in ('')放到写语句中就没问题了,算了,不再纠结了,以后就都在写语句吧。
到目前为止,还是没掌握读写语句的规则,谁能给提供一个介绍FDBatchMove的教程看看。

秋天之落叶 2024-12-27
  • 打赏
  • 举报
回复

但是你用cast转换类型,不管什么类型,都提示语法错误,操作符丢失。

秋天之落叶 2024-12-27
  • 打赏
  • 举报
回复

测试where replace(姓名,chr(9),'') not in ('')为where 姓名 not in ('')则通过,难道是 replace的返回值不是nvarchar?需要转成什么类型?

秋天之落叶 2024-12-27
  • 打赏
  • 举报
回复

个人觉得还是拼字串的问题,但显示出来的拼字串,和手写的结果是一样的。
难道内部结构是不一样的?
比如说,手写时where姓名=是''张三'',而拼出来的是 变量,难道这两者有什么差异?如何解决?

内容概要:本文档是一份关于开发经典小游戏“贪吃蛇”的保姆级毕业设计指导文档,涵盖从游戏规则、功能设计、技术选型到核心代码实现的完整流程。文档以Python + Pygame为技术栈,详细讲解了游戏初始化、蛇的移动逻辑、食物生成、碰撞检测、计分与等级系统、键盘控制及主循环渲染等核心模块,并提供了完整的项目结构和源码示例。采用状态机管理游戏状态,使用列表模拟链表结构存储蛇身,结合方向缓冲机制优化操作体验,同时引入难度递增机制提升可玩性。文末还列举了飞机大战、扫雷、五子棋等同类课题作为拓展参考。; 适合人群:具备一定编程基础、正在进行毕业设计或课程设计的学生,尤其是对游戏开发感兴趣的初级开发者。; 使用场景及目标:①帮助学生独立完成一个功能完整、结构清晰的小游戏项目,用于毕业答辩或课程展示;②深入理解事件驱动编程、状态管理、碰撞检测、定时刷新等基础编程概念;③掌握Python + Pygame开发2D小游戏的核心技能,并具备二次开发与功能拓展能力。; 阅读建议:建议读者按照“规则→设计→代码→运行”的顺序逐步学习,动手实践每个模块并调试代码,重点关注方向缓冲、状态机、食物生成算法等设计细节,同时可尝试实现文末提出的拓展功能以增强项目亮点。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧