タイトル : MS-ACCESSの解放が出来ません 投稿日 : 2016/02/02(Tue) 13:33 投稿者 : SUZUKI
いつもお世話になっております VB6.0からVB2005への変換挑戦中の鈴木です またわからなくなり相談させて下さい MS-ACCESS(2003)の停止が出来なく困ってしまいました 記事NO.6555を見て.FIELDSを扱うのは解放が難しいと 指摘されている所です 下記コードは列の追加のコードですが 解放が出来ません 階層の取り扱いで停止しないと思われるのですが 変数化がよくわかっていません 色々調べたのですが、よくわからずよろしくお願いします SUB Dim DB As dao.Database Dim TDFNEW As dao.TableDef Dim CC As Short Dim fieldflag As Boolean DB = DAODBEngine_definst.OpenDatabase(DbName) TDFNEW = DB.TableDefs.Item("DBDATA") fieldflag = False For CC = 0 To TDFNEW.Fields.Count - 1 If TDFNEW.Fields(CC).Name = "A区分" Then fieldflag = True End If Next ' 新しく 1 つのフィールドを追加します。 If fieldflag = False Then AppendDeleteField(TDFNEW, "APPEND", "A区分", dao.DataTypeEnum.dbText, 1) DB.Close() MRComObject(DB) MsgBox("A区分欄追加しました") Else DB.Close() MRComObject(DB) End If End Sub Sub AppendDeleteField(ByRef tdfTemp As dao.TableDef, ByRef strCommand As String, ByRef strName As String, Optional ByRef varType_Renamed As Object = Nothing, Optional ByRef varSize As Object = Nothing) With tdfTemp ' 更新可能かどうかを調べます。 ' 更新可能でない場合は ' 呼び出しているプロシージャに制御を返します。 If .Updatable = False Then Exit Sub End If ' フィールドの追加や削除を行います。 If strCommand = "APPEND" Then .Fields.Append(.CreateField(strName, varType_Renamed, varSize)) Else If strCommand = "DELETE" Then .Fields.Delete(strName) End If End With Exit Sub |