2

VB 2010 では、既存の MySQL テーブルを変更せずに、ProperCase で DisplayMember を表示しようとしています。

私のコードのスニペットは次のようになります。

 Dim sql0 As String = "SELECT business, customer_id FROM customers WHERE cab = '1'"
 Dim data0 As New MySqlDataAdapter(sql0, main.conn)
 Dim ds0 As New DataSet
 ds0.Clear()
 data0.Fill(ds0, "customers")
 cmb_company.DataSource = ds0
 cmb_company.DisplayMember = "customers.business"
 cmb_company.ValueMember = "customers.customer_id"

私はこのようなことを試しました:

 cmb_company.DisplayMember = StrConv("customers.business_name", VbStrConv.ProperCase)

ただし、これは引用符で囲まれた部分の大文字と小文字を変更するだけで、実際の戻り値は変更しません。また、次のように MySQL からクエリを実行してみました。

 "SELECT UPPER(business), customer_id FROM customers WHERE cab = '1'"

しかし、これは「ビジネス」フィールドを返すことができません..

すべてを変更せずに、コンボボックスに適切なケースがあればいいのにと思います。

提案に感謝します!

4

2 に答える 2

0

特にテーブルをアダプタで埋めた後、これを達成するためにwhileループを使用するのは少しばかげているようです。ProperCasingを実行している間は、.fillをスキップして、ループを介して手動でアイテムを追加することもできたと思います。とにかく、ここに私のコードがあります:

        Dim sql1 As String = "SELECT * FROM table"
        Dim data1 As New MySqlDataAdapter(sql1, main.conn)
        Dim ds1 As New DataSet
        ds1.Clear()
        data1.Fill(ds1, "table")
        cmb_buyout.DataSource = ds1

        Dim i As Integer = 0
        While i < ds1.Tables(0).Rows.Count
            Dim name As String = StrConv(ds1.Tables(0).Rows(i).Item(1).ToString, VbStrConv.ProperCase)
            ds1.Tables(0).Rows(i).Item(1) = name
            i += 1
        End While

        cmb_buyout.DisplayMember = "table.buyoutType"
        cmb_buyout.ValueMember = "table.id"

これを達成しようとしている人にとっては、DBのエントリの大文字と小文字を変更する方がおそらく簡単です。私はこれをやることになるかもしれません!

于 2012-07-17T13:26:41.450 に答える
0

2 番目のものを使用しますが、次のようなエイリアスを使用します。

"SELECT UPPER(business) AS Business, customer_id FROM customers WHERE cab = '1'"

MySQLのドキュメント:

select_expr には、AS alias_name を使用してエイリアスを指定できます。エイリアスは式の列名として使用され、GROUP BY、ORDER BY、または HAVING 句で使用できます。例えば:

SELECT CONCAT(last_name,', ',first_name) AS full_name FROM mytable ORDER BY full_name;

于 2012-07-16T21:06:16.140 に答える