0

解決したい問題があります。

adodc がデータベース内のレコードを更新する前に、列の値がデータグリッドの行で繰り返されているかどうかを確認したいと考えています。

そのために、DataGrid に表示されているレコードを取得して配列に入れ、セル内の同じ値を持つ行の数を数えます。

私が抱えている問題は、DataGrid のセルを配列に入れることができないため、繰り返される行をチェックできることです。

配列内の DataGrid のセルを取得するにはどうすればよいですか? または、データベースで更新を行う前に、行の値が繰り返されているかどうかをどのように知ることができますか?

4

1 に答える 1

0

@bob-riemersma に同意しますが、検証はデータバインディングと db 制約を介して行う必要がありますが、手動で行いたい場合 (これは悪い考えだと思います)、コレクションを使用します。

Private Function GridColHasDuplicates(col As Long) As Boolean
    On Error GoTo DupeError
    Dim noDupes As New Collection

    myGrid.row = 0
    myGrid.col = col
    Do While myGrid.row <= myGrid.VisibleRows - 1
        noDupes.Add myGrid.Columns(col).Value ' this will error off if dupe
        If myGrid.row < myGrid.VisibleRows - 1 Then
            myGrid.row = myGrid.row + 1
        Else
            Exit Do
        End If
    Loop

    GridColHasDuplicates = False
    Exit Function
DupeError:
    GridColHasDuplicates = True

End Function
于 2012-06-20T13:06:10.980 に答える