sql >> データベース >  >> RDS >> Sqlserver

SQLServer2008のデータベースからデータセットへのビットデータ型から列挙型へのマッピング

    2つの方法のいずれかで処理できます。

    1)データをビットとして返す代わりに、クエリでキャストを実行して、値に基づいた文字列としてBuy/Sellを返すようにします。これは、グリッドが読み取り専用の場合にのみ実際にうまく機能します。データを追加/編集できるようにする必要がある場合は、購入/販売を少しに戻し、ユーザーが購入/販売しか入力できないようにするのは面倒です。データを追加/編集する必要がある場合は、おそらく方法2を使用することをお勧めします。

    例えば列名がBuySellと呼ばれ、タイプがビットであるとします

    SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName
    

    2)DataGridViewの「Autogeneratecolumns」をオフにして、手動で列を設定する必要があります。グリッドが読み取り専用の場合は、ビット値にマップする購入/販売列のテキスト列を追加します。次に、グリッドのCell_Formattingイベントで、ビットに基づいて値を更新します。以下のようなもの:

    private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (dgv.Columns[e.ColumnIndex].Name == "buysell")
        {
            if (e.Value != null)
            {
                if (e.Value.ToString() == "1")
                {
                    e.Value = "Sell";
                }
                else
                {
                    e.Value = "Buy";
                }
            }
            else
            {
                e.Value = "Buy";
            }
        }
    }
    

    グリッドを編集可能にする必要がある場合は、displaymemberとvaluememberを使用してBuy/Sell値を表すDataTableを設定します。それをコンボボックス列のデータソースとしてバインドします。これで、データをロードすると、コンボボックスにBuy / Sellが正しく表示され、ドロップダウンから値を選択すると、基になるデータソースに正しいビット値が入力されます。




    1. Oracle Data Access FileNotFound:Oracle.DataAccess.Common.Configuration.Section.xsd

    2. phpmysql_connect警告無効

    3. MySQL Insert Gson Date

    4. UPDATEクエリがLIMITで機能していません