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

タイトル Re^2: DataGridでカラムスタイルの設定をすると最後の項目が表示されなくなる
投稿日: 2008/02/22(Fri) 15:31
投稿者
いつもお世話になっています。
再現ソースができました。このソースで再現しました。
この再現ソースを作りながらも、色々と調べてみました。
1.データを呼び出しているのはクエリ(クエリAとします)からで、
  1つのクエリ(クエリBとします)と3つのテーブルの組合わせです。
  クエリBでは、4つのテーブルの組み合わせです。
  この場合、42個目の項目がDataGridに表示されません。
2.クエリAからの呼び出しの場合いくつか項目を減らしても、最後の項目が
  DataGridに表示されない。
3.データを呼び出す所を1つのテーブルだけにすると、50項目でも表示されます。

以上の事からプログラムの問題ではなく、データベース上で作成したクエリに問題が
あるのでは・・・?と考えています。
そうなれば、質問する場所を替えないといけませんね。
一応データベースにあるクエリのデータを見ると、表示されない項目(42個目)にもデータは入っています。

Public Class Form1
    Inherits System.Windows.Forms.Form

    Public 項目() As String = { 42項目 }

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim oleCn As New OleDb.OleDbConnection
        Dim oleCmd As OleDb.OleDbCommand
        Dim oleReader As OleDb.OleDbDataReader
        Dim dAdp1 As OleDb.OleDbDataAdapter
        Dim dSet1 As DataSet = New DataSet("表示データ")
        Dim SQLCmd, DataBase As String
        Dim n As Integer
        Dim tblStyle1 As New DataGridTableStyle
        Dim clmStyle1(42) As DataGridTextBoxColumn

        'データベースの格納場所
        DataBase = "XXX.mdb"

        'データベース定義
        oleCn.ConnectionString = _
            "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & DataBase & ";" & _
            "Persist Security info=False"

        'データベースオープン
        oleCn.Open()

        'データを検索
        SQLCmd = "select " & 項目(0)
        For n = 1 To 41
            SQLCmd = SQLCmd & ", " & 項目(n)
        Next
        SQLCmd = SQLCmd & " from クエリ"
        dAdp1 = New OleDb.OleDbDataAdapter(SQLCmd, oleCn)
        dAdp1.Fill(dSet1, "表示データ")
        tblStyle1.MappingName = "表示データ"
        For n = 0 To 41
            clmStyle1(n) = New DataGridTextBoxColumn
            clmStyle1(n).MappingName = 項目(n)
            clmStyle1(n).HeaderText = 項目(n)
            clmStyle1(n).NullText = ""
            '金額表示項目
            If n = 22 Or n = 23 Or n = 24 Then
                clmStyle1(n).Format = "c"
                clmStyle1(n).Alignment = HorizontalAlignment.Right
            End If
            'ユーザに入力して欲しくない項目を読込専用にする
            If n < 6 Or n > 11 Then
                clmStyle1(n).ReadOnly = True
            End If
            tblStyle1.GridColumnStyles.Add(clmStyle1(n))
        Next

        DataGrid1.TableStyles.Add(tblStyle1)
        DataGrid1.SetDataBinding(dSet1, "表示データ")
    End Sub
End Class

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

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