tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルデータセットにフィルタをかけてカウント数を返す
記事No5267
投稿日: 2007/04/03(Tue) 09:00
投稿者かな
データセットに格納したデータにフィルタをかけてカウント数をとろうとしています。
フィルタの条件は、関数に引数を渡してとうろうとしているのですが、フィルタをかけるところでエラーになってしまいます。
なにかいい方法がないでしょうか?

Private Function fncCntGYo(ByVal astrCd, ByVal astrECd, ByVal astrDate) As String
Dim rtnVal As String = ""
    Dim foundRows() As DataRow
        foundRows = ds.受注仮予定.Select("得意先コード = '" & astrCd& "' and 枝番= '"  & astrECd& "' and 出荷予定日 = '" & astrDate& "'")
    rtnVal = CStr(foundRows.Length)
    Return rtnVal



    End Function

[ツリー表示へ]
タイトルRe: データセットにフィルタをかけてカウント数を返す
記事No5268
投稿日: 2007/04/03(Tue) 09:11
投稿者るしぇ
質問以前に調査(及びそこから得られる情報)が不十分です。
> なにかいい方法がないでしょうか?
エラーメッセージから原因を調査する。
エラーが出た時点の変数の値を調べ、SQL文の構文として
間違っていないか?調べる。
それぞれのフィールドの型と抽出条件が、有効な形であるか
調べる。

[ツリー表示へ]
タイトルRe^2: データセットにフィルタをかけてカウント数を返す
記事No5269
投稿日: 2007/04/03(Tue) 09:16
投稿者かな
回答ありがとうございます。

型などは合っているようでエラーも
dllのエラーのみで検討がつきません。

抽出条件をひとつにしたらうまくいくようで
2個、3個と増やすとダメなようです。
抽出条件は1つしかとれないのでしょうか?

[ツリー表示へ]
タイトルRe^3: データセットにフィルタをかけてカウント数を返す
記事No5270
投稿日: 2007/04/03(Tue) 09:43
投稿者るしぇ
> dllのエラーのみで検討がつきません。
えー。それ自体がなんか稀なケースではないかと思うのですが。。。
エラーメッセージを正確に書き写してください。

> 抽出条件は1つしかとれないのでしょうか?
Win2000,VB.NET2003 の環境で複数の条件で抽出できることを
確認しています。

[ツリー表示へ]
タイトルRe: データセットにフィルタをかけてカウント数を返す
記事No5271
投稿日: 2007/04/03(Tue) 11:27
投稿者魔界の仮面弁士
>         foundRows = ds.受注仮予定.Select("得意先コード = '" & astrCd& "' and 枝番= '"  & astrECd& "' and 出荷予定日 = '" & astrDate& "'")

この部分を、
 Dim condition As String = "得意先コード = '" & ……
 MessageBox.Show(condition)
 foundRows = ds.受注仮予定.Select(condition)
などとして、どのような文字列を渡した時にエラーとなるのかを教えてください。

気になる点としては、
 ・データ中に一重引用符「'」が渡された場合の対応が行われていない。
 ・データ型が一致しているか不明瞭(数値なら「'」は付けないし、日付なら「#」で囲むべき)
など。

[ツリー表示へ]