Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access CFLOOP和SQL更新_Ms Access_Coldfusion_Sql Update_Cfloop - Fatal编程技术网

Ms access CFLOOP和SQL更新

Ms access CFLOOP和SQL更新,ms-access,coldfusion,sql-update,cfloop,Ms Access,Coldfusion,Sql Update,Cfloop,如何使用CFLOOP更新Access DB上的记录?我尝试过使用下面的代码,但它似乎给了我一个重复的值,而不是增量 我的代码: <cfloop index="i" from="1" to="3"> <cfquery name="query" datasource="datasource"> update mytable set columnB = #i# where columnA = 'a'

如何使用CFLOOP更新Access DB上的记录?我尝试过使用下面的代码,但它似乎给了我一个重复的值,而不是增量

我的代码:

<cfloop index="i" from="1" to="3">
<cfquery name="query" datasource="datasource">
    update mytable
    set
    columnB = #i#
    where columnA = 'a'                                          
   </cfquery>
</cfloop>

列A和A1中填充了以前的CFLOOP和SQL Insert。

如果要更新所有列A='A'的记录,则每次运行更新时,都需要在where子句中包含更多条件以立即停止更新多行

通过使用cfquery的result属性,您可以很容易地看到更新了多少行,类似于下面的代码

<cfloop index="i" from="1" to="3">
<cfquery name="query" datasource="datasource" result='updated'>
    update mytable
    set
    columnB = #i#
    where columnA = 'a'                                          
   </cfquery>
   <cfdump var='#updated#' />
</cfloop>

更新mytable
设置
B列=#i#
其中columnA='a'
更新: 对于更新后的问题,更新后的查询示例可能是这样的,因为columnA和ColumnA1的组合使行唯一

<cfloop index="i" from="1" to="3">
<cfquery name="query" datasource="datasource" result='updated'>
    update mytable
    set
    columnB = #i#
    where columnA = 'a'      
    AND ColumnA1 = <cfqueryparam value='#i#' />                                    
   </cfquery>
   <cfdump var='#updated#' />
</cfloop>

更新mytable
设置
B列=#i#
其中columnA='a'
和第A1列=

每次运行更新时,如果要更新所有列a='a'的记录,则where子句中需要更多条件来立即停止更新多行

通过使用cfquery的result属性,您可以很容易地看到更新了多少行,类似于下面的代码

<cfloop index="i" from="1" to="3">
<cfquery name="query" datasource="datasource" result='updated'>
    update mytable
    set
    columnB = #i#
    where columnA = 'a'                                          
   </cfquery>
   <cfdump var='#updated#' />
</cfloop>

更新mytable
设置
B列=#i#
其中columnA='a'
更新: 对于更新后的问题,更新后的查询示例可能是这样的,因为columnA和ColumnA1的组合使行唯一

<cfloop index="i" from="1" to="3">
<cfquery name="query" datasource="datasource" result='updated'>
    update mytable
    set
    columnB = #i#
    where columnA = 'a'      
    AND ColumnA1 = <cfqueryparam value='#i#' />                                    
   </cfquery>
   <cfdump var='#updated#' />
</cfloop>

更新mytable
设置
B列=#i#
其中columnA='a'
和第A1列=

columnA的值是什么?一个重复的字符串,在这种情况下是字母“A”,这就是@Busche的答案正确的原因。@DanBracuk不确定你在说什么,SQL需要更具体,只更新选定的行,包括其中的ColumnA1,将使它只更新一行而不是全部三行。@Ace09-columnB下的记录输出=所有数字3,它应该是1,2,3为什么?您需要更多的条件,而不仅仅是
,其中columnA='a'
,因为这与所有示例记录都匹配。因此,每次循环时,所有记录都设置为相同的值。您没有告诉我们为什么应将
列B
值设置为
1、2和3
。一旦你解释了这一点,我们可以建议正确的代码。columnA的值是什么?一个重复的字符串,在这种情况下,字母“A”就是@Busche的答案正确的原因。@DanBracuk不确定你说的是什么,SQL需要更具体地只更新选定的行,例如,其中包括ColumnA1,将使它只更新一行而不是全部三行。@Ace09-columnB下的记录输出=所有数字3,它应该是1,2,3为什么?您需要更多的条件,而不仅仅是
,其中columnA='a'
,因为这与所有示例记录都匹配。因此,每次循环时,所有记录都设置为相同的值。您没有告诉我们为什么应将
列B
值设置为
1、2和3
。一旦您解释了这一点,我们可以建议使用正确的代码。为了澄清,查询正在更新
columnA
等于
a
(与表中的所有记录相反)的所有记录。@Busches,我尝试了您更新的代码,它似乎给了我一个数组,但它没有更新ColumnB。ColumnB的值是否与cfquery中ColumnA1的值相同?他们都使用变量i。。。感谢您的快速回复更新后的变量将为您提供一个变量结构。我给你的代码是伪代码,如果没有一些调整,它不一定能满足你的确切需要。我再次使用了变量I,因为它是循环中唯一的变量,同样,您需要调整代码以使其工作,但它应该将您设置为正确的方向。记录没有更新,因为columnA1的值从来都不是1、2或3,这就是最新的答案所说的。只需将“where columnA='a'”更改为“where columnA1='a'”,Bob将是您的叔叔。为了澄清,查询正在更新
columnA
等于
a
的所有记录(与表中的所有记录相反)。@Busches,我已经尝试了您更新的代码,它似乎给了我一个数组,但它没有更新ColumnB。ColumnB的值是否与cfquery中ColumnA1的值相同?他们都使用变量i。。。感谢您的快速回复更新后的变量将为您提供一个变量结构。我给你的代码是伪代码,如果没有一些调整,它不一定能满足你的确切需要。我再次使用了变量I,因为它是循环中唯一的变量,同样,您需要调整代码以使其工作,但它应该将您设置为正确的方向。记录没有更新,因为columnA1的值从来都不是1、2或3,这就是最新的答案所说的。只要把“wherecolumna1='a'”改为“wherecolumna1='a'”,鲍勃就是你的叔叔。