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

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

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

Re[4]: データベースから最新200件を抽出


(過去ログ 119 を表示中)

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

■70149 / inTopicNo.1)  データベースから最新200件を抽出
  
□投稿者/ DMM (1回)-(2014/02/26(Wed) 16:33:52)

分類:[C#] 

2014/02/26(Wed) 16:34:21 編集(投稿者)
2014/02/26(Wed) 16:34:15 編集(投稿者)

OS:Win 2008 Server
言語:C# 2010
DB: Access 2010

上記開発環境にてDBプログラムを開発しています。

DBから最新の200件のみ抽出して、
DataGridViewに表示したいのですが、
まったく方法が分かりません。

おそらく、みなさんには簡単な事なのだろうと思いますが、
お恥ずかしながら皆目見当も付いておりません。

(参考)
・DBは不定期に更新
・更新頻度は数日に1回から1秒に数回までまちまち
・DBの行数は1から5万以上

ご指導頂けたらと思います。
よろしくお願いします。
引用返信 編集キー/
■70154 / inTopicNo.2)  Re[1]: データベースから最新200件を抽出
□投稿者/ 魔界の仮面弁士 (545回)-(2014/02/26(Wed) 17:12:16)
No70149 (DMM さん) に返信
> DBから最新の200件のみ抽出して、

更新時刻を管理するフィールドを用意してあるなら、

SELECT TOP 200 * FROM TableName ORDER BY 更新日時 DESC

みたいな感じで如何でしょう。


> DataGridViewに表示したいのですが、
TableAdapter あるいは DataAdapter を使って、データを
DataSet(DataTable) に読み込ませます。

あとはそれを、DataGridView の DataSource プロパティに渡せば OK かと。


http://hiros-dot.net/CS2005/Control/DataGridView/DataGridView01.htm

Access 2010 の場合は、上記の「Provider=Microsoft.Jet.OLEDB.4.0;」のところを
「Provider=Microsoft.ACE.OLEDB.12.0;」に変更してみてください。
引用返信 編集キー/
■70158 / inTopicNo.3)  Re[1]: データベースから最新200件を抽出
□投稿者/ WebSurfer (193回)-(2014/02/26(Wed) 18:00:35)
No70149 (DMM さん) に返信

以下の記事が参考になりませんか?

10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
http://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688

上記は 2 つのテーブルを扱う場合の例ですが、テーブルが一つならもっと簡単で、自力で
コードを一行も書かなくても、以下のページの図のアプリを作れるはずです。

Visual Studio でのデータへの接続の概要
http://msdn.microsoft.com/ja-jp/library/wxt2cwcc(VS.80).aspx

ただし、今回は「最新の200件のみ抽出」ということで、SELECT クエリを自分で定義して
TableAdapter にメソッドを追加しなければならないことと、Access の場合オートナンバー
列の DataSet への書き戻しが問題で、そこのところは自力でコードを書かざるを得ませんが、
対応は可能です。以下の記事を参考にしてください。

7.6 データコンポーネント機能による データアクセスコンポーネントの開発
http://www.atmarkit.co.jp/fdotnet/bookpreview/vs2005webapp_07/vs2005webapp_07_01.html

Access の更新
http://surferonwww.info/BlogEngine/post/2010/09/04/Updating-Access.aspx


#個人的には Access など使わないで、SQL Server を使うのがお勧めですが・・・
引用返信 編集キー/
■70177 / inTopicNo.4)  Re[2]: データベースから最新200件を抽出
□投稿者/ DMM (2回)-(2014/02/27(Thu) 10:55:36)
魔界の仮面弁士様

DMMです。
回答ありがとうございます。

「TOP 200」なんてのがあったんですね。
恥ずかしながら知りませんでした。

DESCが降順というのも初めて知りました。
おかげ様であと一歩のところまで来ています。

更新時刻のフィールドが日付と時刻に分けられているため、

OleDA = new System.Data.OleDb.OleDbDataAdapter("Select TOP 10 * from PRODUCTS ORDER BY 日時 DESC, 時刻 DESC", OleConn);

としてみたのですが、

OleDA.Fill(dtSet, "PRODUCTS");

のところで、下記のエラーが表示されます。
「1 つ以上の必要なパラメーターの値が設定されていません」

ORDER BYに複数条件を渡すやり方が違うのでしょうが、
私が調べた限りではカンマ区切りで問題なさそうなのでした。

引き続きご教示頂ければと思います。
引用返信 編集キー/
■70178 / inTopicNo.5)  Re[3]: データベースから最新200件を抽出
□投稿者/ 魔界の仮面弁士 (547回)-(2014/02/27(Thu) 11:10:03)
2014/02/27(Thu) 11:12:35 編集(投稿者)

No70177 (DMM さん) に返信
> 「1 つ以上の必要なパラメーターの値が設定されていません」

SQL の「スペルミス」や「列名や表名に予約語が使われている」などの理由により、
未定義のキーワードが、パラメータ変数と誤解されている状態です。

指定した SQL が実行可能かどうか、直接 Access 2010 に貼り付けて確認してみてください。


とりあえず、列名が「日付」ではなく「日時」になっている点が怪しそう。
引用返信 編集キー/
■70179 / inTopicNo.6)  Re[2]: データベースから最新200件を抽出
□投稿者/ DMM (3回)-(2014/02/27(Thu) 11:12:25)
WebSurfer様

DMMです。
返信ありがとうございます。

魔界の仮面弁士様より教えていただいた方法で
今のところ前進しているようですので、
まずはそちらで進めてみようと思います。

色々と参考になるサイトをありがとうございました。
引用返信 編集キー/
■70180 / inTopicNo.7)  Re[4]: データベースから最新200件を抽出
□投稿者/ DMM (4回)-(2014/02/27(Thu) 11:37:16)
2014/02/27(Thu) 11:58:07 編集(投稿者)

魔界の仮面弁士様

DMMです。
返信ありがとうございます。

>列名が「日付」ではなく「日時」になっている点が怪しそう。

おっしゃる通りでした。
いや、お恥ずかしい限りです。

おかげ様でやりたい処理が実現できました。
ありがとうございました。
解決済み
引用返信 編集キー/
■70182 / inTopicNo.8)  Re[3]: データベースから最新200件を抽出
□投稿者/ WebSurfer (195回)-(2014/02/27(Thu) 12:04:13)
No70179 (DMM さん) に返信
> WebSurfer様
>
> DMMです。
> 返信ありがとうございます。
>
> 魔界の仮面弁士様より教えていただいた方法で
> 今のところ前進しているようですので、
> まずはそちらで進めてみようと思います。
>

DataGridView の表示するだけならその方が簡単かもしれませんね。

もし、レコードの編集、更新、追加、削除等の操作が必要でしたら、先のレスのページを
見てください。
引用返信 編集キー/
■70183 / inTopicNo.9)  Re[4]: データベースから最新200件を抽出
□投稿者/ DMM (5回)-(2014/02/27(Thu) 13:55:47)
WebSurfer様

DMMです。
返信ありがとうございます。

> もし、レコードの編集、更新、追加、削除等の操作が必要でしたら、先のレスのページを
> 見てください。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -