|

10精币
同一个sql语句,用判断循环的命令连续对同一个数据表里面的不同行的数据进行查询,循环查询15次之后就查询失败了,前面15次都是成功的,第16次开始就连续查询失败。试了好多次都是这样,
软件关了重新打开又是可以查询15次就不行了,跳过报错的那个查询命令时,下一个查询命令也会查询失败! 总之只要查询15次循环,第16次查询不管是查询Access里面哪个数据,都是查询失败。
代码截图贴在下面了,哪个大佬能指导下吗?
备注:写这个的目的是想把Access数据库里面的数据,通过始终循环查询监控,把Access数据库的内容都传到mysql中!
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_SQL | 文本型 | | | 局_返回数据 | 类_json | | | 局_起始时间 | 文本型 | | | 局_结束时间 | 文本型 | | | 数据编号 | 文本型 | | | 设备编号 | 文本型 | | | 测量值 | 小数型 | | | n | 整数型 | | | 记录数量 | 整数型 | | | 客户代码 | 文本型 | | | 芯片型号 | 文本型 | | | 测量时间 | 日期时间型 | | | 操作员编号 | 文本型 | | | 测量标准 | 文本型 | | | 芯片厚度 | 文本型 | | | 判断结果 | 文本型 | | | 测量标准查询编号 | 整数型 | | | FLT上限 | 文本型 | | | FLT下限 | 文本型 | | | 局_addtime | 文本型 | | | 局_user | 文本型 | | | 文本型变量 | 文本型 | | | 流程卡号 | 文本型 | | | 压焊图号 | 文本型 | | | 工号 | 文本型 | | | 局_记录集句柄 | 整数型 | | | 局_MeasureStander_Item句柄 | 整数型 | | | 局_Customer句柄 | 整数型 | | | 测量值查询编号 | 整数型 | | | 局_MeasureData句柄 | 整数型 | | | 局_code | 文本型 | | | flt1 | 文本型 | | | flt2 | 文本型 | | | flt3 | 文本型 | | | flt4 | 文本型 | | | flt最小值 | 文本型 | | | flt最大值 | 文本型 | | | flt平均值 | 文本型 | | | 检测结果 | 文本型 | | | A | 文本型 | | | 局_查询异常时间 | 文本型 | | | 数据库重连 () Access数据库重连 () 局_code = 时间_到时间戳 (取现行时间 (), 真, 真)取上次采集结束时间 () 局_起始时间 = 到文本 (时间_格式化 (增减时间 (取现行时间 (), #年份, -5 ), “yyyy/M/d”, “ hh:mm:ss”, 真, )) 局_结束时间 = 到文本 (时间_格式化 (取现行时间 (), “yyyy/M/d”, “ hh:mm:ss”, 真, )) 调试输出 (局_起始时间 )调试输出 (局_结束时间 ) 局_Customer句柄 = Access. 查询 (“Customer”, “_DateTime”, 假, “select * from Customer where `_DateTime` BETWEEN #” + 局_起始时间 + “# AND #” + 局_结束时间 + “#”)调试输出 (局_Customer句柄 ) 如果真 (局_Customer句柄 = 0 ) 信息框 (“数据表Customer查询失败,请反馈工艺工程处理!”, 0, , ) 结束 ()时钟_数据读取.时钟周期 = 0外部数据库1. 到首记录 (局_Customer句柄 ) 判断循环首 (外部数据库1. 尾记录后 (局_Customer句柄 ) = 假) 流程卡号 = 外部数据库1. 读 (局_Customer句柄, “_ID”) 压焊图号 = 外部数据库1. 读 (局_Customer句柄, “_MapId”) 芯片型号 = 外部数据库1. 读 (局_Customer句柄, “_ChipId”) 客户代码 = 外部数据库1. 读 (局_Customer句柄, “_CustomerId”) 设备编号 = 外部数据库1. 读 (局_Customer句柄, “_EquId”) 测量时间 = 外部数据库1. 读 (局_Customer句柄, “_DateTime”) 操作员编号 = 外部数据库1. 读 (局_Customer句柄, “_UserId”) 测量标准查询编号 = 外部数据库1. 读 (局_Customer句柄, “_Stander_Id”) 测量值查询编号 = 外部数据库1. 读 (局_Customer句柄, “ID”) 编辑框_log. 加入文本 (“流程卡号= ” + 流程卡号 + #换行符 ) 编辑框_log. 加入文本 (“压焊图号= ” + 压焊图号 + #换行符 ) 编辑框_log. 加入文本 (“芯片型号= ” + 芯片型号 + #换行符 ) 编辑框_log. 加入文本 (“客户代码= ” + 客户代码 + #换行符 ) 编辑框_log. 加入文本 (“设备编号= ” + 设备编号 + #换行符 ) 编辑框_log. 加入文本 (“测量时间= ” + 到文本 (测量时间 ) + #换行符 ) 编辑框_log. 加入文本 (“操作员编号= ” + 操作员编号 + #换行符 ) 编辑框_log. 加入文本 (“测量标准查询编号= ” + 到文本 (测量标准查询编号 ) + #换行符 ) 编辑框_log. 加入文本 (“测量值查询编号= ” + 到文本 (测量值查询编号 ) + #换行符 )  局_MeasureStander_Item句柄 = Access. 查询 (“MeasureStander_Item”, “_Stander_Id”, 假, “select * from MeasureStander_Item where `_Stander_Id` = ” + 到文本 (测量标准查询编号 ))  如果真 (局_MeasureStander_Item句柄 = 0 ) 信息框 (“数据表MeasureStander_Item查询失败,请反馈工艺工程处理!”, 0, , ) 结束 () 外部数据库1.到首记录 (局_MeasureStander_Item句柄) 测量标准 = 外部数据库1. 读 (局_MeasureStander_Item句柄, “_Stander_Item_Name”) FLT上限 = 外部数据库1. 读 (局_MeasureStander_Item句柄, “_Plus”) FLT下限 = 外部数据库1. 读 (局_MeasureStander_Item句柄, “_Minus”) 编辑框_log. 加入文本 (“测量标准= ” + 测量标准 + #换行符 ) 编辑框_log. 加入文本 (“FLT上限= ” + FLT上限 + #换行符 ) 编辑框_log. 加入文本 (“FLT下限= ” + FLT下限 + #换行符 )  局_MeasureData句柄 = Access. 查询 (“MeasureData”, “_CustomerId”, 假, “select * from MeasureData where `_CustomerId` = ” + 到文本 (测量值查询编号 )) 调试输出 (“局_MeasureData句柄 =” + 到文本 (局_MeasureData句柄 ))  如果真 (局_MeasureData句柄 = 0 ) 信息框 (“数据表MeasureData查询失败,请反馈工艺工程处理!”, 0, , ) 结束 ()
 局_user = 全_操作用户.用户名  局_addtime = 时间_格式化 (取现行时间 (), “yyyy-M-dd ”, “hh:mm:ss”, 真, ) 局_code = 到文本 (到数值 (局_code ) + 1 ) 局_SQL = “insert into buyoff_flt (`area`,`kehu`,`liucheng_card`,`yahan_id`,`die_xinghao`,`die_bonder`,`jiance_op`,`jiance_machine`,`jiance_spec`,`addtime`,`flt_down`,`flt_up`,`jiance_time`,`user`,`code`) values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')” 局_SQL = 格式化文本 (局_SQL, 全_操作用户.区域, 客户代码, 流程卡号, 压焊图号, 芯片型号, 设备编号, 操作员编号, 显微镜编号, 测量标准, 局_addtime, FLT下限, FLT上限, 到文本 (测量时间 ), 局_user, 局_code ) 如果真 (全_mysql. 方法_开始事务 ())   如果 (全_mysql. 方法_执行 (局_SQL ))    全_mysql. 方法_保存事务 ()   全_mysql. 方法_回滚事务 ()     编辑框_log. 加入文本 (“文件读取成功,但保存至数据库失败---” + 到文本 (取现行时间 ()) + #换行符 )  返回 ()     延时 (100 ) 外部数据库1. 到首记录 (局_MeasureData句柄 ) n = 0  判断循环首 (外部数据库1. 尾记录后 (局_MeasureData句柄 ) = 假)  n = n + 1   测量值 = 外部数据库1. 读 (局_MeasureData句柄, “_MeasureData”) 调试输出 (“测量值= ” + 到文本 (测量值 ) + #换行符 )  编辑框_log. 加入文本 (“测量值flt” + 到文本 (n ) + “=” + 到文本 (测量值 ) + #换行符 + #换行符 )  局_SQL = “update buyoff_flt set `flt” + 到文本 (n ) + “` = '%s' where `code` = '%s'”  局_SQL = 格式化文本 (局_SQL, 到文本 (测量值 ), 局_code ) 调试输出 (局_code )  如果真 (全_mysql. 方法_开始事务 ())    判断 (全_mysql. 方法_执行 (局_SQL ))     全_mysql. 方法_保存事务 ()       全_mysql. 方法_回滚事务 ()    编辑框_log. 加入文本 (“文件读取成功,但保存至数据库失败---” + 到文本 (取现行时间 ()) + #换行符 )      信息框 (“提交失败”, 16, , )  延时 (100)     外部数据库1. 到后一记录 (局_MeasureData句柄 ) 判断循环尾 () 延迟 (100 ) 局_SQL = “select * from buyoff_flt where `code` = '” + 局_code + “'” 全_mysql. 方法_查询 (局_SQL, 局_返回数据 )  flt1 = 局_返回数据. 取通用属性 (“数据[0].flt1”, ) flt2 = 局_返回数据. 取通用属性 (“数据[0].flt2”, ) flt3 = 局_返回数据. 取通用属性 (“数据[0].flt3”, ) flt4 = 局_返回数据. 取通用属性 (“数据[0].flt4”, ) 加入成员 (集_历史数据, 到数值 (flt1 )) 加入成员 (集_历史数据, 到数值 (flt2 )) 加入成员 (集_历史数据, 到数值 (flt3 )) 加入成员 (集_历史数据, 到数值 (flt4 )) 数组排序 (集_历史数据, 真) flt最小值 = 到文本 (集_历史数据 [1 ]) flt最大值 = 到文本 (集_历史数据 [取数组成员数 (集_历史数据 )]) 调试输出 (“最小值是:” + 到文本 (集_历史数据 [1 ]), “最大值是:” + 到文本 (集_历史数据 [取数组成员数 (集_历史数据 )]))  flt平均值 = 到文本 (四舍五入 ( (到数值 (flt1 ) + 到数值 (flt2 ) + 到数值 (flt3 ) + 到数值 (flt4 )) ÷ 4, 2 ))  如果 (flt最小值 > FLT下限 且 flt最大值 < FLT上限 )  检测结果 = “OK”  检测结果 = “NO” 删除成员 (集_历史数据, 1, 4)
补充内容 (2023-3-6 18:02):
如果在上面的代码里面再插入点Access的cha询命令,可能还查不了15个循环就报错cha询失败了!
补充内容 (2023-3-6 18:02):
Access数据操作的模块用的论坛大佬分享的:https://125.confly.eu.org/forum.php?mod ... mp;highlight=Access |
|