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

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

C# と VB.NET の入門サイト

Re[12]: DBから取り出した情報を絞り込む方法


(過去ログ 40 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■21027 / inTopicNo.1)  DBから取り出した情報を絞り込む方法
  
□投稿者/ 緑籠 (1回)-(2008/06/23(Mon) 18:45:18)

分類:[ASP.NET (C#)] 

2008/06/23(Mon) 19:04:14 編集(投稿者)
2008/06/23(Mon) 19:04:09 編集(投稿者)

<pre><pre>23日19時に修正しました


・Visual Studio2008
・C#
・WindowsXP
を使って、図書管理システムを作っています。

私の担当は発注です。
図書の購入の際は、ユーザーの直属の上司の承認が必要になります。
その為、購入依頼時に入力されたユーザーIDを使って、
ユーザー情報のテーブルから、購入依頼が出ているものを所属ごとに分類する、ということをしたいです。
一応、SELECT文で購入承認の画面に必要な情報を出力させるというところまでは出来ているのですが、
そこから上司が画面を見たときに、上司の部署に所属している社員の購入依頼のみに絞り込む、ということが出来ないでいます。

因みにGridViewは、以下のようになっています。

<asp:Panel ID="Panel1" runat="server" BorderColor="Black" Height="250px"
ScrollBars="Vertical" BorderStyle="Outset" BorderWidth="1px" CssClass="test">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource2">
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>"
ProviderName="<%$ ConnectionStrings:ConnectionString2.ProviderName %>"
SelectCommand="select full_title, user_name, request_on, order_quantity from order_info,user_info
where request_by = user_name and approval_level = 2
order by approval_level;"></asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"></asp:SqlDataSource>
</asp:Panel>

初めて質問しますので、至らぬこともあると思いますが、よろしくお願いします。</pre></pre>
引用返信 編集キー/
■21029 / inTopicNo.2)  Re[1]: DBから取り出した情報を絞り込む方法
□投稿者/ Megg (11回)-(2008/06/23(Mon) 18:53:35)
No21027 (緑籠 さん) に返信
> ・Visual Basic2008
> ・C#
> ・WindowsXP
> を使って、図書管理システムを作っています。

VBとC#、2つの言語を使って1つのシステムを開発しているのですか??
(少なくとも私は)見たことないパターンなので勝手に推測しますが……
もしかして、
「Visual Studio 2008」
と混同していませんか?

「Visual Basic(VB)」は言語、「Visual Studio 2008」はVBやC#を使って開発するための
「統合開発環境」です。

ついでに、
> 図書の購入の際は、ユーザーの直属の上司の承認が必要になります。
> その為、購入依頼時に入力されたユーザーIDを使って、
> ユーザー情報のテーブルから、購入依頼が出ているものを所属ごとに分類する、ということをしたいです。
> 一応、SELECT文で購入承認の画面に必要な情報を出力させるというところまでは出来ているのですが、
> そこから上司が画面を見たときに、上司の部署に所属している社員の購入依頼のみに絞り込む、ということが出来ないでいます。

とありますが、コードビハインド側も示してくださると、他の回答者の方も
ヒント・答えを示しやすいと思います。

引用返信 編集キー/
■21030 / inTopicNo.3)  Re[2]: DBから取り出した情報を絞り込む方法
□投稿者/ 緑籠 (2回)-(2008/06/23(Mon) 19:07:28)
No21029 (Megg さん) に返信

> VBとC#、2つの言語を使って1つのシステムを開発しているのですか??
> (少なくとも私は)見たことないパターンなので勝手に推測しますが……
> もしかして、
> 「Visual Studio 2008」
> と混同していませんか?
>
> 「Visual Basic(VB)」は言語、「Visual Studio 2008」はVBやC#を使って開発するための
> 「統合開発環境」です。

すいません。その通りです。修正しました


> ついでに、
>>図書の購入の際は、ユーザーの直属の上司の承認が必要になります。
>>その為、購入依頼時に入力されたユーザーIDを使って、
>>ユーザー情報のテーブルから、購入依頼が出ているものを所属ごとに分類する、ということをしたいです。
>>一応、SELECT文で購入承認の画面に必要な情報を出力させるというところまでは出来ているのですが、
>>そこから上司が画面を見たときに、上司の部署に所属している社員の購入依頼のみに絞り込む、ということが出来ないでいます。
>
> とありますが、コードビハインド側も示してくださると、他の回答者の方も
> ヒント・答えを示しやすいと思います。

とのことですが、コードビハインドはデザイン部とコーディング部を分離すること、と理解しているのですが、
どう言った情報を提示すれば良いのでしょうか?
引用返信 編集キー/
■21032 / inTopicNo.4)  Re[3]: DBから取り出した情報を絞り込む方法
□投稿者/ Megg (12回)-(2008/06/23(Mon) 19:16:51)
No21030 (緑籠 さん) に返信
> とのことですが、コードビハインドはデザイン部とコーディング部を分離すること、と理解しているのですが、
> どう言った情報を提示すれば良いのでしょうか?

最初に公開なさっていた箇所はいわば「デザイン部」です。
しかし、

>>図書の購入の際は、ユーザーの直属の上司の承認が必要になります。
>>その為、購入依頼時に入力されたユーザーIDを使って、
>>ユーザー情報のテーブルから、購入依頼が出ているものを所属ごとに分類する、ということをしたいです。
>>一応、SELECT文で購入承認の画面に必要な情報を出力させるというところまでは出来ているのですが、
>>そこから上司が画面を見たときに、上司の部署に所属している社員の購入依頼のみに絞り込む、ということが出来ないでいます。

という問題はデザイン部よりもコーディング(部)に問題があるとみられます。
なので、現時点で出来ている
>>一応、SELECT文で購入承認の画面に必要な情報を出力させるというところ

問題が隠れていると思われる箇所
>>そこから上司が画面を見たときに、上司の部署に所属している社員の購入依頼のみに絞り込む
の部分を示してくださるとよいと思います。

# 技術レベルの高い回答者さんの中には、コードを見ずとも
# おおよそ原因をつかめる方もいらっしゃいますが……。
引用返信 編集キー/
■21034 / inTopicNo.5)  Re[4]: DBから取り出した情報を絞り込む方法
□投稿者/ 緑籠 (3回)-(2008/06/23(Mon) 19:30:47)
No21032 (Megg さん) に返信

> >>一応、SELECT文で購入承認の画面に必要な情報を出力させるというところ
> と
> 問題が隠れていると思われる箇所
> >>そこから上司が画面を見たときに、上司の部署に所属している社員の購入依頼のみに絞り込む
> の部分を示してくださるとよいと思います。
>
> # 技術レベルの高い回答者さんの中には、コードを見ずとも
> # おおよそ原因をつかめる方もいらっしゃいますが……。


Select文はコレ以外には特に書いてないです。
SelectCommand="select full_title, user_name, request_on, order_quantity from order_info,user_info
where request_by = user_name and approval_level = 2
order by approval_level;"
VSが賢いので、その機能に頼りっぱなしなのですが、これ以外に必要だったらそこも教えて下さい。

所属を呼び出すのは、こうやっています。
protected void Page_Load(object sender, EventArgs e)
{
//変数の宣言
DBConnecter.DBConnecter dbCon = new DBConnecter.DBConnecter();
Log.Log log = new Log.Log();
string strData;
string myQuery = null;
string strId = null;
Hashtable hashData = new Hashtable();

Session["ID"] = "682";

strData = (String)Session["ID"];

myQuery = "SELECT * FROM user_info WHERE user_id = ";
myQuery += strData;

dbCon.Connect(); //DB接続

hashData = dbCon.ReaderQuery(myQuery);

dbCon.Close(); //DB接続切断

strId = (String)hashData["section"];

}

以上です。
この取得してきた所属をどう使って、情報を絞り込めば良いのかを教えて頂きたいです。
もし、これを使わなくても良いようでしたら、無視して下さって構いません。
引用返信 編集キー/
■21036 / inTopicNo.6)  Re[5]: DBから取り出した情報を絞り込む方法
□投稿者/ Megg (13回)-(2008/06/23(Mon) 20:05:02)
No21034 (緑籠 さん) に返信
> Select文はコレ以外には特に書いてないです。
> SelectCommand="select full_title, user_name, request_on, order_quantity from order_info,user_info
> where request_by = user_name and approval_level = 2
> order by approval_level;"
> VSが賢いので、その機能に頼りっぱなしなのですが、これ以外に必要だったらそこも教えて下さい。
>
> 所属を呼び出すのは、こうやっています。
> protected void Page_Load(object sender, EventArgs e)
> {
> //変数の宣言
> DBConnecter.DBConnecter dbCon = new DBConnecter.DBConnecter();
> Log.Log log = new Log.Log();
> string strData;
> string myQuery = null;
> string strId = null;
> Hashtable hashData = new Hashtable();
>
> Session["ID"] = "682";
>
> strData = (String)Session["ID"];
>
> myQuery = "SELECT * FROM user_info WHERE user_id = ";
> myQuery += strData;
>
> dbCon.Connect(); //DB接続
>
> hashData = dbCon.ReaderQuery(myQuery);
>
> dbCon.Close(); //DB接続切断
>
> strId = (String)hashData["section"];
>
> }
>
> 以上です。
> この取得してきた所属をどう使って、情報を絞り込めば良いのかを教えて頂きたいです。
> もし、これを使わなくても良いようでしたら、無視して下さって構いません。

仕様によるとは思いますが、もしLoadの段階で一気に
>上司の部署に所属している社員の購入依頼のみに絞り込
んだデータを持ってきても構わないのなら、SQL = 変数:myQueryの中身で絞れないでしょうか?

>そこから上司が画面を見たときに、
とあるので可能かな…?と思ったのですが…。

しかし、
(1)ロード時は所属や購入依頼の種類(←複数あるのかわかりませんが)だけ持ってくる
(2)持ってきたデータを画面に表示し、ユーザー(この場合は上司にあたりますね)に選んでもらう
(3)確定する
の流れに近いタイプなら、
確定の段階で選択されたデータでフィルタをかける、という方法もあります。

引用返信 編集キー/
■21037 / inTopicNo.7)  Re[5]: DBから取り出した情報を絞り込む方法
□投稿者/ はつね (798回)-(2008/06/23(Mon) 20:11:27)
はつね さんの Web サイト
2008/06/23(Mon) 20:13:45 編集(投稿者)

No21034 (緑籠 さん) に返信
> Select文はコレ以外には特に書いてないです。
> SelectCommand="select full_title, user_name, request_on, order_quantity from order_info,user_info
> where request_by = user_name and approval_level = 2
> order by approval_level;"

FROM句にはorder_infoとuser_infoの2つのテーブルがありますが、select句、where句、order by句に
はテーブルが指定されていないため、テーブル仕様書などがない掲示板閲覧者には、何がなんだか分か
らない(推測していくしかない)です。ちょっと辛いかな。


> この取得してきた所属をどう使って、情報を絞り込めば良いのかを教えて頂きたいです。

社員がどこに所属してるのか、また、ある社員の上司は誰なのかというのは、テーブル
定義としてはどのように定義されているのですか?
それが分かれば、ある程度SQL文も絞れてくると思うのですが、頂いた情報だけだと
ちと分からないです。

[補足追記]
これ、SQL文とかソースって開発しているものそのものですよね?
ネット上に公開していいものなのでしょうか。
判断に困るようであれば、上司の人に聞くなどした方がいいかも。
上で、テーブル定義が欲しいって書いたけど(いや、本当にないと回答が難しいのですが)、公開しちゃまずいような気がします。

引用返信 編集キー/
■21038 / inTopicNo.8)  Re[6]: DBから取り出した情報を絞り込む方法
□投稿者/ 緑籠 (4回)-(2008/06/23(Mon) 20:19:32)
No21036 (Megg さん) に返信
No21037 (はつね さん) に返信
まとめての返信で失礼します

今回使うテーブルは二種類です。
ユーザー情報が格納されたuser_infoテーブルと、
購入依頼が出された書籍の情報が格納されたorder_infoテーブルです
user_infoテーブルにはユーザーID、ユーザー名、所属などが入っています
order_infoには書籍名、購入依頼を出した人のユーザーID、依頼数量、依頼日、状態レベル(今回は2がついているものを呼び出しています)が入っています
(他にも入荷予定日などが入る予定ですが、今回は関係がないので割愛します)
表示したいのは
書籍名、ユーザー名、数量、依頼日です

上司の人が画面を開いた段階で、
既に自分の部署の人間が購入依頼を出しているものが、リストアップされている状態にしたいです
引用返信 編集キー/
■21040 / inTopicNo.9)  Re[7]: DBから取り出した情報を絞り込む方法
□投稿者/ はつね (799回)-(2008/06/23(Mon) 20:28:30)
はつね さんの Web サイト
No21038 (緑籠 さん) に返信
> user_infoテーブルにはユーザーID、ユーザー名、所属などが入っています
(中略)
> 上司の人が画面を開いた段階で、
> 既に自分の部署の人間が購入依頼を出しているものが、リストアップされている状態にしたいです

user_infoテーブルには、どの人が上司でどの人が部下だかが分かるフラグはありますか?
もし、テーブルが以下のようであれば、
user_info
ユーザID
ユーザ名
所属
 上司ID

SELECT * FROM user_info where 上司ID=自分のID
とする事で、自分の部下の一覧が取得できます。

もし、上司か部下かが分かるフラグなり上記のようなIDなりがないと部下のリストアップは難しい
と思います。
# 所属には上司は1人、あとは全員部下という構成ならば、かろうじてできそうですが、
# 組織変更とかに耐えられなさそう。

引用返信 編集キー/
■21041 / inTopicNo.10)  Re[8]: DBから取り出した情報を絞り込む方法
□投稿者/ 緑籠 (5回)-(2008/06/23(Mon) 20:46:00)
No21040 (はつね さん) に返信

> user_infoテーブルには、どの人が上司でどの人が部下だかが分かるフラグはありますか?

ありません。
基本的に一番小規模の区切りでの上司なので、上司権限を与えられているのは各所属ごとにひとりです
引用返信 編集キー/
■21042 / inTopicNo.11)  Re[9]: DBから取り出した情報を絞り込む方法
□投稿者/ はつね (800回)-(2008/06/23(Mon) 21:07:50)
はつね さんの Web サイト
No21041 (緑籠 さん) に返信
>>user_infoテーブルには、どの人が上司でどの人が部下だかが分かるフラグはありますか?
>
> ありません。
> 基本的に一番小規模の区切りでの上司なので、上司権限を与えられているのは各所属ごとにひとりです

その一人が誰だかはどのように判定できますか?
判定ができないと「上司が画面を見たとき」という部分の実装が難しいです。


引用返信 編集キー/
■21043 / inTopicNo.12)  Re[10]: DBから取り出した情報を絞り込む方法
□投稿者/ 緑籠 (6回)-(2008/06/23(Mon) 21:11:52)
No21042 (はつね さん) に返信

権限レベルというものがユーザーテーブルには入っているので、
それと所属で判定します
引用返信 編集キー/
■21056 / inTopicNo.13)  Re[11]: DBから取り出した情報を絞り込む方法
□投稿者/ はつね (801回)-(2008/06/24(Tue) 09:59:48)
はつね さんの Web サイト
No21043 (緑籠 さん) に返信
> 権限レベルというものがユーザーテーブルには入っているので、
> それと所属で判定します

# 五月雨式に情報を提示すると回答を得られるまでの時間掛かりますよ。

SELECT * FROM user_info where 所属ID=(SELECT 所属ID FROM user_info WHERE ユーザID=[自ID] AND 権限レベル=[所属長]) AND 権限レベル<>[所属長]

こんな感じですかね。
[自ID]や[所属長]は適当に値入れて下さい。
一応、所属長以外の人が詐称できないように、[自ID]より所属IDを取得するようにしています。
引用返信 編集キー/
■21098 / inTopicNo.14)  Re[12]: DBから取り出した情報を絞り込む方法
□投稿者/ 緑籠 (7回)-(2008/06/24(Tue) 19:14:42)
Megg さん
はつね さん

無事解決させることができました。
丁寧に答えていただき助かりました。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -