[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/04/17(Mon) 10:12
投稿者名:つぼちゃん
Eメール:
URL :
タイトル:
VBからACCESSクエリの実行
ACCESSでReplace関数を使用したクエリを作成し、ACCESSでは実行可能なのですが、
VBから実行すると、実行時エラー「3085」式に未定義関数'Replace'があります。
とエラーが出て実行できません。
これはDAOが'Replace'を認識できていないのでしょうか。
回避不可能でしょうか。また代替案はないのでしょうか。

クエリ1
SELECT A.*, B.カラム2
FROM テーブルA AS A, テーブルB AS B
WHERE Replace(A.カラム1,"ツ","ッ")=B.カラム2;

クエリ2
UPDATE クエリ1 SET フラグ = 1;

VBより
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase("D:\DB1.mdb")
db.Execute ("クエリ2")
db.Close
Set db = Nothing
ws.Close
Set ws = Nothing

OS:XPpro
VB:6.0sp4
ACCESS:2003
DAO:3.6

投稿時間:2006/04/17(Mon) 14:25
投稿者名:だい
URL :
タイトル:
Re: VBからACCESSクエリの実行
SandBoxモードと、Jet4.0SP8の適用の有無を確認してみてください。
hhttp://support.microsoft.com/kb/239482/JA/
hhttp://support.microsoft.com/default.aspx?kbid=239114

投稿時間:2006/04/17(Mon) 16:05
投稿者名:つぼちゃん
Eメール:
URL :
タイトル:
Re^2: VBからACCESSクエリの実行
> SandBoxモードと、Jet4.0SP8の適用の有無を確認してみてください。
> hhttp://support.microsoft.com/kb/239482/JA/
> hhttp://support.microsoft.com/default.aspx?kbid=239114

確認し、やってみましたがダメでした。
Replace関数は一覧にないから対象外なのですかね。
下記を見ると現象と原因は書いてあるのですが、対処方法がないようです。
ダメなのかな。
hhttp://support.microsoft.com/default.aspx?scid=kb;ja;209864

投稿時間:2006/04/17(Mon) 23:10
投稿者名:だい
URL :
タイトル:
Re^3: VBからACCESSクエリの実行
Access以外のアプリケーションからは呼べないということですね。
では、無理にやるなら、OLEオートメーション経由でしょうか(本当に無理筋ですが)。

Function AccessOLETest()
Dim oAcc As Object
    Set oAcc = CreateObject("Access.Application")
    oAcc.OpenCurrentDatabase ("C:\temp\db1.mdb")
    oAcc.Application.Currentdb.Execute " SELECT Replace(""Hello"",""He"",""Ho"") INTO T1_" &_
    Format$(Now, "MMDDHHNNSS")
    oAcc.Quit
    Set oAcc = Nothing
End Function

投稿時間:2006/04/18(Tue) 14:21
投稿者名:つぼちゃん
Eメール:
URL :
タイトル:
Re^4: VBからACCESSクエリの実行
だいさん、お付き合いいただきありがとうございます。

自社内の作業のものなので、この部分は手動でやることにしました。
でもお客さんの開発物だったら手動でやってくださいなんて言えないもんなあ...