- 題名: データ取得
- 日時: 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までの値の取得方法をご教授ください。
よろしくお願いいたします。