|
■No51450 (すなふきぬ さん) に返信 > 関数定義がないのでなんとも言えませんが、LValueはVariant型ですよね? > プレフィックスがLなのでちょっと気になってます。 > (たしかVB6のIsMissing()はVariant型でないと判断できなかったような記憶があるので)
申し訳ありません、転記に誤りがありました。
Public Function CreateDynaset(Optional ByVal vSQLString As Variant, Optional LOptionValue As Long) As OraDynaset
Dim LOption As Long
RetCount = -1 SQLErrMsg = ""
Set CreateDynaset = Nothing If IsMissing(vSQLString) Then If SQL = "" Then MsgBox "設定されていません", _ vbSystemModal + vbCritical, "CDBHandle Class Error" Exit Function End If Else SQL = vSQLString End If
If IsMissing(LOptionValue) Then LOption = ORADYN_READONLY Else LOption = LOptionValue End If
On Error GoTo ErrorHandler Set CreateDynaset = oORADB.CreateDynaset(SQL, LOption) RetCount = CreateDynaset.RecordCount
Exit Function
ErrorHandler: SQLErrCode = oORADB.LastServerErr Err.Raise SQLErrCode, "clsDbHandler::CreateDynaset", SQLErrMsg End Function
> 更新が遅い場合は、インデックス等を疑ってみるのも良いと思います。 > データ数がわからないのでなんとも言えませんが、単純にsqlplus等でデータを挿入した場合も遅いでしょうか?
更新前の検索と更新後の検索では同じsqlを実行しています。
> この画面のみと言うことですが、同じような画面があるのであれば、その画面と差分を調べるのが早いかもしれません。 > 更新と参照を交互にされているみたいですが、OraDynasetの解放(set CreateDynaset = Nothing)とかはされていますか?
確かに解放されていないかも知れません。
Set CreateDynaset = Nothing On Error GoTo ErrorHandler Set CreateDynaset = oORADB.CreateDynaset(SQL, LOption) RetCount = CreateDynaset.RecordCount
としてみましたが、現象が変わりません。
|