C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.1652 の関連記事表示

<< 0 >>
■1652  Re[1]: 処理が終わるとプログレスバーを終了
□投稿者/ |ω・`) -(2005/10/20(Thu) 18:43:16)

    分類:[VB.NET] 

    > プログレスバーを終了する
    この文法で書けば、
    「テキストボックスを終了する」とか「リストボックスを終了する」という使い方もできるのかな…
    とりあえず、「終了する」が分かりませんでした(TT
記事No.1647 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■1652  データにBindingしているTextコントロールについて
□投稿者/ ゆき -(2007/03/01(Thu) 17:08:05)

    分類:[VB.NET (Windows)] 

    次のようなコントロールをフォーム上に配置しています。

    kb(Text)
    nm(text)
    ds(DataSet)
    bs(BindingSource)
    vTESTTableAdapter(TableAdapter)

    TextコントロールのDataBindingsプロパティでそれぞれ
    kb → Tag:なし Text:bs - 区分
    nm → Tag:なし Text:bs - 名称
    と設定してテーブルとバインドしています。
    これを実行すると、データは正しく表示されるのですが
    既存データの更新が行えるかテストしてみたところ
    どちらのTextコントロールも入力した値がds.vTESTに
    反映されていませんでした。
    更新処理には下記のようなことを書いているのですが
    Me.bs.EndEdit()の前後でvTESTのデータを調べてみたところ
    入力した値が反映されてこず困っています。
    dr.RowStateもUnchangedのままです。
    Modifiedになってほしいのですが・・・
    このような問題が生じた場合、どの辺りを注意して確認したら
    よいのでしょうか?
    アドバイスよろしくお願いします。

    更新処理
    Me.Validate()
    Me.bs.EndEdit()
    For Each dr As DataRow In Me.ds.vTEST
    Select Case dr.RowState
    Case DataRowState.Added
    dr(cst登録日付) = Format(Now, "yyyy/MM/dd")
    dr(cst登録時間) = Format(Now, "HH:mm:ss")
    Case DataRowState.Modified
    dr(cst更新日付) = Format(Now, "yyyy/MM/dd")
    dr(cst更新時間) = Format(Now, "HH:mm:ss")
    End Select
    Next
    Me.vTESTTableAdapter.Update(ds.vTEST)

    悩みに悩んで書いたのですが、非常に解かりにくい質問文に
    なってしまいました(涙
    足りない情報等ございましたらお知らせください。

    開発環境等
    VB歴1ヶ月
    VS2005(言語VB)
    SQL Server 2005
    OS Win2K SP4
親記事 /過去ログ10より / 関連記事表示
削除チェック/

■1718  Re[1]: データにBindingしているTextコントロールについて
□投稿者/ はつね -(2007/03/04(Sun) 01:58:11)
>
    No1652 (ゆき さん) に返信
    > 更新処理
    > Me.Validate()
    > Me.bs.EndEdit()
    > For Each dr As DataRow In Me.ds.vTEST
    > Select Case dr.RowState
    > Case DataRowState.Added
    > dr(cst登録日付) = Format(Now, "yyyy/MM/dd")
    > dr(cst登録時間) = Format(Now, "HH:mm:ss")
    > Case DataRowState.Modified
    > dr(cst更新日付) = Format(Now, "yyyy/MM/dd")
    > dr(cst更新時間) = Format(Now, "HH:mm:ss")
    > End Select
    > Next
    > Me.vTESTTableAdapter.Update(ds.vTEST)

    これ、クライアント側で実装するとクライアントの時刻依存で全クライアントの時刻を合わせておく必要とか、だれか意図的に日時を変更して使うと嘘の日時が設定できてしまいますから、クライアントで実装せずにSQL Serverのトリガーとかで実装して、サーバの時刻で一元化した方が良いかと思います。

    その問題をおいておくとして、このコードが意図したとおりに動くようにするためには、End SelectとNextの間にdr.EndEditが必要だと思います。「Me.bs.EndEdit()」の行がありますから、drを書き換えてからdr.EndEditを行わないとどういう状況になるかはご理解いただけると思います。
記事No.1652 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1742  Re[2]: データにBindingしているTextコントロールについて
□投稿者/ ゆき -(2007/03/05(Mon) 13:08:18)
    返信遅くなってしまいました、申し訳ありません。
    はつね様、アドバイスありがとうございます。

    > これ、クライアント側で実装するとクライアントの時刻依存で全クライアントの時刻を合わせておく必要とか、
    > だれか意図的に日時を変更して使うと嘘の日時が設定できてしまいますから、
    > クライアントで実装せずにSQL Serverのトリガーとかで実装して、サーバの時刻で一元化した方が良いかと思います。

    なるほど〜、おっしゃる通りですね。
    早速サーバー側で実装するよう改良したいと思います。

    > その問題をおいておくとして、このコードが意図したとおりに動くようにするためには、
    > End SelectとNextの間にdr.EndEditが必要だと思います。
    > 「Me.bs.EndEdit()」の行がありますから、drを書き換えてからdr.EndEditを行わないとどういう状況になるかは
    > ご理解いただけると思います。

    登録日付等の項目は、ユーザーに入力してもらう項目ではないので
    内部で値をセットするようにしたのですが、このような場合はdr.EndEditを使い
    変更を反映するということですね。勉強になりました。
記事No.1652 のレス / END /過去ログ10より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -