QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

レコード件数の取得方法

OLEDBを使用してORACLEデータベースに接続をしています。
SELECT文を実行したときに、レコード件数を取得したいのですが、
どのようにすれば取得できるのでしょうか?
よろしくお願いいたします。

質問者:yoko

回答

ふぐさんのプログラムを参照させていただき、レコード件数を取得しようとしたのですが、
ExecuteScalar には接続が開かれていて使用可能なことが必要です。現在の接続状態は Closed です。
というエラーが出てうまくいきません。
どうぞお力をお貸しいただければと思います。

dc_k_entry.Open();
SelCmd_k_entry.CommandText= "SELECT COUNT(*) FROM 会員名簿マスタ";
int count = (int)SelCmd_k_entry.ExecuteScalar();
memberID.Text=count.ToString();
dc_k_entry.Close();

投稿者:hiroko

編集 履歴 (0)

hirokoさんの書き込み (2003-11-29 03:58) より:

ふぐさんのプログラムを参照させていただき、レコード件数を取得しようとしたのですが、

ExecuteScalar には接続が開かれていて使用可能なことが必要です。現在の接続状態は Closed です。

というエラーが出てうまくいきません。

どうぞお力をお貸しいただければと思います。

ただ単にデータベース接続がOpenされてないだけだとおもうのですが?
というかMSDNライブラリ等見てから試してます?

_________________//_/
_/うちの会社の変なところ〜
_/1条.毎年300人新卒採用
_/2条.大事な事項(就業規則等)の変更発表は、施行前日
_/(以下略)

投稿者:アティ

編集 履歴 (0)

アティさんの書き込み (2003-11-29 07:50) より:

というかMSDNライブラリ等見てから試してます?

 エラーメッセージのところでF1押したらエラーの詳細が見られますしね。

で、こっちにつけたのは、シグニチャに突っ込みいれようと思ったのですが、引用されないのね。。。

投稿者:Jitta

編集 履歴 (0)

Jittaさんの書き込み (2003-11-29 19:49) より:

で、こっちにつけたのは、シグニチャに突っ込みいれようと思ったのですが、引用されないのね。。。

おお、シグニチャに突っ込みを入れようとするのはお目が高い(?)
んでは、本文に記入させていただきます。


///
_/うちの会社の変なところ〜
_/1条.毎年300人新卒採用
_/2条.大事な事項(就業規則等)の変更発表は、施行前日
_/(以下略)
では、突っ込みどうぞ
_
_______________//_/
_/うちの会社の変なところ〜
_/1条.毎年300人新卒採用
_/2条.大事な事項(就業規則等)の変更発表は、施行前日
_/(以下略)

投稿者:アティ

編集 履歴 (0)

スレッドの趣旨と関係なくてすみません。

_/1条.毎年300人新卒採用

 んで、1年後には何人残っているのでしょう???
(つうか、今時なんて気前のいい会社だ)

_/2条.大事な事項(就業規則等)の変更発表は、施行前日

 ことによっては労働基準法違反です。組合がなくても、全従業員の半分以上(だったかな?)に事前に知らせ、合意を得る必要があります。
#中小企業で守られているかどうかは別
#労働基準局へ行けば、基準局から『指導』はしてくれるが、
#あくまでも指導なので強制力はない

投稿者:Jitta

編集 履歴 (0)

Jittaさんの書き込み (2003-11-30 20:04) より:

スレッドの趣旨と関係なくてすみません。

_/1条.毎年300人新卒採用

 んで、1年後には何人残っているのでしょう???

(つうか、今時なんて気前のいい会社だ)

1年後新卒が何人やめてるかは分からないんですけど、
社全体で1年で150人ほどやめていると言う噂があります。

_/2条.大事な事項(就業規則等)の変更発表は、施行前日

 ことによっては労働基準法違反です。組合がなくても、全従業員の半分以上(だったかな?)に事前に知らせ、合意を得る必要があります。

#中小企業で守られているかどうかは別

#労働基準局へ行けば、基準局から『指導』はしてくれるが、

#あくまでも指導なので強制力はない

全従業員を代表する者の意見を聞かなければならないって項目ですかね?
それについては、なんか10年ぐらい(?)前に全社員の入っていた会があったらしくて、
それが、ちょっと名称変更する際にアンケートを取って、代表者を決めたらしいです。
で、その人がずっと代表者らしいです。

うーむ、関係ないスレッドに書き込むのは気が引けるので、
あたらしく、スレッド立てます。
題は「自分の会社の不満はなんですか?」にしておきます。

_________________//_/
_/うちの会社の変なところ〜
_/1条.毎年300人新卒採用
_/2条.大事な事項(就業規則等)の変更発表は、施行前日
_/(以下略)

投稿者:アティ

編集 履歴 (0)

OLEDBを使用してORACLEデータベースに接続をしています。
SELECT文を実行したときに、レコード件数を取得したいのですが、
どのようにすれば取得できるのでしょうか?
よろしくお願いいたします。

こんにちは、こんな感じでどうでしょうか。

Dim Ds As DataSet
Dim Dta As DataTable

Dta = ds.Tables(0)
Label1.Text = CType(Reader.Rows.Count, Integer) 'データ件数の表示
Label1.Text += "件のデータ"

投稿者:ダンクーガ

編集 履歴 (0)

こんんちは。

nishiさんの書き込み (2003-06-16 10:35) より:

OLEDBを使用してORACLEデータベースに接続をしています。

SELECT文を実行したときに、レコード件数を取得したいのですが、

どのようにすれば取得できるのでしょうか?

 これは、「どのようにわかりたい」のでしょう?また、現在どのようにデータを取得していますか?

 例えば、DataTableやDataSetにOleDbDataAdapterのFillメソッドを使用して取得しているならダンクーガさんのような方法になります。OleDbDataReaderを使用して1行ずつ取得しているなら、データの最後までカーソルを進めないとデータ数はわかりません(OleDbのカーソルは一方通行だったはず)。それとも、SELECT文を発行する前に知りたいのであれば基本的に不可能ですが、「SELECT COUNT(…) FROM …」を発行して取得する、ということができます。

投稿者:Jitta

編集 履歴 (0)

質問内容が不明確ですみません・・・。

レコード件数を取得したいタイミングとしては、
SELECT文を実行した直後です。
直後に取得できるのであれば、
SELECT文の実行手段は特にこだわっていません。

ですので、ダンクーガさんの通りで試してみたいと思います。

ダンクーガさん、Jittaさん、ありがとうございました。

投稿者:yoko

編集 履歴 (0)

件数のみの取得なら普段個人的に使っている方法で(C#ですがVBだったら読替してね)

OleDbConnection con;
OleDbCommand cmd;

として

cmd.CommandText = "SELECT COUNT(*) FROM ・・・・";
int count = (int)cmd.ExecuteScalar();

Console.WriteLine(count.ToString() + "件です。");

みたいにしてもできると思います。

投稿者:ふぐ

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。