數據庫數據寫入問題[已解决]
本帖最后由 sky_huir 于 2010-8-27 09:07 编辑請問各位大大,一個數據表中共有12列,每列均賦值為A,怎么才能單獨修改某一列的值呢? 本帖最后由 sky_huir 于 2010-8-26 08:37 编辑
請問各位大大,一個數據表中共有12列,每列均賦值為A,怎么才能單獨修改某一列的值呢?
sky_huir 发表于 2010-8-26 08:20 http://www.autoitx.com/images/common/back.gif
例如如下的數據庫表:
1 TP LED EZKEY BT WLAN MODEM CAM LCDCRT HDMI ODD USB SPEAKER
1 A A A A A A A A A A A A
根據$CmdLine,將$FLD設置為對應的列名,然后單獨將 對應的$FLD列的值修改為$CmdLine。還請各位大蝦幫幫小弟,感激涕零!!!
代碼如下:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
$mdb_data_path="db1.mdb"
$mdb_data_pwd=""
$T="T"
$TP="A"
$LED="A"
$EZKEY="A"
$BT="A"
$WLAN="A"
$MODEM="A"
$CAM="A"
$LCDCRT="A"
$HDMI="A"
$ODD="A"
$USB="A"
$SPEAKER="A"
$tblname="Sheet1"
IF $CmdLine = "" Then
;if Not FileExists($mdb_data_path) Then
$newMdb = ObjCreate("ADOX.Catalog")
$newMdb.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
$newmdb.ActiveConnection.Close
$addtbl = ObjCreate("ADODB.Connection")
$addTbl.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
$addTbl.Execute("CREATE TABLE " & $tblname)
$addtbl.Close
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
$addfld.Execute("ALTER TABLE " & $tblname & " ADD 1 identity(1, 1) primary key,TP VARCHAR,LED VARCHAR,EZKEY VARCHAR,BT VARCHAR,WLAN VARCHAR,MODEM VARCHAR,CAM VARCHAR ,LCDCRT VARCHAR ,HDMI VARCHAR,ODD VARCHAR,USB VARCHAR,SPEAKER VARCHAR,T VARCHAR")
$addfld.Execute("insert into Sheet1 (TP,LED,EZKEY,BT,WLAN,MODEM,CAM,LCDCRT,HDMI,ODD,USB,SPEAKER,T) values('"&$TP&"','"&$LED&"','"&$EZKEY&"','"&$BT&"','"&$WLAN&"','"&$MODEM&"','"&$CAM&"','"&$LCDCRT&"','"&$HDMI&"','"&$ODD&"','"&$USB&"','"&$SPEAKER&"','"&$T&"')")
$addfld.Close
MsgBox(64,"提示","建立數據庫成功",1)
Else
_update()
EndIf
Exit
;EndFunc
Func _update()
;$strn=GUICtrlRead(GUICtrlRead($LISTVIEW1))
;$Strnspin=$stringsplit($strn,"|")
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
Select
Case $CmdLine = "T"
Dim $FLD = "TP"
Case $CmdLine = "L"
Dim $FLD = "LED"
Case $CmdLine = "E"
Dim $FLD = "EZKEY"
Case $CmdLine = "B"
Dim $FLD = "BT"
Case $CmdLine = "W"
Dim $FLD = "Wireless"
Case $CmdLine = "M"
Dim $FLD = "MODEM"
Case $CmdLine = "C"
Dim $FLD = "Caram"
Case $CmdLine = "LC"
Dim $FLD = "LCDCRT"
Case $CmdLine = "H"
Dim $FLD = "HDMI"
Case $CmdLine = "O"
Dim $FLD = "ODD"
Case $CmdLine = "U"
Dim $FLD = "USB"
Case $CmdLine = "S"
Dim $FLD = "SPEAKER"
Case $CmdLine = "SELECT"
_select()
Exit
EndSelect
MsgBox(0,"",$FLD &"測試完成!",1)
$TT= _Now()
$update = 'update Sheet1 set '"& $FLD& "' = "'& $CmdLine & '" WHERE T= "' & $TT & '"'
$addfld.Execute($update)
$addfld.close
;$Strn=$FLD
;$Strnspin=StringSplit($Strn,"|")
;$sQuery ="update Sheet1 set TP = '"$CmdLine"' WHERETP " & " = " & $Strnspin
;$addfld.Execute($sQuery)
;$addfld.Execute("insert into Sheet1 ("&$FLD&",T) values('"&$CmdLine&"','"&$TT&"')")
;$addfld.Execute("insert into Sheet1 ("&$FLD&") values('"&$CmdLine&"')")
EndFunc
Func _select()
;$addfld = ObjCreate("ADODB.Connection")
;$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
;$addfld.Open("select "&$FLD & " from " & $tblname)
;$tmep = $addfld.field(0).value
;MsgBox(0,"",$temp)
EndFunc 楼主是想根据变量给对应的列单独修改,也很想知道怎么解决,先站坑准备膜拜各位大大风采! 解决了!
$update = 'update Sheet1 set '& $FLD &' = "' & $CmdLine &'" WHERE T = "T"'
$addfld.Execute($update)
$addfld.close
不过还需要各位大虾帮忙,我查看了一些关于select的用法,基本都是按照列去查询,是否可以通过行的某个值去查询呢?
例如查询上面数据库例子中第一行中所包含字符“A”,并返回“A”的数量; 還是自己搞定了。哎,都沒人幫忙啊~~~~~~~~~~
Func _select()
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
$RS = ObjCreate("ADODB.Recordset")
;$SELECT = "SELECT * FROM Sheet1 WHERE TP=T"
$rs.activeconnection=$addfld
;$RS.OPEN($SELECT)
$rs.open("SELECT * FROMSHEET1")
For $i = 0 to $RS.Fields.count - 3
Global $ii = $i + 1
$TT = $RS.Fields($ii).VALUE
if $RS.Fields($ii).VALUE = "A" Then
;MsgBox(0,"","NG" & @CRLF & $ii )
_NG()
Else
EndIf
Next
MsgBox(0,"","哈哈哈",1)
$addfld.close
EndFunc
页:
[1]