- PR -

取得した文字列をコントロール名として利用したいのですが

1
投稿者投稿内容
コウジ
ベテラン
会議室デビュー日: 2006/12/18
投稿数: 54
投稿日時: 2008-09-23 04:07
いつもお世話になります。

vb2008.netでコーディングしていて困っております。
テーブルから取得した文字列をコントロール名として利用し、それを制御したいのですが、やりかたがわからず無理やりコーディングしたもののエラーとなってしまいます。

実現したい機能は以下となります。
1.画面を操作する権限管理のための「ロールマスタ」テーブルにて、メニュー画面に配置しているボタンのコントロール名と表示フラグを保持している。
2.「ロールマスタ」テーブルを読み込み、非表示となっているボタンはメニューに表示させない。

以下が実際の試行錯誤コーディングとなります。

Dim cmd As New OracleCommand
Dim rd As OracleDataReader
cmd.Connection = OraDatabase2
cmd.CommandText = sql
rd = cmd.ExecuteReader

Do While rd.Read()
If rd("hyouji_kbn") = "0" Then
CType(Me.Controls(rd("button_id")), Object).Visible = False
Else
CType(Me.Controls(rd("button_id")), Object).Visible = True
End If
Loop

↑rd("***")はOracleODP.netのデータリーダの結果となります。

どなたかご教示願えますでしょうか。
よろしくお願いいたします。
otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2008-09-23 07:03
ここにやり方が載っています。

http://www.atmarkit.co.jp/fdotnet/dotnettips/479ctrlfind/ctrlfind.html
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-09-23 13:20
引用:

コウジさんの書き込み (2008-09-23 04:07) より:

CType(Me.Controls(rd("button_id")), Object).Visible = False
CType(Me.Controls(rd("button_id")), Object).Visible = True


本題とは関係ないですが、この CType に意味はありますか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
コウジ
ベテラン
会議室デビュー日: 2006/12/18
投稿数: 54
投稿日時: 2008-09-27 01:20
じゃんぬねっとさん、otfさん、ありがとうございました。
早い回答をいただいていたのに今まで返事できなくて大変失礼いたしました。

otfさんよりいただいたリンクより解決できました。

じゃんぬねっとさんからはよく厳しい指摘を受けているように思います・・・汗。
前任者のソースコードを流用しているので今回もあまり考えはありません・・・。
自分の姿勢を見直さなくてはならないとは思いながらも仕事の消化を追及してしまうのはよろしくないとは自覚しております。

いつもの事ながら皆様本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)