DOBON.NET DOBON.NETプログラミング掲示板過去ログ

固定長の定義方法

環境/言語:[Windows2000,VB.NET]
分類:[.NET]

お世話になります。
今、SQLからデータを取り込み、ListBoxに表示するのですが、カナ氏名等、長さが違うものを揃えて表示したいです。

Dim reader As SqlClient.SqlDataReader = cmd.ExecuteReader
Do While reader.Read()
  Dim K As String = reader("カナ氏名")
ListBox1.Items.Add(K & " | " ・・・
Loop
例えばKが固定長の24桁という場合は、いったいどのように書けばいいのでしょうか?
よろしくお願い致します。
> Dim reader As SqlClient.SqlDataReader = cmd.ExecuteReader
> Do While reader.Read()
>   Dim K As String = reader("カナ氏名")
> ListBox1.Items.Add(K & " | " ・・・
> Loop
> 例えばKが固定長の24桁という場合は、いったいどのように書けばいいのでしょうか?
> よろしくお願い致します。

24桁以上のデータを24文字まで表示したいのならsubstring関数で、
24桁以下の場合、String.Formatでスペースを埋めるようにすればOKじゃないでしょうか?
■No4831に返信(SHさんの記事)
>>Dim reader As SqlClient.SqlDataReader = cmd.ExecuteReader
>>Do While reader.Read()
>>  Dim K As String = reader("カナ氏名")
>> ListBox1.Items.Add(K & " | " ・・・
>>Loop
>>例えばKが固定長の24桁という場合は、いったいどのように書けばいいのでしょうか?
>>よろしくお願い致します。
>
> 24桁以上のデータを24文字まで表示したいのならsubstring関数で、
> 24桁以下の場合、String.Formatでスペースを埋めるようにすればOKじゃないでしょうか?


LSet関数でどうでしょうか?

ex)
LSet(K, 24)
■No4832に返信(ihcioyさんの記事)
> ■No4831に返信(SHさんの記事)
> >>Dim reader As SqlClient.SqlDataReader = cmd.ExecuteReader
> >>Do While reader.Read()
> >>  Dim K As String = reader("カナ氏名")
> >> ListBox1.Items.Add(K & " | " ・・・
> >>Loop
> >>例えばKが固定長の24桁という場合は、いったいどのように書けばいいのでしょうか?
> >>よろしくお願い致します。
>>
>>24桁以上のデータを24文字まで表示したいのならsubstring関数で、
>>24桁以下の場合、String.Formatでスペースを埋めるようにすればOKじゃないでしょうか?
>
>
> LSet関数でどうでしょうか?
>
> ex)
> LSet(K, 24)
>
> 回答ありがとうございます。
String.Format自体知りませんでした。いろいろ書いてみたのですが、まだよく分かりません・・・。具体的にお願い出来ませんか?
 LSetをすると、一見うまく行きましたが、項目間の仕切りの|が微妙にずれました。色々やってみますので、またよろしくお願い致します。


K.PadRight(24)でいけそうですよ。
■No4837に返信(SHさんの記事)
> K.PadRight(24)でいけそうですよ。
回答ありがとうございます。ですが、Lset同様、カナ氏名全体が24桁になっていないのか?、" | " と結合すると、ずれる行があります。
イワナガ シゲオ  |
イシカワ ハジメ  |
イワクラ ヤエコ |
イケダ クニミツ |
イトウ オサム |
イワナガさんが一番右より、イケダさんが一番左より、他同じです。
ListBoxのプロパティは特にさわっていません。(DrawModeをOwnerとかに替えたりして、行の高さかえたりもしてみましたが、同じでした・・・。)
また、何かお分かりになりましたらよろしくお願い致します。
■No4838に返信(hideさんの記事)
カナは全部半角です。
|は、実際表示されているのはずれてしまっていて申し訳ないです。
■No4838に返信(hideさんの記事)

 hideさん、こんばんは。深山と申します。

> " | " と結合すると、ずれる行があります。
> イワナガさんが一番右より、イケダさんが一番左より、他同じです。
> ListBoxのプロパティは特にさわっていません。

 ListBox のフォントがプロポーショナルになっているのではないでしょうか?
 Form なども変更していなければ、MS Pゴシックになっているかと思います。
これをMS ゴシックなどに変えてみたらどうなりますか?

# 仮にこれで問題なく表示されるとしても、表示位置を揃える必要があるなら
# ListView なり DataGrid なりを使った方が良いとは思いますが‥‥。
深山さん、おはようございます。
ListBoxのフォントの初期値がMS UI Gothicであったのを、MSゴシックにしたところうまく行きました!
 Lset、PadRightどちらもOKです。皆様、ありがとうございました。

ListBoxにしたのは、Datagridがよくわからなかったから・・・。Sqldataadapterでデータセット作る?と思うのですが、サーバーとつながらなかったので。掲示板の見出しとずれますが、出来るはずならば教えていただけますか?
> ListBoxにしたのは、Datagridがよくわからなかったから・・・。Sqldataadapterでデータセット作る?と思うのですが、サーバーとつながらなかったので。掲示板の見出しとずれますが、出来るはずならば教えていただけますか?

どう上手くいかなかったのか、
もう少し詳しく書くとアドバイスがしやすいと思いますよ。
どのタイミングでどういうエラーが出た。とか。。

ちなみに、僕はSqldataadapterは使ったことないのでわかりませんが、
ただ表示したい(セル上で編集を行わない)だけなら、
DataGridよりListViewをお勧めします。
> ちなみに、僕はSqldataadapterは使ったことないのでわかりませんが、
> ただ表示したい(セル上で編集を行わない)だけなら、
> DataGridよりListViewをお勧めします。
>
>ある列は編集したいです。

ListViewのこととか聞くと、どんどん見出しからずれて行くので、
また、お聞きしたい時には改めてスレ立てさせて頂きます。
とりあえず解決といううことで。
どうもありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板