找回密码
 加入
搜索
查看: 2173|回复: 12

[网络通信] [已解决]sql写入遇见奇葩问题,请帮忙指点一下,谢谢

  [复制链接]
发表于 2016-10-2 10:16:15 | 显示全部楼层 |阅读模式
本帖最后由 xuanniao110 于 2016-10-4 17:49 编辑
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GuiConstantsEx.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <Array.au3>
#include <Excel.au3>
#NoTrayIcon
#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_Outfile_x64=123.exe
#PRE_Res_requestedExecutionLevel=None
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****



Global $mdb_data_Server = "172.16.102.40"
Global $mdb_data_id = "wfj"
Global $mdb_data_pwd = "100200"
Global $mdb_data_Company = "Asset"

$zcjl="[资产记录]"


$Number="40009"
$Time="20140930"
$name="IBM服务器"
$Model="8202-E4C"
$Ment="营运部"
$Add="机房服务器柜"
$Num1="1"
$Num2="1"
$Unit="台"
$Status="使用"
$Note="后台服务器"

$addfld = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$addfld.Open ("driver={SQL Server};server="&$mdb_data_Server&";uid="&$mdb_data_id&";pwd="&$mdb_data_pwd&";database="&$mdb_data_Company)  ;主机名IP127.0.0.1,UID=用户,PWD=密码,database=数据库名  
$RS.ActiveConnection = $addfld ; 设定RS 是 conn 的集合 重要的部份
$addfld.Execute("INSERT INTO "&$zcjl&" ([资产编号], [购入时间], [资产名称], [规格型号], [使用部门], [现存地址], [账面数量], [实际数量], [单位], [资产状况], [备注]) VALUES ('"&$Number&"', '"&$Time&"', '"&$name&"', '"&$Model&"', '"&$Ment&"', '"&$Add&"', '"&$Num1&"', '"&$Num2&"', '"&$Unit&"', '"&$Status&"', '"&$Note&"')")
上面代码,可以正常写入,没有任何问题。
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GuiConstantsEx.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <Array.au3>
#include <Excel.au3>
#NoTrayIcon

Global $mdb_data_Server = "172.16.102.40"
Global $mdb_data_id = "wfj"
Global $mdb_data_pwd = "100200"
Global $mdb_data_Company = "Asset"

;数据表参数
Global $zcjl = "[资产记录]"
Global $DBjl = "[调拨记录]"





    $Form3 = GUICreate("资产登记", 407, 316, 567, 316)
        $Group5 = GUICtrlCreateGroup("", 3, 0, 401, 281)
        $Label9 = GUICtrlCreateLabel("资产编号:", 16, 24, 64, 17)
        $Input2 = GUICtrlCreateInput("", 72, 22, 121, 21)
        $Label10 = GUICtrlCreateLabel("购入时间:", 205, 23, 64, 17)
        $Date3 = GUICtrlCreateDate("", 264, 20, 121, 21)
        $Label11 = GUICtrlCreateLabel("资产名称:", 16, 55, 64, 17)
        $Input3 = GUICtrlCreateInput("", 72, 53, 121, 21)
        $Label12 = GUICtrlCreateLabel("规格型号:", 205, 55, 64, 17)
        $Input4 = GUICtrlCreateInput("", 264, 53, 121, 21)
        $Label13 = GUICtrlCreateLabel("使用部门:", 16, 86, 64, 17)
        $Combo2 = GUICtrlCreateCombo("其他", 72, 84, 121, 21, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
        GUICtrlSetData(-1, "营运部|财务部|超市部|人力部|会员中心")
        $Label14 = GUICtrlCreateLabel("现存地址:", 205, 86, 64, 17)
        $Input5 = GUICtrlCreateInput("", 264, 84, 121, 21)
        $Label15 = GUICtrlCreateLabel("账面数量:", 16, 116, 64, 17)
        $Input6 = GUICtrlCreateInput("", 72, 114, 121, 21)
        $Label16 = GUICtrlCreateLabel("实际数量:", 205, 116, 64, 17)
        $Input7 = GUICtrlCreateInput("", 264, 114, 121, 21)
        $Label17 = GUICtrlCreateLabel("资产单位:", 16, 145, 64, 17)
        $Input8 = GUICtrlCreateInput("", 72, 143, 121, 21)
        $Edit1 = GUICtrlCreateEdit("", 16, 200, 241, 65, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
        GUICtrlSetData(-1, "")
        $Button8 = GUICtrlCreateButton("登记", 288, 200, 81, 65)
        $Label18 = GUICtrlCreateLabel("备注:", 16, 176, 40, 17)
        $Label19 = GUICtrlCreateLabel("资产现状:", 205, 145, 64, 17)
        $Combo3 = GUICtrlCreateCombo("其他", 264, 143, 121, 21, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
        GUICtrlSetData(-1, "使用|闲置|备用|维修|报废|借出")
        $StatusBar3 = _GUICtrlStatusBar_Create($Form3)
        Dim $StatusBar3_PartsWidth[2] = [150, -1]
        _GUICtrlStatusBar_SetParts($StatusBar3, $StatusBar3_PartsWidth)
        _GUICtrlStatusBar_SetText($StatusBar3, @TAB & "乐山王府井购物中心", 0)
        _GUICtrlStatusBar_SetText($StatusBar3, @TAB & "营运部资产登记", 1)
        _GUICtrlStatusBar_SetMinHeight($StatusBar3, 25)
        GUISetState(@SW_SHOW)

        Dim $nMsg
        While 1
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                                Exit
                        Case $Button8
                                $Number = GUICtrlRead($Input2)
                                $Time = GUICtrlRead($Date3)
                                $name = GUICtrlRead($Input3)
                                $Model = GUICtrlRead($Input4)
                                $Ment = GUICtrlRead($Combo2)
                                $Add = GUICtrlRead($Input5)
                                $Num1 = GUICtrlRead($Input6)
                                $Num2 = GUICtrlRead($Input7)
                                $Unit = GUICtrlRead($Input8)
                                $Status = GUICtrlRead($Combo3)
                                $Note = GUICtrlRead($Edit1)
                                If $Number = "" Then
                                        MsgBox(48, "提示", "有项目没有填写!")
                                ElseIf $name = "" Then
                                        MsgBox(48, "提示", "有项目没有填写!")
                                Else
                                        If $Num1 = "" Then
                                                MsgBox(48, "提示", "有项目没有填写!")
                                        ElseIf $Model = "" Then
                                                GUICtrlSetData($Input4,"空")
                                        Else
                                                If  $Add = "" Then
                                                MsgBox(48, "提示", "有项目没有填写!")
                                        ElseIf $Unit = "" Then
                                                MsgBox(48, "提示", "有项目没有填写!")
                                        Else
                                                If $Num2 = "" Then 
                                                   MsgBox(48, "提示", "有项目没有填写!")
                                           ElseIf         $Ment = "" Then
                                                   MsgBox(48, "提示", "有项目没有填写!")
                                           Else
                                                $addfld = ObjCreate("ADODB.Connection")
                        $RS = ObjCreate("ADODB.Recordset")
                        $addfld.Open ("driver={SQL Server};server="&$mdb_data_Server&";uid="&$mdb_data_id&";pwd="&$mdb_data_pwd&";database="&$mdb_data_Company)  ;主机名IP127.0.0.1,UID=用户,PWD=密码,database=数据库名  
                                                $RS.ActiveConnection = $addfld ; 设定RS 是 conn 的集合 重要的部份
                        $addfld.Execute("INSERT INTO "&$zcjl&" ([资产编号], [购入时间], [资产名称], [规格型号], [使用部门], [现存地址], [账面数量], [实际数量], [单位], [资产状况], [备注]) VALUES ('"&$Number&"', '"&$Time&"', '"&$name&"', '"&$Model&"', '"&$Ment&"', '"&$Add&"', '"&$Num1&"', '"&$Num2&"', '"&$Unit&"', '"&$Status&"', '"&$Note&"')")
                                                $RS.close
                                                $addfld.Close
                                                MsgBox(48, '提示', '资产增加成功!')
                                                
                                        EndIf
                                EndIf
                        EndIf
                EndIf
                EndSwitch
        WEnd
此代码却怎么都不能写入,无法正常的录入数据


数据表类型设计如图


@kk_lee69    求大神指点   是不是   数据库设计上的问题

本帖子中包含更多资源

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

×
发表于 2016-10-2 23:12:19 | 显示全部楼层
留个言,数据库一般如何设计?
发表于 2016-10-3 11:15:59 | 显示全部楼层
回复 1# xuanniao110

先把

                                $Number = GUICtrlRead($Input2)
                                $Time = GUICtrlRead($Date3)
                                $name = GUICtrlRead($Input3)
                                $Model = GUICtrlRead($Input4)
                                $Ment = GUICtrlRead($Combo2)
                                $Add = GUICtrlRead($Input5)
                                $Num1 = GUICtrlRead($Input6)
                                $Num2 = GUICtrlRead($Input7)
                                $Unit = GUICtrlRead($Input8)
                                $Status = GUICtrlRead($Combo3)
                                $Note = GUICtrlRead($Edit1)
這段  換成 上面的
                                                                $Number="40009"
                                                                $Time="20140930"
                                                                $name="IBM伺服器"
                                                                $Model="8202-E4C"
                                                                $Ment="營運部"
                                                                $Add="機房伺服器櫃"
                                                                $Num1="1"
                                                                $Num2="1"
                                                                $Unit="台"
                                                                $Status="使用"
                                                                $Note="後臺伺服器"

測試看看
发表于 2016-10-3 11:34:13 | 显示全部楼层
回复 1# xuanniao110

另外 資產編號 很少人用 INT 的  除非 你確定 絕對不會有字母或者其他的符號    通常編號 會用 字元 才對
发表于 2016-10-4 08:57:21 | 显示全部楼层
au3越来越厉害了
 楼主| 发表于 2016-10-4 09:35:55 | 显示全部楼层
回复 4# kk_lee69


我是确定  不会用上字母的   全是数字
 楼主| 发表于 2016-10-4 09:37:38 | 显示全部楼层
回复 3# kk_lee69

按照你说的这种方式   替换测试   是可以写入数据库的   一点问题都没有
发表于 2016-10-4 10:18:05 | 显示全部楼层
回复 7# xuanniao110

用原本的 會有問題的語法  然後 輸入的時候  依照  沒問題的那些資料輸入

然後 在 83行 下面  用 MSGBOX 將你 讀取到的那些變數  $Number ,$Time  那些 等等的

肯定 是那些讀取的地方出問題  

尤其是 時間的部分
 楼主| 发表于 2016-10-4 13:57:49 | 显示全部楼层
本帖最后由 xuanniao110 于 2016-10-4 17:50 编辑

回复 8# kk_lee69

所有的变量也就是变数   都能读取出来    编号是数字    时间读取出来是  xxx年xx月xx日


查询出来显示是如图这样的



会不会就是时间的问题呢?

本帖子中包含更多资源

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

×
发表于 2016-10-4 15:07:51 | 显示全部楼层
回复 9# xuanniao110


把時間 取代掉  換成 ="20160101"  之類的 一個一個換 不就知道是哪邊的問題了
 楼主| 发表于 2016-10-4 17:49:05 | 显示全部楼层
本帖最后由 xuanniao110 于 2016-10-4 17:50 编辑

回复 10# kk_lee69

已经确定是数据库设计的问题,问题就出在时间上。   谢谢KK的帮助,都是数据库上设计有问题,代码没有任何问题。
发表于 2016-10-4 17:53:11 | 显示全部楼层
回复 11# xuanniao110

通常 ERP 再處理的時候  很少用 時間日期 當作資料庫欄位型態  會有許多限制

通常日期都會使用 Varchar 或者 INT 處理......

但是 你直接讀取 AU3 得到的是 日期格式  可能是這樣出問題  

因此 寫入前應該做一些的處理
 楼主| 发表于 2016-10-4 20:09:52 | 显示全部楼层
回复 12# kk_lee69

谢谢   我已经都改正了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-1 07:28 , Processed in 0.079148 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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