求解数据库求和[已解决]
本帖最后由 xuanniao110 于 2019-7-15 19:15 编辑$addfld.Close
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open("SELECT SUM(2019xs) as sumvalue FROM ["&$mon&"yue"&"] where rq <= "&Int($mday));当月销售的数据
While Not $RS.eof And Not $RS.bof
If @error = 1 Then ExitLoop
$xszh = $RS.Fields(0).value
MsgBox(0,"",$xszh)
$RS.movenext
WEnd
$RS.close
$addfld.Close
求解 是我语句错误么? 是程序语句错误还是SQL运用语句错误?
下面是AU3报错信息
>"D:\Program Files\AutoIt3\SciTE\AccAu3Wrapper\AccAu3Wrapper.exe" /run /prod /ErrorStdOut /in "D:\Desktop\新建文件夹\Z11\新界面.au3" /UserParams
+>14:14:24 开始 AccAu3Wrapper v.16.306.1237.0 SciTE v.3.6.2.0
------------------------------------------------------------------------------------------------------
键盘布局:00000804操作系统:WIN_10/CPU:X64 系统架构:X64 文件编码:ANSI(512) 字符集:936
SciTE目录 => D:\Program Files\AutoIt3\SciTE 用户目录 => C:\Users\Administrator\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\Administrator\AppData\Local\AutoIt v3\SciTE
------------------------------------------------------------------------------------------------------
>运行 AU3Check (3.3.14.2)从:D:\Program Files\AutoIt3
+>14:14:24 AU3Check 语法检查结束.rc:0
>运行:(3.3.14.2):D:\Program Files\AutoIt3\autoit3.exe "D:\Desktop\新建文件夹\Z11\新界面.au3"
--> 按 Ctrl+Alt+Break 重新启动或按 Ctrl+Break 停止
@@ (587) :(14:25) xssj()
@@ (525) :(14:27) scbb()
"D:\Desktop\?????\Z11\???.au3" (577) : ==> The requested action with this object has failed.:
$RS.Open("SELECT SUM(2019xs) as sumvalue FROM ["&$mon&"yue"&"] where rq <= "&Int($mday))
$RS^ ERROR
->14:14:27 AutoIt3.exe 结束.rc:1
+>14:14:27 AccAu3Wrapper 完成.
>Exit code: 1 Time: 3.473
补充下;
#AccAu3Wrapper_UseX64 = n
;数据库定义
$mdb_data_path = @ScriptDir & "\data.mdb"
$mdb_data_pwd = "z11"
$yue = @MON ;月
$ri = @MDAY ;日
$XS = @YEAR & "xs" ;销售列
$JS = @YEAR & "js" ;件数列
$VIP = @YEAR & "vip" ;会员列
$WF = @YEAR & "wf" ;微粉列
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open("SELECT SUM(2019xs) FROM ["&$yue&"yue"&"] where rq <= "&Int($ri));当月销售的数据
While (Not $RS.eof And Not $RS.bof);循环读表 有资料就跑回圈没资料就会跳出
MsgBox(0,"", $RS.Fields(0).value);显示去年当月总销售数据
$RS.movenext;下一笔资料
WEnd;结束循环读 xuanniao110 发表于 2019-7-13 17:11
补充下;
#AccAu3Wrapper_UseX64 = n
;数据库定义
#AccAu3Wrapper_UseX64 = n
;数据库定义
$mdb_data_path = @ScriptDir & "\data.mdb";数据库文件
$mdb_data_pwd = "z11";数据库密码
$adTable = "Table1";数据库表名
$yue = @MON ;月
$ri = @MDAY ;日
$XS = @YEAR & "xs" ;销售列
$JS = @YEAR & "js" ;件数列
$VIP = @YEAR & "vip" ;会员列
$WF = @YEAR & "wf" ;微粉列
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.open("SELECT * FROM " & $adTable)
Local $total = 0
Local $tota2 = 0
Local $tota3 = 0
While Not $RS.eof And Not $RS.bof
If @error = 1 Then ExitLoop
$total &= $RS.Fields(0).value;第一列
$tota2 &= $RS.Fields(1).value;第二列
$tota3 &= $RS.Fields(2).value;第三列
$RS.movenext
WEnd;结束循环读
MsgBox(0,"", $total& @CRLF &$tota2& @CRLF &$tota3);显示去年当月总销售数据
$RS.close
$addfld.Close
chzj589 发表于 2019-7-13 22:06
#AccAu3Wrapper_UseX64 = n
;数据库定义
大神,是根据日期求07月表中2019xs这一列的总和!
我知道你是让我在查询的同时进行变量,最后得出总和 xuanniao110 发表于 2019-7-13 23:30
大神,是根据日期求07月表中2019xs这一列的总和!
我知道你是让我在查询的同时进行变量,最后得出总和
这句改为:
$RS.Open("SELECT SUM(2019xs) FROM ["&$yue&"yue"&"] where rq <= '" &Int($ri)&"'");当月销售的数据
试试看 xuanniao110 发表于 2019-7-13 23:30
大神,是根据日期求07月表中2019xs这一列的总和!
我知道你是让我在查询的同时进行变量,最后得出总和
#AccAu3Wrapper_UseX64 = n
;数据库定义
$mdb_data_path = @ScriptDir & "\data.mdb";数据库文件
$mdb_data_pwd = "z11";数据库密码
$adTable1 = "01yue";数据库表1
$adTable2 = "07yue";数据库表2
$adTable3 = "yjh";数据库表3
$yue = @MON ;月
$ri = @MDAY ;日
$XS = @YEAR & "xs" ;销售列
$JS = @YEAR & "js" ;件数列
$VIP = @YEAR & "vip" ;会员列
$WF = @YEAR & "wf" ;微粉列
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open("SELECT SUM(2019xs) FROM ["&$yue&"yue"&"] where rq <= "&Int($ri));当月销售的数据
$RS.open("SELECT * FROM " & $adTable2 & " WHERE rq <='" & Int($ri) & "'")
Local $total = 0 ;总和
Local $tota2 = 0
Local $tota3 = 0
While Not $RS.eof And Not $RS.bof
$total &= $RS.Fields(0).value;第一列
$RS.movenext
WEnd;结束循环读
MsgBox(0, "", $total);显示
$RS.close
$addfld.Close
可以提供 範例資料庫 與出錯的 範例程式嗎?? kk_lee69 发表于 2019-7-14 14:33
可以提供 範例資料庫 與出錯的 範例程式嗎??
明天我提供给你 本帖最后由 chzj589 于 2019-7-14 21:53 编辑
xuanniao110 发表于 2019-7-14 18:12
明天我提供给你
应该可以用,试试
#AccAu3Wrapper_UseX64 = n
;数据库定义
$mdb_data_path = @ScriptDir & "\data.mdb";数据库文件
$mdb_data_pwd = "z11";数据库密码
$adTable1 = "01yue";数据库表1
$adTable2 = "07yue";数据库表2
$adTable3 = "yjh";数据库表3
$yue = @MON ;月
$ri = @MDAY ;日
$XS = @YEAR & "xs" ;销售列
$JS = @YEAR & "js" ;件数列
$VIP = @YEAR & "vip" ;会员列
$WF = @YEAR & "wf" ;微粉列
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.open("SELECT SUM(2019xs) FROM " & $adTable2 & " WHERE rq <='" & $ri & "'");当月销售的数据
Local $total = 0
While Not $RS.eof And Not $RS.bof
If @error = 1 Then ExitLoop
$total = $RS.Fields(0).value
$RS.movenext
WEnd
MsgBox(0, "", StringFormat('%.2f', $totale));显示
$RS.close
$addfld.Close
$RS.open("SELECT SUM(2019xs) FROM 07yue WHERE rq <='" & $ri & "'");当月销售的数据
kk_lee69 发表于 2019-7-14 14:33
可以提供 範例資料庫 與出錯的 範例程式嗎??
程序附件
程序数据库
chzj589 发表于 2019-7-14 20:09
应该可以用,试试
#AccAu3Wrapper_UseX64 = n
程序附件和程序数据库都已上传
修改你改成的语句依然有问题 本帖最后由 chzj589 于 2019-7-16 08:13 编辑
xuanniao110 发表于 2019-7-15 09:08
程序附件和程序数据库都已上传
修改你改成的语句依然有问题
怪事,在我建立的数据库就能通过。
整列合计吧
Local $ri1 = @MDAY
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
Local $xszh, $xszh1
;$RS.open("SELECT * FROM 07yue")
$RS.open("SELECT * FROM 07yue WHERE rq<=" & $ri1 )
While Not $RS.eof And Not $RS.bof
If @error = 1 Then ExitLoop
$xszh += $RS.Fields(2).value
$xszh1 += $RS.Fields(3).value
;MsgBox(0,"",$xszh)
$RS.movenext
WEnd
MsgBox(0,"","目标数据合计"&$xszh& @CRLF &"销售数据合计"&$xszh1)
$RS.close
$addfld.Close
chzj589 发表于 2019-7-15 12:02
怪事,在我建立的数据库就能通过。
整列合计吧
整列合计,就不能通过日期合计了!比如我选择的10日,那合计的销售总和就应该是10日以前包括10日的总和 本帖最后由 chzj589 于 2019-7-15 14:09 编辑
xuanniao110 发表于 2019-7-15 09:08
程序附件和程序数据库都已上传
修改你改成的语句依然有问题
问题出在数据库的字段名。
把字段名<rq,2019mb,2019xs>改为<kzhmima,kzhmima1,kzhmim2>
注:日期在10日前需为二位数及为01-09
用:
Local $ri1 = @MDAY ;日
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.open("SELECT SUM(kzhmima1) FROM 01yue WHERE kzhmima<='" & $ri1 & "'")
Local $total = 0 ;总和
Local $totale = 0
While Not $RS.eof And Not $RS.bof
If @error = 1 Then ExitLoop
;$total = $RS.Fields(3).value
$totale = $RS.Fields(0).value
$RS.movenext
WEnd
MsgBox(0, "", StringFormat('%.2f', $totale));显示
$RS.close
$addfld.Close
xuanniao110 发表于 2019-7-15 13:56
整列合计,就不能通过日期合计了!比如我选择的10日,那合计的销售总和就应该是10日以前包括10日的总和
14楼的试试看:face (10):
页:
[1]
2