- 題名: データ取得
- 日時: 2004/02/13 18:01:12
- ID: 2500
- この記事の返信元:
- (なし)
- この記事への返信:
- [2518] Re[1]: データ取得2004/02/15 0:36:47
- ツリーを表示
こんばんは、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
こんばんは、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()もぬけてるね。あと、システム
のポリシーに従ってエラー処理を含めるとかが必要
になります。
分類:[.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までの値の取得方法をご教授ください。
よろしくお願いいたします。