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可再發行

一樣是無法使用的.....
页: 1 [2] 3
查看完整版本: 为什么replace 运行不了。是()的问题吗?