VB6-更新查询匹配的多行

VB6-更新查询匹配的多行,vb6,Vb6,此查询将用于更新匹配的多行。。。但无法执行,因为它不在循环中,结果只添加了第一个匹配的行 rs.Open "SELECT tbl_club_member.Mid, tbl_club_member.BlockFlat, [tbl_block_flat.Size] FROM tbl_club_member INNER JOIN tbl_block_flat ON tbl_club_member.BlockFlat = tbl_block_flat.BlockFlat WHERE ((Mid(tbl_

此查询将用于更新匹配的多行。。。但无法执行,因为它不在循环中,结果只添加了第一个匹配的行

rs.Open "SELECT tbl_club_member.Mid, tbl_club_member.BlockFlat, [tbl_block_flat.Size] FROM tbl_club_member INNER JOIN tbl_block_flat ON tbl_club_member.BlockFlat = tbl_block_flat.BlockFlat WHERE ((Mid(tbl_block_flat.BlockFlat,1,2) Like '" & Me.Text2 & "') And ((tbl_club_member.MemberType) like 'Owner'));", cn, adOpenForwardOnly, adLockReadOnly

MemberID = rs.Fields(0)
Charge = rs.Fields(2) * Me.Text1

    With rs
        .Fields(0) = NextID 'tid
        .Fields(1) = CurDt   'tdate
        .Fields(2) = 72 'accid
        .Fields(3) = MemberID 'memberid
        .Fields(8) = Charge 'amount
        .Fields(9) = Combo2.Text 'particular
        .Fields(10) = userx
        .Fields(11) = Now()
        .Update
    End With
       rs.MoveLast
        Exit Sub

你应该考虑使用更新SQL .< /P> 更新tableA SET tableA.fieldA='somevalue'WHERE条件; 不建议循环和更新,除非vb代码中有复杂的逻辑

有一门课可能会有帮助

选项显式 '////////////////////////////////////////////////////////////////////////////// “@”摘要 ”“需要吗 '--Class:CHashTable.cls “--导入:Microsoft ActiveX数据对象2.8库 “@@reference “@@license "阳光软件 “@@create “@@modify '-20160812:创建此类 '////////////////////////////////////////////////////////////////////////////// '////////////////////////////////////////////////////////////////////////////// '// “//公开声明 '// '////////////////////////////////////////////////////////////////////////////// '--------------------------------------- '接口 '--------------------------------------- '--------------------------------------- “警察 '--------------------------------------- '--------------------------------------- '公共数据类型 '--------------------------------------- '--------------------------------------- '公共变量 '--------------------------------------- '--------------------------------------- "公众空气污染指数 '--------------------------------------- '--------------------------------------- '事件声明 '--------------------------------------- '////////////////////////////////////////////////////////////////////////////// '// “//私有声明 '// '////////////////////////////////////////////////////////////////////////////// '--------------------------------------- “一等兵 '--------------------------------------- '--------------------------------------- '私有数据类型 '--------------------------------------- '--------------------------------------- '私有变量 '--------------------------------------- 作为ADODB.连接的专用m_连接 私有m_命令作为ADODB.Command 私有m_字符串作为字符串 私有m_文件路径作为字符串 私有m_自动连接为布尔值 '--------------------------------------- '属性变量 '--------------------------------------- '--------------------------------------- “私人API '--------------------------------------- '////////////////////////////////////////////////////////////////////////////// '// “//类 '// '////////////////////////////////////////////////////////////////////////////// '--------------------------------------- “初始化 '--------------------------------------- 私有子类_初始化 m_ConnString= m_文件路径= m_自动连接=真 端接头 '--------------------------------------- “终止 '--------------------------------------- 私有子类 设置m_Conn=无 设置m_命令=无 端接头 '////////////////////////////////////////////////////////////////////////////// '// '//事件 '// '////////////////////////////////////////////////////////////////////////////// '////////////////////////////////////////////////////////////////////////////// '// “//私有财产 '// '////////////////////////////////////////////////////////////////////////////// '////////////////////////////////////////////////////////////////////////////// '// '//私有方法 '// '////////////////////////////////////////////////////////////////////////////// 私有子OpenConn 设置m_Conn=新的ADODB连接 m_Conn.CursorLocation=adUseClient m_Conn.开放连接字符串 端接头 私人分公司 m_康涅狄格州关闭 设置m_Conn=无 端接头 私有函数m_撇号countbyval SQL作为字符串长度 “计算数量” m_撇号计数=LenSQL-LenReplaceSQL,', 端函数 私有函数m_processnameparamsMSSQL作为字符串,mDic作为CHashTable,mParams作为变量作为布尔值 Dim mNewSql作为字符串,mWord作为字符串,mFieldName作为字符串 我算的时间长,我算的时间长,我算的时间长 Dim mBeginParam作为布尔值 如果m_撇号countmsql Mod 2=1,则 错误。Raise 110000000,Symbal'必须成对出现,请检查SQL语句 如果结束 '初始化mDic mBeginParam=False mFieldName= mParamCount=0 对于i=1到LenmSQL mWord=MidmSQL,i,1 选择案例mWord 案例 mNewSql=mNewSql&mWord 如果是姆贝金帕姆那么 ReDim保留mParamsmParamCount mParamsmParamCount=mDic.ItemmFieldName mFieldName= mParamCount=mParamCount+1 如果结束 mBeginParam=False 案例 comaCount=comaCount+1 mNewSql=mNewSql&mWord 案例@ 如果comaCount Mod 2=0,则 mBeginParam=True mNewSql=mNewSql& ? 其他的 “奇数of”表示@是唯一的内容字符串 mNewSql=mNewSql&mWord 如果结束 其他情况 如果mBeginParam=False,则 mNewSql=mNewSql&mWord 其他的 mFieldName=mFieldName&mWord 如果结束 结束选择 接下来我 “全部完成,但检查最后一句话,看最后一句话可能是param 如果是mFieldName,那么 ReDim保留mParamsmParamCount mParamsmParamCount=mDic.ItemmFieldName mFieldName= 如果结束 “回来 mSQL=mNewSql m_ProcessNameParams=True 端函数 私有函数m_GetVarTypeByRef值作为ADODB.DataTypeEnum的变量 选择Case VarTypeValue 案例VbVarType.vbString m_GetVarType=ADODB.DataTypeEnum.adVarWChar 案例VbVarType.vbInteger m_GetVarType=ADODB.DataTypeEnum.adSmallInt Case VbVarType.vbBoolean m_GetVarType=ADODB.DataTypeEnum.adBoolean 案例VbVarType.vbCurrency m_GetVarType=ADODB.DataTypeEnum.adCurrency 案例VbVarType.vbDate m_GetVarType=ADODB.DataTypeEnum.adDate 案件8209 m_GetVarType=ADODB.DataTypeEnum.adLongVarBinary 其他情况 m_GetVarType=ADODB.DataTypeEnum.adVariant 结束选择 端函数 '////////////////////////////////////////////////////////////////////////////// '// “//继承 '// '////////////////////////////////////////////////////////////////////////////// '////////////////////////////////////////////////////////////////////////////// '// “//公共财产 '// '////////////////////////////////////////////////////////////////////////////// 公共属性获取ConnectionString作为字符串 ConnectionString=m_ConnString 端属性 公共属性让ConnectionStringByVal vNewValue作为字符串 m_ConnString=vNewValue 端属性 公共属性Get IsReady为布尔值 IsReady=iFlenConnectionString>0,对,错 端属性 '////////////////////////////////////////////////////////////////////////////// '// “//公共方法 '// '////////////////////////////////////////////////////////////////////////////// '------------数据库连接 公共函数DbConnFromFileByVal filePath的字符串形式为ADODB.Connection Dim mConn作为新的ADODB.连接 mConn.CursorLocation=adUseClient mConn.openprovider=Microsoft.Jet.OLEDB.4.0;数据源=&filePath&; 设置DbConnFromFile=mConn 端函数 公共子集合CONNTOFILEBYVAL文件路径为字符串 m_ConnString=PROVIDER=Microsoft.Jet.OLEDB.4.0;数据源=&filePath&; 端接头 公共子集合CONNTOACCDBBYVAL文件路径为字符串 m_ConnString=Provider=Microsoft.ACE.OLEDB.12.0;数据源=&filePath&;持久安全信息=False 端接头 公共子OpenDB m_自动连接=错误 打电话给OpenConn 端接头 公共分包商 m_自动连接=真 打电话给CloseConn 端接头 “--------Querys 公共函数ExecQueryByVal SQL作为字符串作为ADODB.Recordset 将MRE设置为新ADODB.Recordset Set m_Command=New ADODB.Command 如果m_自动连接,则 打电话给OpenConn 如果结束 m_Command.ActiveConnection=m_Conn m_Command.CommandText=SQL 设置mRes=m_命令。执行 '断开与数据库的连接 mRes.ActiveConnection=Nothing 如果m_自动连接,则 打电话给CloseConn 如果结束 Set ExecQuery=mRes 设置m_命令=无 端函数 公共函数ExecParamQueryByVal SQL作为字符串_ 参数数组参数作为ADODB.Recordset 将MRE设置为ADODB.Recordset 变型为Dim MPARAMAR,变型为mParam 我想我会坚持多久 Set m_Command=New ADODB.Command 如果m_自动连接,则 打电话给OpenConn 如果结束 m_Command.ActiveConnection=m_Conn m_Command.CommandText=SQL m_Command.CommandType=adCmdText mParamArr=Params 如果VarTypeParams0=8204,则 mParamArr=Params0 如果结束 用m_命令 对于MPARAMAR中的每个mParam Dim Para作为ADODB.参数 Set Para=.CreateParameterCStri,m_GetVarTypemParam,adParamInput,LenbParam 参数值=兆帕 如果VarTypemParam=vbEmpty,则 段落大小=1 ElseIf VarTypemParam=vbString然后 如果LenBmParam=0,则 段落大小=1 如果结束 如果结束 .Parameters.Append段落 下一个 以 设置mRes=m_命令。执行 mRes.ActiveConnection=Nothing 如果m_自动连接,则 打电话给CloseConn 如果结束 Set ExecParamQuery=mRes 设置m_命令=无 端函数 公共函数ExecNamedQueryByVal SQL作为字符串,HashedParams作为ADODB.Recordset可检查 作为变体的Dim-mParams m_ProcessNameParams SQL、HashedParams、mParams 设置ExecNamedQuery=ExecParamQuerySQL,mParams 端函数 公共函数ExecNonQueryByVal SQL作为字符串,长度相同 昏昏欲睡 Set m_Command=New ADODB.Command 如果m_自动连接,则 打电话给OpenConn 如果结束 m_Command.ActiveConnection=m_Conn m_Command.CommandText=SQL m_Command.CommandType=adCmdText m_Command.executeaffectedrows 如果m_自动连接,则 打电话给CloseConn 如果结束 设置m_命令=无 execonquery=affectedRows 端函数 公共函数ExecParamNonQueryByVal SQL为字符串,ParamArray Params为长 暗我一样长,影我一样长 变型为Dim MPARAMAR,变型为mParam Set m_Command=New ADODB.Command 如果m_自动连接,则 打电话给OpenConn 如果结束 m_Command.ActiveConnection=m_Conn m_Command.CommandText=SQL m_Command.CommandType=adCmdText mParamArr=Params 如果VarTypeParams0=8204,则 mParamArr=Params0 如果结束 用m_命令 对于MPARAMAR中的每个mParam Dim Para作为ADODB.参数 Set Para=.CreateParameterCStri,m_GetVarTypemParam,adParamInput,LenbParam 参数值=兆帕 如果VarTypemParam=vbEmpty,则 段落大小=1 ElseIf VarTypemParam=vbString然后 如果LenBmParam=0,则 段落大小=1 如果结束 如果结束 .Parameters.Append段落 下一个 以 m_Command.executeaffectedrows 如果m_自动连接,则 打电话给CloseConn 如果结束 设置m_命令=无 execParamonQuery=affectedRows 端函数 公共函数ExecNamedNonQueryByVal SQL作为字符串,HashedParams作为可检查的参数,长度为 作为变体的Dim-mParams m_ProcessNameParams SQL、HashedParams、mParams ExecNamedNonQuery=ExecParamNonQuerySQL,mParams 端函数 公共函数ExecCreateByVal SQL作为字符串作为变量 将MRE设置为ADODB.Recordset Set m_Command=New ADODB.Command 如果m_自动连接,则 打电话给OpenConn 如果结束 m_Command.ActiveConnection=m_Conn m_Command.CommandText=SQL m_Command.CommandType=adCmdText m_Command.Execute m_Command.CommandText=选择@@identity 设置mRes=m_命令。执行 如果mRes.RecordCount>0,则 ExecCreate=mRes.Fields0.Value 其他的 execreate=Empty 如果结束 如果m_自动连接,则 打电话给CloseConn 如果结束 设置m_命令=无 设置mRes=无 端函数 公共函数ExecParamCreateByVal SQL作为字符串,ParamArray Params作为变量 变型为Dim MPARAMAR,变型为mParam 将MRE设置为ADODB.Recordset 我想我会坚持多久 Set m_Command=New ADODB.Command 如果m_自动连接,则 打电话给OpenConn 如果结束 m_Command.ActiveConnection=m_Conn m_Command.CommandText=SQL m_Command.CommandType=adCmdText mParamArr=Params 如果VarTypeParams0=8204,则 mParamArr=Params0 如果结束 用m_命令 对于MPARAMAR中的每个mParam Dim Para作为ADODB.参数 Set Para=.CreateParameterCStri,m_GetVarTypemParam,adParamInput,LenbParam 参数值=兆帕 如果VarTypemParam=vbEmpty,则 段落大小=1 ElseIf VarTypemParam=vbString然后 如果LenBmParam=0,则 段落大小=1 如果结束 如果结束 .Parameters.Append段落 下一个 以 m_Command.Execute m_Command.CommandText=选择@@identity 设置mRes=m_命令。执行 如果mRes.RecordCount>0,则 ExecParamCreate=mRes.Fields0.Value 其他的 ExecParamCreate=空 如果结束 如果m_自动连接,则 打电话给CloseConn 如果结束 设置m_命令=无 设置mRes=无 端函数 公共函数ExecNamedCreateByVal SQL作为字符串,HashedParams作为变量可检查 作为变体的Dim-mParams m_ProcessNameParams SQL、HashedParams、mParams ExecNamedCreate=ExecParamCreateSQL,mParams 端函数 公共函数ExecScalarByVal SQL作为字符串作为变量 将MRE设置为ADODB.Recordset 设置mRes=ExecQuerySQL
如果你问mRes.RecordCount如何循环记录集?@Brian M Stafford是的。此查询将用于更新匹配的多行。。。但无法执行,因为它不在循环中,结果只添加了第一个匹配的行。也许我看不出重点,但为什么不使用UPDATE语句而不是查询和循环?我看不出这段代码可以按发布的方式工作。查询返回3个字段,但尝试更新时需要12个字段。字段11。我希望.Fields3的赋值会抛出一个错误。