2011年7月20日水曜日

→→→DataGridにフィールドの値の1部を表示する

商品コード 種別
A001          CA
B001          IC
I005           BA


Dim dCol As DataColumn
Dim dSet As DataSet = New DataSet
Dim dAdp As OleDbDataAdapter
Dim ocn As OleDbConnection = New OleDbConnection
ocn.ConnectionString = "Provider~"

dAdp = New OleDbDataAdapter ("SELECT * FROM テスト" , ocn)
dAdp.Fill( dSet, "t_テスト")

dCol = dSet.Tables("t_テスト").Columns.Add(種別)
dCol.Expression = "SUBSTRING(商品コード,1,2)"
DataGrid1.SetDataBinding( dSet , "t_テスト")

→→→DataGridに集計値を表示する

<DataColumn><Expression>

仕入テーブル
伝票NO 仕入日 商品コード 数量
001       2008/7/1  A001        100
002       2008/7/5  B001        250

商品テーブル
商品コード 商品名 単価
A001           *****    270
B001           /////    500

--------------------------------------------------
Dim dCol As DataColumn
Dim dSet As DataSet = New DataSet("仕入")
Dim dAdp As OleDbDataAdapter
Dim ocn As OleDbConnection = New OleDbConnection
ocn.ConnectionString = "Provider~"


dAdp = New OleDbDataAdapter ("SELECT * FROM 仕入" , ocn)
dAdp.Fill( dSet, "t_仕入")

dAdp = New OleDbDataAdapter ("SELECT * FROM 商品" , ocn)
dAdp.Fill( dSet, "t_商品")

dSet.relations.Add("商品売上", dSet.Tables("t_商品").Columns("商品コード"),
                                            dSet.Tables("t_仕入").Columns("商品コード"))
dCol = dSet.Tables("t_商品").Columns.Add("仕入数")
dCol.Expression = "SUM(Child.数量)"
DataGrid1.SetDataBinding( dSet , "t_商品")


→→→DataGridにフィールドを連結した列を追加

Dim dCol As DataColumn
Dim dSet As DataSet = New DataSet("t_テスト")
Dim dAdp As OleDbDataAdapter
Dim ocn As OleDbConnection = New OleDbConnection
ocn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
                                Data Source=D:\***.mdb;Persist Security Info = False"
dAdp = New OleDbDataAdapter("SELECT * FROM テスト" , ocn)
dAdp.Fill( dSet , "t_テスト")

dCol = dSet.Tables("t_テスト").Columns.Add("[コード]製品名")
dCol.Expression = "コード + 製品名"

DataGrid1.SetDataBinding( dSet , "t_テスト")

-------------------------------------------------------
(1)DataGridコントロールに列を追加するには
           dCol = dSet.Tables("テーブル名").Columns.Add("見出し")
(2)既存の複数のフィールドを連結したものにするにはExpressionプロパティを使う

→→→DataGridに表示する

'スタンダード<DataGrid表示>

Dim dSet As DataSet = New DataSet("t_テスト")
Dim dAdp As OleDbDataAdapter
Dim ocn As OleDbConnection = New OleDbConnection
ocn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4..0;
                                Data Source=D:\***.mdb;Persist Security Info = False"
dAdp = New OleDbDataAdapter("SELECT * FROM テスト", ocn )
dAdp.Fill( dSet, "t_テスト" )

DataGrid1.SetDataBinding(dSet, "t_テスト")

→→→条件に合致したレコードのみDataGridに表示する

Dim dView As DataView
Dim dSet As DataSet = New DataSet
Dim dAdp As OleDbDataAdapter
Dim ocn As OleDbConnection = New OleDbConnection
ocn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
                                 Data Source=D:\***.mdb;Persist Security Info=False"
dAdp = New OleDbDataAdapter("SELECT * FROM テスト",ocn)
dAdp.Fill( dSet, "t_テスト")
dView = New DataView(dSet.Tables("t_テスト"),"コード2", "" , DataViewRowState.CurrentRows)
DataGrid1.DataSource = dView


*DataGridの行のヘッダの幅を変更する
       DataGrid1.RowHeaderWidth = 30

*DataGridの行ヘッダを表示しない
       DataGrid1.RowHeadersVisible = False

2011年7月19日火曜日

→→→DataGridにデータの内容を表示する

テーブルへのデータ追加
DataRow
      Dim dRow As DataRow
      dRow = dTbl.NewRow()
      dRow("Name") = "Smith"
      dTbl.Rows.Add( dRow )

dTbl -->  "id"<Column> "Name"<Column>  ---->   dRow("id") dRow("Name")

(A)
       Dim dTbl As DataTable = New DataTable
       Dim dRow As DataRow
       Dim dView As DataView
       Dim i As Integer

       dTbl.Columns.Add("id" , Type.GetType("SYstem.Int32"))
       dTbl.Columns.Add("Name" , Type.GetType("System.String"))
       For i = 0 To 9
            dRow = dTbl.NewRow()
            dRow(" id ") = i
            dRow(" Name ") = "item" & i
            dTbl.Rows.Add( dRow )
       Next
       dView = New DataView( dTbl )
       DataGrid1.DataSource = dView

(B)
       Dim dSet As DataSet = New DataSet("リス")
       Dim dTbl As DataTable
       dTbl = dSet.Tables.Add("種類")
       dTbl.Columns.Add("NO" , Type.GetType("System.Int32"))
       dTbl.Columns.Add("名前" , Type.GetType("System.String"))

       dTbl.Rows.Add( New Object() { 1 , "シマリス" })
       dTbl.Rows.Add( New Object() { 2 , "エゾリス" })
       dTbl.Rows.Add( New Object() { 3 , "シケリス" })
       DataGrid1.SetDataBinding( dSet , "種類" )

(C)
       Dim dSet As DataSet = New DataSet
       Dim dTbl As DataTable
       Dim dRow As DataRow
       Dim i As Integer
       dTbl = dSet.Tables.Add("種類")
       dTbl.Columns.Add("NO" , Type.GetType("System.String"))

       For i = 0 To  9
            dRow = dTbl.NewRow()
            dRow("NO") = i
            dTbl.Rows.Add( dRow )
       Next
       DataGrid1.SetDataBinding( dSet, "種類")

   

→→→トランザクションを開始/終了

トランザクションを使用することによってデータベース更新中にエラーが
発生した場合、データ整合性を保持することができる

BeginTransactionメソッド

トランザクションを終了するには、Commitメソッドを使う
Commitメソッドはトランザクション処理中のデータベース操作を確定して
トランザクションを終了する

Dim sTrans As OleDbTransaction
Dim ocn As OleDbConnection = New OleDbConnection
ocn.ConnectionString = "Provider=Microsoft.Jet.OlEDB.4.0;
                                  DataSource=D:\**mdb;Persist Security Info=False"
ocn.open()

Try
    sTrans = ocn.BeginTransaction()
    MessageBox.show("トランザクションを開始しました")
    sTrans.Commit()
Catch ex As Exception
    MessageBox.show("トランザクションを開始できませんでした")
End Try
ocn.Close()