質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

1回答

1949閲覧

windowフォームでテキストボックスを配置しそこに入力した値を変数としてselect文を発行し DataGridViewに表示させたい

tototrakito

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

0クリップ

投稿2021/07/23 23:10

編集2021/07/25 05:11

前提・実現したいこと

windowフォームでテキストボックスを配置しそこに入力した値を
変数としてselect文を発行し DataGridViewに表示させたいです。
お手数ですがどなたかご教示お願い申し上げます。

今できていること
1.visual studioのサーバエクスプローラで
データベースに接続できています。
2.問い合わせウィンドウでselect文(置換変数)を実行したら
結果は返ってきます
select * from emp where sal between :a and :b
3.上記2のselect文をWindowsフォームに実装したく存じます。
4.Windowsフォームにテキストボックスを配置し
上記2の:a,:bにテキストボックスに入力された値を代入し
その結果を DataGridViewに表示させたいです。

今できていることその2
5.SurferOnWww様ご回答の
WHERE 句無しで全レコード抽出、DataGridView への表示まではできました。

イメージ説明
イメージ説明

補足情報(FW/ツールのバージョンなど)

Visual Studio 2019
Visual c#
oracle データベース11gR2
Windowsフォームイメージ説明ソース

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/07/23 23:54 編集

自分ではどこまでできていて、どこで躓いていて、何がわかれば解決できるか書きましょう。 そもそも、 > 変数としてselect文を発行 とか書いてあるけど、その「変数」って何か、それを使って select 文をどのように組み立てるのかが不明。回答者の想像力に期待しないで、第三者が読んで誤解なく分かるように書きましょう。
退会済みユーザー

退会済みユーザー

2021/07/24 00:28 編集

今できていることを見た感じ、躓いてる云々というレベルではなく、まだ何も調べていない、何もコーディングしていないように見えるのですが。少しは自分で頑張りましょうよ… "DataGridView" "C# Oracle" で検索するだけでも、それなりに情報は得られますよ? https://teratail.com/help/question-tips#questionTips1-2 > [1-2. 投稿前に検索し、できるところまで自分でやってみましょう]
退会済みユーザー

退会済みユーザー

2021/07/24 00:30

WHERE 句無しで全レコード抽出、DataGridView への表示まではできているのですか? 表示だけでなく、その後ユーザーによる編集、編集結果の DB への書き戻しまで視野に入れているのですか?
退会済みユーザー

退会済みユーザー

2021/07/24 01:12

回答に対するレスは回答欄の下にコメント欄がありますのでそちらにお願いします。
退会済みユーザー

退会済みユーザー

2021/07/24 01:53

↓ これを私の回答のコメント欄に書くよう言ったつもりですが・・・ > ご回答ありがとうございます。 > ご教示いただいた内容をもとに > トライします。 それ以外の編集・追記は質問欄に残しておいてください。
退会済みユーザー

退会済みユーザー

2021/07/24 06:09

> なにかヒントでもいただけると幸甚に存じます 聞く前に上のコメントでお願いしたことをちゃんとやってください。話はそれから
退会済みユーザー

退会済みユーザー

2021/07/25 00:39 編集

話が通じてないです。 Teratail は情報の蓄積も目的にしているということですから、例えば検索などでこの記事がヒットして、ここを初めて見る人が、質問の一行目から順に下の方の回答まで読んでいったときに、話が分かるようにして欲しいのです。 質問のコメント欄(ここ)は「質問への追記・修正の依頼」の場所で、初期画面では閉じているので誰も見てないと思ってください。依頼されたことが質問欄を編集して反映されていれば済むことです。 回答欄のコメント欄は、あくまで回答に対するコメントです。現時点での質問者さんの 2021/07/24 10:25 のコメントは質問欄を編集して書くことで、元々質問者さんはそうしていたのを何故か回答のコメント欄に移動してきたため話がつながらなくなってしまいました。 現時点でやって欲しいことを以下に書きます。 (1) 私の回答のコメント欄の質問者さんのコメントはすべて削除(編集して「削除しました」とだけ書いてください) (2) 質問欄の「今できていることその2」の 5 を以下のように変更: 5. SurferOnWww の回答の「WHERE 句無しで全レコード抽出 DataGridView への表示」まではできた。 以上で初めてここを読む人にも話はつながるとい思いますので、よろしくお願いします。 条件付き検索を実現するための回答はその後でないと書けません
tototrakito

2021/07/25 05:20 編集

まずはご回答ありがとうございます。 お手数をおかけしまして済みません。 1.ご回答に対する私のコメントはすべて「削除しました」に修正しました。 2.「今できていることその2」の5を修正しました。 私の解釈が間違えていたら、お手数ですがまたご指摘お願いします。
guest

回答1

0

ベストアンサー

WHERE 句無しで全レコード抽出DataGridView への表示まではできているのですか?

→DataGridView への表示まではできていません データソースからの列をドラッグ&ドロップでWindowsフォームへの配置はできます。

では、まず「WHERE 句無しで全レコード抽出 DataGridView への表示」ができるところまでやってみませんか?

Visual Studio のデータソース構成ウィザードを利用して型付 DataSet + TableAdapter を作って、それを利用してアプリを作ると、慣れればドラッグ&ドロップ操作だけで 5 分もあればちゃんと動くアプリを作ることができます。条件付きの抽出は、それを発展させれて容易に作れると思います。

新しいデータ ソースの追加
https://docs.microsoft.com/ja-jp/visualstudio/data-tools/add-new-data-sources?view=vs-2019

上の記事は DB が SQL Server の場合ですが、Oracle でも同様なことができると思います。

また、上の記事の画像は DataGridView ではなく複数の TextBox に表示するように書いてありますが、以下の画像のようにデータソースウィンドウの当該 DataTable のドロップダウンで DataGirdView を選択してドラッグ&ドロップすれば、

イメージ説明

以下の画像のような DaraGridView を使ったアプリが自動的に生成されます。

イメージ説明

DB が SQL Server の場合ですが、詳細な手順は以下のチュートリアルを見てください。

チュートリアル : データベースへのデータの保存 (単一テーブル)
https://docs.microsoft.com/ja-jp/previous-versions/0f92s97z(v=vs.120)

10 行でズバリ !! 非接続型のデータ アクセス
https://github.com/microsoftarchive/msdn-code-gallery-community-0-9-non-alphabetic/tree/master/10%20%E8%A1%8C%E3%81%A7%E3%82%BA%E3%83%90%E3%83%AA%20!!%20%E9%9D%9E%E6%8E%A5%E7%B6%9A%E5%9E%8B%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%20%28ADO.NET%29%20%28VB%29

【追記】

WHERE 句無しで全レコード抽出、DataGridView への表示まではできました。

とのことですので、条件付き検索を実現するための案を 2 つ書いておきます。(1) は検索の度 DB サーバーにクエリを投げなくて済むのでお勧めです。

(1) DataView.RowFilter を使う

DataSet1 の中に EMP という DataTable があると思いますが、それの DefaultView プロパティで DataView を取得し、DataView.RowFilter プロパティに条件を設定して、DateGridView に再バインドする。

以下のような感じ。(あくまで感じ。変数名等は自分のケースに合わせて適宜変更してください。ユーザーの入力チェックも忘れずに)

this.DataSet1.EMP.DefaultView.RowFilter = "SAL >= " + this.textBox1.Text + " and SAL <= " + this.textBox2.Text; this.eMPBindingSource.DataSource = this.DataSet1.EMP;

(2) TableAdapter に条件付きクエリを追加して使う

TableAdapter に条件付きクエリを追加し、全件抽出のクエリと差し替える。

追加する方法については以下の記事の「D. テーブルアダプタへのクエリ追加」のセクションを見てください。

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

投稿2021/07/24 01:02

編集2021/07/25 05:47
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tototrakito

2021/07/25 07:01

ご回答ありがとうございます。 お示し下さいました2案ともやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問