[已解决]sql写入遇见奇葩问题,请帮忙指点一下,谢谢
本帖最后由 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 =
_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 求大神指点 是不是 数据库设计上的问题 留个言,数据库一般如何设计? 回复 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="後臺伺服器"
測試看看 回复 1# xuanniao110
另外 資產編號 很少人用 INT 的除非 你確定 絕對不會有字母或者其他的符號 通常編號 會用 字元 才對 au3越来越厉害了 回复 4# kk_lee69
我是确定不会用上字母的 全是数字 回复 3# kk_lee69
按照你说的这种方式 替换测试 是可以写入数据库的 一点问题都没有 回复 7# xuanniao110
用原本的 會有問題的語法然後 輸入的時候依照沒問題的那些資料輸入
然後 在 83行 下面用 MSGBOX 將你 讀取到的那些變數$Number ,$Time那些 等等的
肯定 是那些讀取的地方出問題
尤其是 時間的部分 本帖最后由 xuanniao110 于 2016-10-4 17:50 编辑
回复 8# kk_lee69
所有的变量也就是变数 都能读取出来 编号是数字 时间读取出来是xxx年xx月xx日
查询出来显示是如图这样的
会不会就是时间的问题呢? 回复 9# xuanniao110
把時間 取代掉換成 ="20160101"之類的 一個一個換 不就知道是哪邊的問題了 本帖最后由 xuanniao110 于 2016-10-4 17:50 编辑
回复 10# kk_lee69
已经确定是数据库设计的问题,问题就出在时间上。 谢谢KK的帮助,都是数据库上设计有问题,代码没有任何问题。 回复 11# xuanniao110
通常 ERP 再處理的時候很少用 時間日期 當作資料庫欄位型態會有許多限制
通常日期都會使用 Varchar 或者 INT 處理......
但是 你直接讀取 AU3 得到的是 日期格式可能是這樣出問題
因此 寫入前應該做一些的處理 回复 12# kk_lee69
谢谢 我已经都改正了
页:
[1]