sky_huir 发表于 2010-8-26 08:20:39

數據庫數據寫入問題[已解决]

本帖最后由 sky_huir 于 2010-8-27 09:07 编辑

請問各位大大,一個數據表中共有12列,每列均賦值為A,怎么才能單獨修改某一列的值呢?

sky_huir 发表于 2010-8-26 08:35:03

本帖最后由 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

Tony_wistron 发表于 2010-8-26 08:43:03

楼主是想根据变量给对应的列单独修改,也很想知道怎么解决,先站坑准备膜拜各位大大风采!

sky_huir 发表于 2010-8-26 09:57:20

解决了!
$update = 'update Sheet1 set '& $FLD &' = "' & $CmdLine &'" WHERE T = "T"'
$addfld.Execute($update)
$addfld.close

不过还需要各位大虾帮忙,我查看了一些关于select的用法,基本都是按照列去查询,是否可以通过行的某个值去查询呢?
例如查询上面数据库例子中第一行中所包含字符“A”,并返回“A”的数量;

sky_huir 发表于 2010-8-27 09:05:06

還是自己搞定了。哎,都沒人幫忙啊~~~~~~~~~~
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]
查看完整版本: 數據庫數據寫入問題[已解决]