tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^5: MS-ACCESSの解放が出来ません
投稿日: 2016/02/03(Wed) 18:34
投稿者魔界の仮面弁士
> cc1 = flds.COUNT - 1
> For CC = 0 To cc1

VB6/VB.NET の For ループでは、To 句の評価は、
初回しか行われません。

そのため、万一ループ中で flds.COUNT の値が変化するようなことがあっても、
 For CC = 0 To flds.COUNT - 1
という処理は、「For CC = 0 To cc1」の場合と同じ回数だけループします。

C# の for ループの場合は、毎ループごとに判定されるのですけれどね。


> fld1 = fld.name
> If fld1.ToString = "A区分" Then
Name プロパティの戻り値は String 型なので、
それを ToString することは冗長です。

> MRComObject(fld1)
String 型は COM オブジェクトではないため、
ReleaseComObject の対象にはなりません。


> 最終形は下記のようになると思うのですが

コードの意図を汲み取れているか分かりませんが、
私なら下記のように記述します。


Dim db As dao.Database = dbe.OpenDatabase(DbName)
Dim tbls As dao.TableDefs = db.TableDefs
Dim tbl As dao.TableDef = tbls("DATABASE")
Dim flds As dao.Fields = tbl.Fields

Dim found As Boolean = False   '列が見つかれば True

For colIdx As Integer = 0 To flds.Count - 1
    Dim fld As dao.Field = flds(colIdx)
    found = (fld.Name = "A区分")
    MRComObject(fld)
    If found Then
       Exit For
    End If
Next

MRComObject(flds)
MRComObject(tbl)
MRComObject(tbls)
db.Close()
MRComObject(db)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。