query.sql='select  a,b,c,d,e from a,b,c where ....';

来源3个表,

设计时添加字段列表,每个字段有Origin属性

分别是a.a,b.b,c.c格式,表示该字段是那个表。

然后query.edit,query.post方法调用后,生成update或insert语句的时候,

UPDATE ttdb.dbo.a

SET [a.a] = @P1
WHERE [a.a] = @P2

AND [a.b] = @p3

sql server报错,提示

消息 207,级别 16,状态 1,第 3 行
列名 'a.a 无效。

数据库字段肯定存在,只是加了[]就不识别了,去掉[]就不报错了,加[]的字段名[a]是可以识别,比如

[table1.a],[t1.b],[t1.c];这样是无法识别列的存在.t1.a,t1.b,t1.c这样是可以识别。前段firedac生成的语句自动加上了[]无法去掉。

在source\data\firedac\FireDAC.DApt.pas文件里,

arUpdate:          Result.CommandText := oCmdGen.GenerateUpdate;

就是FireDAC.Phys.SQLGenerator.pas文件里的方法,GetWhere方法,GetColumn和NormalizeColName方法最加上了[],暂时找不到去的地方。FGenOptions也没有赋值调用的地方,故而放弃此思路。

query有UpdateOptions>UpdateTableName属性,设置为要更新的表名,然后把各个字段的Origin的前缀去掉,使得生成的update 语句只有列名而无前缀[field];试试。

select [fieldname] from table //列存在
select table1.fieldname from table //列存在
select [table1.fieldname] from table  //列不存在,这种写法不行吗

FDQuery多表更新生成sql语句的问题的更多相关文章

  1. Mybatis高级:Mybatis注解开发单表操作,Mybatis注解开发多表操作,构建sql语句,综合案例学生管理系统使用接口注解方式优化

    知识点梳理 课堂讲义 一.Mybatis注解开发单表操作 *** 1.1 MyBatis的常用注解 之前我们在Mapper映射文件中编写的sql语句已经各种配置,其实是比较麻烦的 而这几年来注解开发越 ...

  2. 自由导入你的增量数据-根据条件将sqlserver表批量生成INSERT语句的存储过程实施笔记

    文章标题: 自由导入你的增量数据-根据条件将sqlserver表批量生成INSERT语句的存储过程增强版 关键字 : mssql-scripter,SQL Server 文章分类: 技术分享 创建时间 ...

  3. Excel数据生成Sql语句的方法

    选中想要生成的列,套用表格格式,选中表包含标题的选项确定,然后在最右边的一列第二行处,点击函数功能,选择CONCATENATE,在文本里输入想要的结构即可  代码如下 复制代码 ,=CONCATENA ...

  4. excel生成sql语句

    很多时候,我们想把excel中数据导入到数据库中. 方法有很多种,比如直接拷贝然后黏贴进编辑状态的框中,这种情况有个弊端,就是excel中每列的数据必须和数据库中一一对应,这个很难,基本上不太可能,数 ...

  5. 根据excel表格字段生成sql语句

    根据excel表格字段生成sql语句 1.1 前言 根据excel表格字段生成sql语句主要是利用了excel的拼接函数 CONCATENATE .该实例主要以mysql脚本支持.实例需求如下:exc ...

  6. Oracle和sql server中复制表结构和表数据的sql语句

    在Oracle和sql server中,如何从一个已知的旧表,来复制新生成一个新的表,如果要复制旧表结构和表数据,对应的sql语句该如何写呢?刚好阿堂这两天用到了,就顺便把它收集汇总一下,供朋友们参考 ...

  7. Excel表格生成sql语句

    假如excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age ,在你的excel表格中增加一列,利用excel的公式自动生成sql语句,方法如下: ...

  8. 如何根据实体动态生成sql语句

    该文章同时解决了,如何向数据库中添加Null值,以及如何处理“参数化查询未提供参数”的错误.解决方案请看第二段折叠的代码. 背景: 在项目开发的过程中,往往需要根据实体的值来修改sql语句,比如说,有 ...

  9. 使用excel中的数据快速生成sql语句

    在小公司的话,总是会有要开发去导入历史数据(数据从旧系统迁移到新系统上)的时候.这个时候,现场实施或客户会给你一份EXCEL文档,里面包含了一些别的系统上的历史数据,然后就让你导入到现在的系统上面去. ...

随机推荐

  1. vc++获取网页源码

    1. 获取网页源码的步骤: com组件的初始化 创建WinHttpRequest对象 创建并实例化WinHttpRequest组件 调用Open方法打开连接 调用Send方法发送请求 使用Respon ...

  2. 【推荐】asp.net 页面的生命周期

    当一个页面请求发送到WEB服务器时,不论该事件是由页面提交还是由页面重定向而激发的,页面在其被创建到释放的过程中都会运行一系列的事件.一个ASP.NET页面从被创建到释放的过程包含10个事件. (1) ...

  3. C与C++的部分区别

    1.函数无形参情况 void test() { } int main() { test(,); ; } 在C语言中形参括号没有参数时代表接受任意多的参数,而在C++语言中代表void(无参数) 所以上 ...

  4. Flume的Channel

    一.Memory Channel 事件将被存储在内存中(指定大小的队列里) 非常适合那些需要高吞吐量且允许数据丢失的场景下 属性说明: 二.JDBC Channel 事件会被持久化(存储)到可靠的数据 ...

  5. NodeJs使用async让代码按顺序串行执行

    描述 由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步 ...

  6. vSphere 查看FC HBA的WWNN和WWPN

    #     查看WWN号  

  7. OpenStack镜像服务基本操作

    查询Glance服务状态 #glance-control all status [root@controller ~]# glance-control all status glance-api (p ...

  8. OpenStack单节点网络设置

    一.上传镜像文件 1.上传镜像 2.检索镜像 二.创建网络 1.创建内部网络 2.创建外部网络 3.创建内部网络子网 设置DHCP分配地址池,点击已创建 4.创建外部网络子网 注意:外部网络与仅主机( ...

  9. 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。System.Threading.ThreadAbortException

    第一次遇到这样的错误 错误语法 try{ Response.Redirect("aa.aspx"); }catch (Exception ex){ Response.Redirec ...

  10. javascript-typeof篇

    isString (o) { //是否字符串 return Object.prototype.toString.call(o).slice(8, -1) === 'String' } isNumber ...