shano 发表于 2010-10-19 13:44:48

MDB数据库 更新问题

本帖最后由 shano 于 2010-10-19 13:48 编辑

一个库 表名S_data2个字段一个IP   一个DATA
程序1把IP的值写入到数据库后    程序2吧DATA添加到IP 同一行也就是update的问题
我现在用'updateS_dataset DATA =   "'& $变量&'"' 会把所有列都更新
请教只更新最后添加的一条记录    不能用where 条件语句因为IP的值不是固定的 而且要写到2个程序里 不能保存为变量


代码如下




Local $datadir = "data.mdb"
local $acc_pwd = ""

_sql_addip("192.168.1.1");
_sql_addDATA($DATA);

Func _sql_addip($ip);数据库添加用户函数
          Local $d_name = ""
                $conn = ObjCreate("ADODB.Connection")
          $RS = ObjCreate("ADODB.Recordset")
          $conn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $datadir& ";Jet Oledb:Database Password="&$acc_pwd)
          $RS.ActiveConnection = $conn
                $RS.Open ('Select * From S_data where '& "ip" &'=' & '"' & $ip & '"')
                While (Not $RS.eof And Not $RS.bof)
                $d_name = $RS.Fields (1).value
                $RS.movenext
                WEnd
                if $d_name <> $ip then
                $update = 'insert into S_data (ip) values ("' & $ip & '")'
                $conn.Execute($update)
          Return 0
          Else
                Return 1
          EndIf
      $RS.close
                $conn.close
        EndFunc
       
       
       
        Func _sql_addDATA($DATA);数据库添加用户函数
          Local $d_name = ""
                $conn = ObjCreate("ADODB.Connection")
          $RS = ObjCreate("ADODB.Recordset")
          $conn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $datadir& ";Jet Oledb:Database Password="&$acc_pwd)
          $RS.ActiveConnection = $conn
                $RS.Open ('SELECT top 1 * FROM S_data ORDER BY Rnd(id) ')
       
                $update ='updateS_dataset DATA =   "'& $DATA&'"'


                $conn.Execute($update)
          Return 0
       
       
      $RS.close
                $conn.close
        EndFunc

kingfirekkk 发表于 2010-10-19 15:45:56

建议兄弟使用UDF写,那样的话会简单一点。有时,此路不通,换一个方式也能实现的。

auto 发表于 2010-10-19 21:13:16

updateS_dataset DATA =   "'& $DATA&'wheres_data.data IS NULL"

xgysww 发表于 2010-10-25 23:14:52

这数据库怎么那么复杂呀

akmm88 发表于 2010-10-26 09:20:26

updateS_dataset DATA = 'xxxx' where ID=(SELECT MAX(ID) FROM S_data)
或 updateS_dataset DATA = 'xxxx' where ID=(SELECT top 1 FROM S_data order by ID DESC)

一般数据库都有个标识列, 如 ID 具体列名自行更改.
页: [1]
查看完整版本: MDB数据库 更新问题