[リストへもどる]
一括表示

投稿時間:2003/03/06(Thu) 13:33
投稿者名:マツモト
Eメール:
URL :
タイトル:
MSFlexGridの複数検索
こんにちは
よく物件情報のHPなのでいくつかのチェックボックスを選択しそれに当てはまる
物件を検索するといったようなものがありますが、これをMSFlexGridを使用して
検索させたいのです。

MSFlexGrid1に以下のような値が入っているものがあるとします。
┌───┬─────┬───┬───┐
│AAA│マンション│築3年│3DK│
├───┼─────┼───┼───┤
│BBB│アパート │築8年│3DK│
├───┼─────┼───┼───┤
│CCC│マンション│築5年│2DK│
└───┴─────┴───┴───┘

□マンション (CheckBox1)  □3DK (CheckBox2)
チェックボックスに当てはまる条件を検索し、例えば両方ともチェックしたら
AAAAの行のみをMSFlexGrid2に表示するといったようにしたいのですが。

「MSFlexGridのセル内を検索する」を参考に Text1.Text = .TextMatrix(Ro, Co)を使用して
みたんですが、1つだけチェックは検索できますが2つのチェックは検索できません。
どなたかアドバイスよろしくお願いします

投稿時間:2003/03/06(Thu) 15:13
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: MSFlexGridの複数検索
この場合行単位でデータを検索するのですから1行分のデータを集計して
StrTarget=A列のデータ & B列のデータ & C列のデータ

下記のようにすれば検索できます。
IF Instr(StrTarget,"マンション")>0 and Instr(StrTarget,"3DK")>0 then

実際の場面では状況により StrTarget は A列 & C列 のようにするなり
Clip 等を使用するなり工夫して下さい。

投稿時間:2003/03/06(Thu) 17:59
投稿者名:マツモト
Eメール:
URL :
タイトル:
Re^2: MSFlexGridの複数検索
花ちゃんさんお世話になります。

> IF Instr(StrTarget,"マンション")>0 and Instr(StrTarget,"3DK")>0 then

thenのあとがちょっと分からないんですよ。
Clipとは?使ったことがなくMSDNで調べましたがいまいち分かりません。
行単位で検索しヒットしたら、その行をもう一つのグリッドのMSFlexGrid2に順に
表示していきたいのです。VB初めて1年ほどの初心者です。
本など購入し独学でやっているのですが、グリッドのことってあまり扱ってなくて
困っています。更なる助言の程よろしくお願いします

投稿時間:2003/03/06(Thu) 19:04
投稿者名:丸太
Eメール:
URL :
タイトル:
Re^3: MSFlexGridの複数検索
> > IF Instr(StrTarget,"マンション")>0 and Instr(StrTarget,"3DK")>0 then
>
> thenのあとがちょっと分からないんですよ。
> Clipとは?使ったことがなくMSDNで調べましたがいまいち分かりません。
なるほど。よく見かけますよ、「いまいち分からない」って。
どのくらい分かりましたか?
使い方が分からなかったのですか?
使った結果のデータの意味がわからなかったのですか?
実際にClipを使ってみて違うと思ったのですか?

> 行単位で検索しヒットしたら、その行をもう一つのグリッドのMSFlexGrid2に順に
> 表示していきたいのです。
ヒットした行のデータを抜き出してセットするだけですよね。
MSFlexGrid1にデータをセットすることは出来るんだから、MSFlexGrid2に
設定できないことはないような気がしてしまいますが。

何を、どうするという具体的な手順の見通しは立っていますか?
もし立てていたら、その中でわからないのはどこですか?
その経過で、あなたの知識ではどこまでカバーしているのですか?
それとも花ちゃんさんのご回答が自分のしたいことと一致していないのですか?

> VB初めて1年ほどの初心者です。
せつないですね。文脈に意味がありませんが。

投稿時間:2003/03/06(Thu) 21:17
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: MSFlexGridの複数検索
> thenのあとがちょっと分からないんですよ。
行単位で検索しヒットしたら、その行をもう一つのグリッドのMSFlexGrid2に順に
表示していきたいのです。

そのための Clip です。

> Clipとは?使ったことがなくMSDNで調べましたがいまいち分かりません。

調べたのならそこに使用例が書いていたと思うのですが、試しましたか?
面倒だから試さなかったのですか?
覚える気があるなら使用例等を色々いじって見て下さい。そうすれば理解ができるかと
思います。
ここのMSFlexGrid関係を一通り目を通して試してみれば大体の事はできるようになりますよ!
下記をよく理解して見て下さい。理解しないと(人頼みでは)応用ができませんよ

Private Sub Command1_Click()
    MSFlexGrid2.Rows = 1
    Dim Ro     As Long
    Dim Co     As Long
    Dim myStr  As String
    Dim N      As Long
    With MSFlexGrid1
        For Ro = .FixedRows To .Rows - 1
            .Row = Ro
            .Col = 0
            .ColSel = .Cols - .FixedCols
            myStr = .Clip
            If InStr(myStr, Text1.Text) > 0 And _
                            InStr(myStr, Text2.Text) > 0 Then
                With MSFlexGrid2
                    .Row = N
                    .AddItem " ", .Row + 1
                    .Row = N + 1
                    .Col = 0
                    .ColSel = .Cols - .FixedCols
                    .Clip = myStr
                    myStr = ""
                    N = N + 1
                End With
            End If
        Next Ro
    End With
End Sub

投稿時間:2003/03/07(Fri) 16:33
投稿者名:マツモト
Eメール:
URL :
タイトル:
Re^4: MSFlexGridの複数検索
花ちゃんさん、お世話になりました。
教えていただいたコードを参考に色々といじってみます。
どうもありがとうございました