找回密码
 加入
搜索
查看: 6040|回复: 20

[网络通信] 求解数据库求和[已解决]

[复制链接]
发表于 2019-7-13 14:18:50 | 显示全部楼层 |阅读模式
本帖最后由 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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2019-7-13 17:11:38 | 显示全部楼层
补充下;
#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;结束循环读
发表于 2019-7-13 22:06:28 | 显示全部楼层
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

 楼主| 发表于 2019-7-13 23:30:22 | 显示全部楼层
chzj589 发表于 2019-7-13 22:06
[au3]
#AccAu3Wrapper_UseX64 = n
;数据库定义

大神,是根据日期求07月表中2019xs这一列的总和!
我知道你是让我在查询的同时进行变量,最后得出总和
发表于 2019-7-14 08:21:47 | 显示全部楼层
xuanniao110 发表于 2019-7-13 23:30
大神,是根据日期求07月表中2019xs这一列的总和!
我知道你是让我在查询的同时进行变量,最后得出总和

这句改为:
$RS.Open("SELECT SUM(2019xs) FROM ["&$yue&"yue"&"] where rq <= '" &Int($ri)&"'");当月销售的数据  
试试看
发表于 2019-7-14 08:32:41 | 显示全部楼层
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
发表于 2019-7-14 14:33:46 | 显示全部楼层
可以提供 範例資料庫 與出錯的 範例程式嗎??
 楼主| 发表于 2019-7-14 18:12:22 | 显示全部楼层
kk_lee69 发表于 2019-7-14 14:33
可以提供 範例資料庫 與出錯的 範例程式嗎??

明天我提供给你
发表于 2019-7-14 20:09:01 | 显示全部楼层
本帖最后由 chzj589 于 2019-7-14 21:53 编辑

应该可以用,试试

#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 & "'");当月销售的数据
 楼主| 发表于 2019-7-15 09:06:54 | 显示全部楼层
kk_lee69 发表于 2019-7-14 14:33
可以提供 範例資料庫 與出錯的 範例程式嗎??

程序附件   
程序数据库   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2019-7-15 09:08:00 | 显示全部楼层
chzj589 发表于 2019-7-14 20:09
应该可以用,试试
[au3]
#AccAu3Wrapper_UseX64 = n

程序附件和程序数据库都已上传   
修改你改成的语句依然有问题  
发表于 2019-7-15 12:02:31 | 显示全部楼层
本帖最后由 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










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2019-7-15 13:56:57 | 显示全部楼层
chzj589 发表于 2019-7-15 12:02
怪事,在我建立的数据库就能通过。
整列合计吧
[au3]

整列合计,就不能通过日期合计了!比如我选择的10日,那合计的销售总和就应该是10日以前包括10日的总和
发表于 2019-7-15 14:02:46 | 显示全部楼层
本帖最后由 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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2019-7-15 16:07:12 | 显示全部楼层
xuanniao110 发表于 2019-7-15 13:56
整列合计,就不能通过日期合计了!比如我选择的10日,那合计的销售总和就应该是10日以前包括10日的总和

14楼的试试看
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 11:33 , Processed in 0.084139 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表