tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル0から始まる数字の入力について
記事No10104
投稿日: 2010/05/17(Mon) 17:39
投稿者nao
教えてください。

テキストボックスに「0」から始まる数字を入力したいのですが、
テキストボックスに「0001」と入力すると「1」になってしまい
ます。
「0001」という風に0から入力できる方法を教えてください。

宜しくお願いします。

[ツリー表示へ]
タイトルRe: 0から始まる数字の入力について
記事No10105
投稿日: 2010/05/17(Mon) 18:31
投稿者花ちゃん
> テキストボックスに「0」から始まる数字を入力したいのですが、
> テキストボックスに「0001」と入力すると「1」になってしまい
> ます。
貴方がそのようにしているからです。
(文字→数値 に変換していませんか?)

> 「0001」という風に0から入力できる方法を教えてください。
数字・文字(String)として扱って下さい。

又は、String.PadLeft メソッド 等を使うとか。
http://www.hanatyan.sakura.ne.jp/dotnet/kan01_08.htm#padleft

[ツリー表示へ]
タイトルRe^2: 0から始まる数字の入力について
記事No10106
投稿日: 2010/05/17(Mon) 20:41
投稿者nao
> (文字→数値 に変換していませんか?)
変換した覚えは無いんですが・・・
もし変換してた場合、数値→文字に変換するにはどうしたら良いですか?
テキストボックスのプロパティから変更できますか?

Stringで検索して調べてますが、初心者なんですみませんがアドバイスお願いします。

[ツリー表示へ]
タイトルRe^3: 0から始まる数字の入力について
記事No10107
投稿日: 2010/05/17(Mon) 20:55
投稿者花ちゃん
何も操作しなければ、0001 のように入力したらそのまま表示されます。


>テキストボックスに「0001」と入力すると「1」になってしまいます。

どのようなコードを書いているのか投稿してみて下さい。

[ツリー表示へ]
タイトルRe^3: 0から始まる数字の入力について
記事No10108
投稿日: 2010/05/18(Tue) 09:32
投稿者るしぇ
>> (文字→数値 に変換していませんか?)
>変換した覚えは無いんですが・・・
"テキスト"ボックスですので、もともと文字列をそのまま
表示するコントロールです。
新規で貼り付けて動作確認してみてください。
先頭から0が取れるような事はありません。

>テキストボックスのプロパティから変更できますか?
基本、プロパティで変更しません。
先頭から0を取る為にどういうプログラムを書くかも
決まっていません。

つまり、0が取れる時点で、そちらが何をしたのかを
説明する必要があり、こちらで何をしたのか想像する事は
難しいのです。

まず、そのテキストボックスは、誰かに貼り付けてもらった
ものですか?自分で貼り付けたものですか?自分で貼り付けた
ものなら、そこから何をしたのか全て説明が必要です。

それでも変換した覚えが無いのであれば、データベースの
データと連結したり、特殊な設定をしてはいませんか?

[ツリー表示へ]
タイトルRe^4: 0から始まる数字の入力について
記事No10111
投稿日: 2010/05/18(Tue) 15:36
投稿者nao
> それでも変換した覚えが無いのであれば、データベースの
> データと連結したり、特殊な設定をしてはいませんか?

説明不足で大変申し訳ございませんでした(>_<)

データベース(Access)のデータと連結しています。
テキストボックスとはAccessのフィールドの事でした。
Accessのフィールド「番号」をデータソースからフォームに
貼り付けています。

そのフォームに貼り付けた「番号」テキストボックスから数字
「0001」を入力すると「1」になってしまいます。
データベースの方でも「番号」フィールドのデータ型はテキスト
になってるので問題ないと思うんですが・・・

アドバイスお願いします。

[ツリー表示へ]
タイトルRe^5: 0から始まる数字の入力について
記事No10118
投稿日: 2010/05/19(Wed) 17:05
投稿者nao
なんとか下の↓コードで「0001」の様に入力する事ができました。

-------------------------------------------------------------------
Private Sub 入力日TextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles 入力日TextBox.Enter

    Dim i As Integer = Me.番号TextBox.Text

    番号TextBox.Text = i.ToString("0000")

End Sub
-------------------------------------------------------------------

ただ・・・
まだ問題があるんですが、下の↓コード

-------------------------------------------------------------------
Private Sub DenpyoSaveBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Try

 If Not CheckEditData() Then Return

 伝票テーブルBindingSource.EndEdit()
 Me.伝票テーブルTableAdapter.Update(Me.testDataSet.伝票テーブル)

     MessageBox.Show("更新・保存しました", Me.伝票区分Lbl.Text)

     Me.ListPrintBtn.Enabled = True
     Me.NewBtn.Enabled = True

     Catch ex As Exception
     MessageBox.Show(ex.Message)
    End Try
End Sub
-------------------------------------------------------------------

のDenpyoSaveBtnをクリックすると

-------------------------------------------------------------------
Dim i As Integer = Me.番号TextBox.Text
番号TextBox.Text = i.ToString("0000")
-------------------------------------------------------------------

↑で設定した書式が解除されて保存されます。
(「0001」で表示されてるのが、保存ボタンをクリックすると「1」に戻って
しまいます。)

何か原因があるのでしょうか・・・
アドバイス宜しくお願いします。

[ツリー表示へ]
タイトルRe^6: 0から始まる数字の入力について
記事No10120
投稿日: 2010/05/24(Mon) 11:57
投稿者TATUMIN
えと、そもそもそのテキストボックスは
数値にしか対応しないんですか?

そのテキストボックスに「あ」と
入力したらどうなるんですか?
<Dim i As Integer = Me.番号TextBox.Text
の時点で実行例外でしょうけど…。

あんまりよくわからないなりに推測してみます。

<↑で設定した書式が解除されて保存されます。
<(「0001」で表示されてるのが、
<保存ボタンをクリックすると「1」に
<戻ってしまいます。)

このあたりから推測するに、
DB項目が数値型なのですか?
んで、画面表示上は「0001」等、
4桁フォーマットして見せたいと?
そーゆうことですかね?

「入力日TextBox_Enter」でフォーマットしてるから、
入力日TextBoxがフォーカスを受け取った時しか
そのフォーマットは発生しないように思いますけど。

 # そのテキストボックス、まさか
 # なんかサードパーティ製の
 # テキストボックスじゃないですよね?

[ツリー表示へ]
タイトルRe^7: 0から始まる数字の入力について
記事No10121
投稿日: 2010/05/24(Mon) 13:10
投稿者魔界の仮面弁士
No.10118
>> 何か原因があるのでしょうか・・・
バインド時に、FormatString が設定されていませんか?
(デザイナで指定する場合には、詳細バインド画面の[形式の種類(F)]の項目)

その設定のせいで、"0001" が数値扱いされて先頭 0 が消されてしまっている、とか。


No.10120
> このあたりから推測するに、
> DB項目が数値型なのですか?

No.10111 によると
>> データベースの方でも「番号」フィールドのデータ型はテキスト
>> になってるので問題ないと思うんですが・・・
だそうです。

[ツリー表示へ]