- PR -

クエリ抽出条件のパラメータをコードで指定したい。

1
投稿者投稿内容
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-10-21 14:47
Visual Basic 2005 Express Edition でWindowsアプリケーションを開発しています。
現在会計ソフトを開発中ですが、仕訳データを選択表示させるためにリストボックスで勘定科目を指定して、
借方勘定フィールドか貸方勘定フィールドのどちらかが選択勘定科目であるレコードだけを表示させたく、
次のように2個のBindingSourceにFilterを掛けましたが、コンパイルエラーで動作しません。(X:指定勘定科目)
→ bindingSource.Filter="借方勘定=X.Tostring" Or "貸方勘定=X.Tostring"

そこで抽出条件を複数設定可能なクエリでクエリパラメータを借方勘定フィールドと貸方勘定フィールドに
設定して「クエリパラメータ」ダイアログボックスから勘定科目を指定することで正常に動作しています。

お尋ねしたいのは勘定科目を「クエリパラメータ」ダイアログボックスからの指定するのではなく、
プログラムのコードで指定したいのですが、その指定方法がわかりません。指定方法をご指導下さい。


[ メッセージ編集済み 編集者: だんじり 編集日時 2007-10-21 23:46 ]
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-22 11:56
わからないことが多いです。。

引用:
現在会計ソフトを開発中ですが、仕訳データを選択表示させるためにリストボックスで勘定科目を指定して、
借方勘定フィールドか貸方勘定フィールドのどちらかが選択勘定科目であるレコードだけを表示させたく、

何に表示させるのですか?(例えばDataGridViewとか)

引用:
次のように2個のBindingSourceにFilterを掛けましたが、コンパイルエラーで動作しません。(X:指定勘定科目)
→ bindingSource.Filter="借方勘定=X.Tostring" Or "貸方勘定=X.Tostring"

元のクエリがわからないです

引用:
そこで抽出条件を複数設定可能なクエリでクエリパラメータを借方勘定フィールドと貸方勘定フィールドに
設定して「クエリパラメータ」ダイアログボックスから勘定科目を指定することで正常に動作しています。

どうやったら「クエリパラメータ」ダイアログボックスが表示されるのですか(ちょい調べたんですが私にはわからなかった)
また、この操作はユーザがやるんですか?開発者?

引用:
お尋ねしたいのは勘定科目を「クエリパラメータ」ダイアログボックスからの指定するのではなく、
プログラムのコードで指定したいのですが、その指定方法がわかりません。指定方法をご指導下さい。

Adapterを使ってるならどっかでFill系のメソッドを実行してないですかね(コードは自動生成かも)。
場所としてはそこなんじゃないかと推測はできますが。

[追記]
あ、あとDBが何かもわかりません。(Accessとか)

↓あ、、単にそういうことか、、もしれませんね、、

[ メッセージ編集済み 編集者: べる 編集日時 2007-10-22 12:26 ]
こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2007-10-22 12:17
引用:

コンパイルエラーで動作しません。(X:指定勘定科目)
→ bindingSource.Filter="借方勘定=X.Tostring" Or "貸方勘定=X.Tostring"



どこに何を・・・??

コード:
bindingSource.Filter="借方勘定=" + X.Tostring + " Or " + "貸方勘定=" + X.Tostring



それとも全然違う問題ですか?
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-10-22 12:26
コンパイルエラーが発生するのは、
コード:
"借方勘定=X.Tostring" Or "貸方勘定=X.Tostring" 


が文字列じゃないから。

以下のようにすれば、コンパイルは通るんじゃないの?
コード:
"(借方勘定=X.Tostring) Or (貸方勘定=X.Tostring)" 


これが正しい結果を生むかどうかは分からないけど。

引用:

お尋ねしたいのは勘定科目を「クエリパラメータ」ダイアログボックスからの指定するのではなく、
プログラムのコードで指定したいのですが、その指定方法がわかりません。指定方法をご指導下さい。


どのようなコードを書いているのか、質問内容からは読み取れないため、答えられません。

DataSetにDbDataAdapterを通してFillしてる?
それともIDbCommandを使ってる?

IDbCommandなら、実行前にパラメータを渡してやれば良いんじゃないの?
DbDataAdapterなら、SelectCmmandプロパティでIDbCommandが取得できるので、以下同文
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-10-23 13:36
べるさん、こあらさん、かずくんありがとうございました。

またお礼の返事が遅くなり申し訳ありません。また、質問の説明が悪く分りにくい内容
となって申し訳ありません。私はBindingSourceへのFilterで、複数の抽出条件は設定で
きないものと思っていましたが、AndやOrで連結すれば可能であることを指導いただき、
その後テストを行っていました。変数設定なので少々違っていましたが複数の抽出条件
でも正常に動作することが確認できました。以下BindingSourceへのFilterについて
まとめて報告します。

【FieldがText型の場合】
単一条件(値型A):"Field名= 'A'"
単一条件(変数X):"Field名 = '" & X & " '"
複数条件(値型A):"Field名1= 'A' Or Field名2= 'B'"
複数条件(変数X):"Field名1= '" & X & " '" & " Or " & "Field名2 = '" & XX & " '"

【Fieldが数値型の場合】
単一条件(値型8):"Field名= 8"
単一条件(変数X):"Field名 = " & X
複数条件(値型A):"Field名1= 8 Or Field名2= 8"
複数条件(変数X):"Field名1= " & X & " Or " & "Field名2 = " & XX
※And,Orを併用する場合の括弧は次のように設定
→"(借方勘定 = '" & X & " ')" & " Or (貸方勘定 = '" & X & " ')"

【Fieldが日付型の場合】
単一条件(値型 ):"Field名 = #7-3-01# "
単一条件(変数X):"Field名 = #" & X & "# "
複数条件(値型A):"Field名1= #7-3-01# Or Field名2= #9-9-9#"
複数条件(変数X):"Field名1= #" & X & "# Or " & "Field名2 = #" & X & "# "

本当にありがとうございました。
なお、クエリでクエリパラメータ設定とは下記のようなSQL文でWHERE区に設定する
「借方勘定 LIKE ? & %」 等です。

SELECT 取引月日, 伝票番号, 借方勘定,借方金額, 借消税, 貸方勘定, 貸方金額, 貸借摘要
FROM n00仕訳
WHERE (借方勘定 LIKE ?) OR (貸方勘定 LIKE ?)

このことについてはACCESS等ではパラメータの設定をフォームのTextBox.Text等から
値を取得して実行できるようですがもう少し調べてみます。





[ メッセージ編集済み 編集者: だんじり 編集日時 2007-10-23 13:37 ]
1

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