タイトル : 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) |