投稿時間:2007/07/06(Fri) 06:52 投稿者名:やまちゃん
Eメール:
URL :
タイトル:OSのキャッシュについて
お世話になります。
非常に素人です。 環境はVB6(SP3)です。
MDBにADO接続して読み書きするときに下記のようなサブルーチンを使用していますが、 Dim Cmd …から数えて、上から7行目の Cnn.Properties(……)=1 のところで「1」は 「OSのキャッシュをバイパスする」と認識しておりますが、この場合、
@何か特別な方法でOSのキャッシュをクリアする方法があるのでしょうか? ACnn.Close、Set Cnn = NothingでOSのキャッシュもクリアされるのでしょうか?
少々長くなりますがコードを書きます。 (Microsoft ActiveX Data Objects 2.8 Libraryを参照) (Microsoft ADO Ext.2.8 for DDL and Securityを参照) (Microsoft Jet and Replication Objects 2.6 Libraryを参照)
※Call sSQL_EXECUTE("INSERT INTO 〜",myConnection)のような感じで使用してます。
---------------------------------------------------------------------------- コードの部分をもう一度(どうして修正できないんだろう?)
---------------------------------------------------------------------------- Option Explicit Public Const MAX_RETRIES = 10 Public Jet_Engine As New JRO.JetEngine ---------------------------------------------------------------------------- Public Sub sSQL_EXECUTE(ByRef mySQL As String, ByRef Cnn As ADODB.Connection) Dim Cmd As ADODB.Command Dim Cat As New ADOX.Catalog Dim ErrorCount As Long Dim InTransaction As Boolean Dim OldCommitMode As Long OldCommitMode = Cnn.Properties("Jet OLEDB:Transaction Commit Mode") Cnn.Properties("Jet OLEDB:Transaction Commit Mode") = 1 ←ここ Set Cat = New ADOX.Catalog Cat.ActiveConnection = Cnn Set Cmd = New ADODB.Command Cmd.ActiveConnection = Cnn Cmd.CommandText = mySQL On Error GoTo SQL_EXE_Error Cnn.BeginTrans InTransaction = True Jet_Engine.RefreshCache Cnn Cmd.Execute '実行 InTransaction = False Cnn.CommitTrans '--- 終了 --- Set Cmd = Nothing Set Cat = Nothing Cnn.Properties("Jet OLEDB:Transaction Commit Mode") = OldCommitMode Exit Sub SQL_EXE_Abort: On Error Resume Next If InTransaction Then Set Cmd = Nothing Set Cat = Nothing End If Err.Clear Cnn.Properties("Jet OLEDB:Transaction Commit Mode") = OldCommitMode Exit Sub SQL_EXE_Error: ErrorCount = ErrorCount + 1 If ErrorCount < MAX_RETRIES And InTransaction Then Cnn.RollbackTrans Else Resume SQL_EXE_Abort End If End Sub
よろしくお願いいたします。 コードが長くてごめんなさい(抜き出しの方がよかったかな?)。
|