Top / プログラミングテクニック / 06.限界値のチェック

データベースの整合性がとれていなかったり、期待した値どおりになっていない場合があります。

どんなときでも、プログラムが異常終了したり、無限ループに陥らないようにして下さい。 たとえば、親と子といった関係のデータは、整合性がとれていないと、無限ループします。 ネストの深さや、個数などの限界値をチェックするよう心がけて下さい。

Private Function GetChildren(iList As ListBox, iParent As String) As Boolean
   Dim pRec As Recordset
   Dim pSQL As String
   Dim pChild() As String
   Dim pMax As Integer
   Dim i As Integer

   ' テーブルから、子を列挙します。
   pSQL = "SELECT CHILD FROM TABLE WHERE PARENT = " & iParent
   Set pRec = gMyDB.OpenRecordset(pSQL)
   If gMyDB.DBErr.Number <> 0 Then Exit Function
   If pRec.EOF Then
       GetChildren = True
       Exit Function
   Else
       pRec.MoveLast
       pRec.MoveFirst
   End If

   '   子を配列に格納します。
   ReDim pChild(1 To pRec.RecordCount)
   pMax = 0
   Do Until pRec.EOF
       pMax = pMax + 1
       pChild(pMax) = pRec!CHILD
       pRec.MoveNext
   Loop
   pRec.Close
   Set pRec = Nothing

   '   孫を列挙します
   For i = 1 To pMax
       If iList.ListCount >= 100 Then            '列挙した数が限界値を超えようとしたら
           MsgBox "100個を超えました"         'エラーリターンする
           Exit Function
       End If
       iList.AddItem pChild(i)
       If Not GetChildren(iList, pChild(i)) Then Exit Function
   Next
   GetChildren = True
End Function



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-10-25 (日) 23:55:57 (2920d)