kk_lee69
发表于 2017-6-27 16:43:04
回复 15# diandiand163
用我的代碼都不需要引用其他的
diandiand163
发表于 2017-6-27 16:44:58
$conn.Execute("UPDATE [采集存储表] SET [标题] = Replace([标题],'111','000') WHERE ID=1")
没有任何变化!不行。
chzj589
发表于 2017-6-27 16:50:09
回复 17# diandiand163
#cs ____________________________________
例子: 示例 2
描述: 搜索数据库文件中的表,并更新表中的数据记录
语法: Update 表名 set 列名 = 新值 where 列名 = 某值
Update 表名 set 列名 = 新值,列名 = 新值... where 列名 = 某值
参数: $adSource- 打开数据库文件的完整路径以及数据库文件名
$adTable - 搜索的表名称
$adCol - 搜索的字段名
$adQuery - 搜索的字符串
$adcCol - 需要更新的字段名
$adData - 更新后字符串,新的字符串将会储存在$adcCol
#ce _______________脚本开始_________________
#AutoIt3Wrapper_UseX64 = n
$adSource = @ScriptDir & "\DB1.mdb"
$adTable = "Table1"
$adCol = "name";列名字段名
$adQuery = "A";某值搜索的字符串
$adcCol = "pass";列名更新后字段名
$adData = "A02";新值更新后字符串
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource)
$addfld.execute("update " & $adTable & " set " & $adcCol & " = '" & $adData & "' where " & $adCol & " = '" & $adQuery & "'")
$addfld.close
MsgBox(0, "提示", "更新数据成功!")
kk_lee69
发表于 2017-6-27 16:56:20
回复 18# chzj589
有詳細看資料嗎
kk_lee69
发表于 2017-6-27 16:57:33
回复 17# diandiand163
有詳細看MDB內容嗎
diandiand163
发表于 2017-6-27 17:20:27
本帖最后由 diandiand163 于 2017-6-27 17:22 编辑
回复 14# kk_lee69
原样复制你的代码,运行后没有任何变化。不行额!
diandiand163
发表于 2017-6-27 17:23:30
我有装 ACCESS ,当然有看的啦。不行。运行后根本没有任何变化。也不报错!
diandiand163
发表于 2017-6-27 17:28:18
这样吧,哥们。你加我QQ 393135050远程帮我看下!!!到底是哪出了问题?
chzj589
发表于 2017-6-27 18:13:07
回复 19# kk_lee69
我发时,LZ MDB还没出来
kk_lee69
发表于 2017-6-27 20:05:03
回复 24# chzj589
我使用
Provider=Microsoft.ACE.OLEDB.12.0
這個正常
但是使用
Provider=Microsoft.Jet.OLEDB.4.0就會跟樓主一樣 不知為何˙??
你呢??
chzj589
发表于 2017-6-27 20:14:08
回复 25# kk_lee69
我的系统是XP,只能用$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
Provider=Microsoft.ACE.OLEDB.12.0,还没用过。
chzj589
发表于 2017-6-27 20:16:41
本帖最后由 chzj589 于 2017-6-27 20:39 编辑
回复 25# kk_lee69
$read1 = '000'
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$addfld.execute("update " & $tblname & " set标题='" & $read1 & "' WHERE id=1")
$addfld.close
这样也可以
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS.ActiveConnection = $conn;好像是主連接,這個好像比較重要
$conn.Execute("update " & $tblname & " SET 标题 ='222' WHERE ID=1")
$conn.close
kk_lee69
发表于 2017-6-27 20:48:49
回复 11# diandiand163
http://bbs.csdn.net/topics/240082198
原來是設計Microsoft® Jet SQL 驅動程式的人,忘記放 Replace函數呀...bug殘念
換我給的程式吧....
kk_lee69
发表于 2017-6-28 02:32:46
回复 1# diandiand163
如果你下載並安裝
Microsoft Access數據庫引擎2010可再發行
那麼您可以在OleDbConnection對象的連接字符串中使用以下內容...
Provider=Microsoft.ACE.OLEDB.12.0
...並且該Replace()函數將可用於您的查詢。例如,以下代碼適用於我:
using (var conn = new OleDbConnection())
{
conn.ConnectionString =
@"Provider=Microsoft.ACE.OLEDB.12.0;" +
@"Data Source=C:\__tmp\testData.accdb;";
conn.Open();
using (var cmd = new OleDbCommand())
{
cmd.Connection = conn;
cmd.CommandText =
"UPDATE Table1 SET ProductType = Replace(ProductType, ' ', '')";
cmd.ExecuteNonQuery();
}
conn.Close();
}
請注意,您需要下載並安裝與.NET應用程序相同“位置”的Access數據庫引擎版本:32位應用程序需要32位版本的數據庫引擎,64位應用程序需要64位應用程序,位版本的數據庫引擎。
kk_lee69
发表于 2017-6-28 02:38:57
回复 22# diandiand163
測試過了我家裡的本來也不行
使用Microsoft.ACE.OLEDB.12.0; 也是不行
後來安裝
https://www.microsoft.com/en-US/download/details.aspx?id=13255
微軟的 Microsoft Access數據庫引擎2010可再發行
這個版本後就可以了
但是如果你安裝的是 Microsoft Access數據庫引擎2007可再發行
一樣是無法使用的.....