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

データ取得

  • 題名: データ取得
  • 著者: mopooh
  • 日時: 2004/02/13 18:01:12
  • ID: 2500
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[Windows2000、VB.NET]
分類:[.NET]

お世話になりますmopoohです。
VB.NETを始めたばかりで初歩的な質問で申し訳ありませんが以下のことについて
ご教授ください。

@画面遷移としてForm1→Form2とします。
・Form1==>TextBox,Btn
・Form2==>Btn1,Btn1・・,Btn10
A制御テーブルとして、利用者名,項目1,項目2,・・,項目10があります。
BForm1ではTextBoxに利用者名を入力します。
CForm1のボタンアクションでForm2に遷移
DForm2で利用者名から項目1から10で1が立っているものを取得
EForm2で1が立っているものは使用可能、以外は使用不可

といったことをしたいのですが
Cで入力された内容をパラメータに溜め込む方法と
Dでパラメータを元に項目1から10までの値の取得方法をご教授ください。

よろしくお願いいたします。
こんばんは、mopoohさん。ピラルクです。

問題の絞込みが甘く、コメントしがたいですね。
ちょっとフロー変えてますが(^^;、全体的には
こんな感じでどうでしょう?

※FormMenuが起動画面。Buttonは3個に省略。

Public Class FormMenu
  Inherits System.Windows.Forms.Form

  ……

  Private Sub FormMenu_Load(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) Handles MyBase.Load
    'サインイン画面を表示
    Dim frmSignin As New FormSignin()
    frmSignin.ShowDialog(Me)
    If frmSignin.DialogResult <> DialogResult.OK Then
      '[X]ボタンでキャンセルされた
      Me.Close()
      Exit Sub
    End If

    'Control配列へ参照保持(0は未使用とする)
    Dim btnMenu(3) As Button
    btnMenu(1) = Button1
    btnMenu(2) = Button2
    btnMenu(3) = Button3

    '権限フラグに応じてEnabled制御
    Dim AuthFlag() As Integer = frmSignin.AuthFlag
    Dim i As Integer
    For i = 1 To 3
      btnMenu(i).Enabled = (AuthFlag(i) = 1)
    Next
  End Sub
End Class

Public Class FormSignin
  Inherits System.Windows.Forms.Form

  ……

  Private m_AuthFlag(3) As Integer

  Friend ReadOnly Property AuthFlag() As Integer()
    Get
      Return m_AuthFlag
    End Get
  End Property

  Private Sub Button1_Click(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) Handles Button1.Click
    '入力された利用者名でクエリーを発行
    Dim dc As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;")
    dc.Open()
    Dim cmd As New OleDbCommand("select * from 制御テーブル where 利用者名 = @username", dc)
    cmd.Parameters.Add("@username", TextBox1.Text)
    Dim dr As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.SingleRow)

    If Not dr.Read() Then
      '「そんな人いません」の場合
      dc.Close()
      MessageBox.Show("そんな人いません!")
    Else
      'プロパティAuthFlagに権限情報を格納(0は未使用とする)
      Dim i As Integer
      For i = 1 To 3
        m_AuthFlag(i) = dr.GetInt32(dr.GetOrdinal("項目" & CStr(i)))
      Next
      dc.Close()
      Me.DialogResult = DialogResult.OK
      Me.Close()
    End If
  End Sub
End Class
ご回答有難うございます。
初心者なもので内容を確認いたしましても意図が伝わっているのかどうか
分かりませんが、データの取得に関しましては理解できました。

@FormSignin==>FormMenu
AFormSigninのTextBoxに利用者名を入力し存在チェックのあと
 OKであればFormMenuに遷移後FormSigninはClose
BFormSigninのTextBoxに入力された内容をKeyにして制御テーブル
 より項目1,2,3の値を取得し0はEnabled=Falseにする

ということをしたいと思っていました。
ご回答の内容はこのようなものですか?
こんばんは、mopoohさん。ピラルクです。

> ご回答の内容はこのようなものですか?

それが判断つかない状態であるなら、何かもっと
根本的なところで、物事の進め方を誤っているの
ではないかと思います。
「初心者なもので」とありますが、入門以前なの
では?(嫌味で言うのではなく)
こういう掲示板は情報の共有・交換のためにあり
ます。そのまま使えるソースが取得できるところ
ではありませんし、当人が持ち合わせていない技
術・技能を補填できるところでもありません。
当人がそういう努力をする場合に、大いに助けて
くれるところではありますが。

で、とりあえず...

> @FormSignin==>FormMenu

オペレーション上は上記の画面遷移になります。
プログラム上のシーケンスは、
FormMenu==>FormSignin==>FormMenu
という流れになります。こうでないとイケない
理由は全くないのですが、単なるパターンの1つ
です。

> AFormSigninのTextBoxに利用者名を入力し存在チェックのあと
>  OKであればFormMenuに遷移後FormSigninはClose

FormSigninのButton1_Clickにそういう処理があり
ます。

> BFormSigninのTextBoxに入力された内容をKeyにして制御テーブル
> より項目1,2,3の値を取得し

FormSigninのButton1_Clickにそういう処理があります。

> 0はEnabled=Falseにする

FormMenuのFormMenu_Loadにそういう処理があります。
ただし、

> EForm2で1が立っているものは使用可能、以外は使用不可

だったので、
「0はEnabled=False」ではなく
「1がEnabled=True」になってます。

  btnMenu(i).Enabled = (AuthFlag(i) = 1)

は、書き方が不親切でした。0→Falseなら

  If AuthFlag(i) = 0 Then
    btnMenu(i).Enabled = False
  Else
    btnMenu(i).Enabled = True
  End If

ですね。Default TrueだからElseは不要としても
いいかも。
あっ、dr.Close()もぬけてるね。あと、システム
のポリシーに従ってエラー処理を含めるとかが必要
になります。
  • 題名: Re[4]: データ取得
  • 著者: mopooh
  • 日時: 2004/02/17 9:16:52
  • ID: 2552
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
貴重なお時間有難うございました。
参考にして勉強いたします。
解決済み!

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