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

投稿時間:2004/05/26(Wed) 13:39
投稿者名:mashin
Eメール:
URL :
タイトル:
MSFlexGridで問い合わせ受付票を作成してるのですが・・・
はじめましてmashinと申します。
いろいろとサンプルを見てもわからないので
教えていただきたく、書き込みました。

作りたいもの
列:日付、時間、発信者、受信者、対応履歴
行:50行固定
イメージ的には
--------------------------------------------------
|日付|時間|発信者|受信者|  対応履歴      |
--------------------------------------------------
|5/8 |10時| XX | ○○ | 〜を指示        |
--------------------------------------------------
|  |  |   |   |            |
--------------------------------------------------
↓以下後47行続く 

このような表を作ったのですが、少し困っています。
プログラムで「XX行までは入力している」という判定をさせたいのですが
可能なんでしょうか? ※対応履歴のみ書き込み必須項目
・・・ようは何行まで入力されているかを調べ、繰り返しの処理で
DBに格納したいのですが。。

投稿時間:2004/05/26(Wed) 14:53
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re: MSFlexGridで問い合わせ受付票を作成してるのですが・・・
> プログラムで「XX行までは入力している」という判定をさせたいのですが
> 可能なんでしょうか? ※対応履歴のみ書き込み必須項目
> ・・・ようは何行まで入力されているかを調べ、繰り返しの処理で
> DBに格納したいのですが。。

対応履歴のセルを調べて、何も書かれてなければ処理を抜けるようにするとか。

Dim lngRow As Long

For lngRow = 1 To MSFlexGrid1.Rows - 1
    '対応履歴に何も入ってなかったら処理を抜ける
    If MSFlexGrid1.TextMatrix(lngRow, 4) = "" Then
        Exit For
    End If
    
    DB登録処理

Next lngRow

投稿時間:2004/05/27(Thu) 10:38
投稿者名:mashin
Eメール:
URL :
タイトル:
Re^2: MSFlexGridで問い合わせ受付票を作成してるのですが・・・
返信遅れてしまい、すいません。
LESIAさんのご提示していただいたプログラムを参考に作ってみました。

※対応履歴編集というフォームにMSFlexGridがあり。
 他のフォームより下記を実行しています。

Private Sub Command1_Click()
Dim lngrowx As Long
Dim lngrowy As Long
Dim taiou As String

For lngrowx = 1 To 対応履歴編集.MSFlexGrid1.Rows - 1
    '対応履歴に何も入ってなかったら処理を抜ける
    For lngrowy = 1 To 5
        If 対応履歴編集.MSFlexGrid1.TextMatrix(lngrowx, lngrowy) = "" Then
            Exit For
        End If
        'DB登録処理
    taiou = taiou & 対応履歴編集.MSFlexGrid1.TextMatrix(lngrowx, lngrowy) & ","
    MsgBox taiou
    Next lngrowy
Next lngrowx
End Sub

MSFlexGridのセルをひとつの変数に入れることができたんで、これでDBに格納できます。
そして一つ考えていることがあるんですが、「一行に空白が5回続いたら処理を終わる」という
処理を作る事は可能でしょうか?
自分でもちょっと考えて見ます・・・。

投稿時間:2004/05/27(Thu) 10:45
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: MSFlexGridで問い合わせ受付票を作成してるのですが・・・
> そして一つ考えていることがあるんですが、「一行に空白が5回続いたら処理を終わる」という
> 処理を作る事は可能でしょうか?
調べる対象を行から列に変更して、空白のセルだったらカウントをUPし、
空白でなかったら、カウントをリセットする、カウントが>5 になったら Exit For

投稿時間:2004/05/27(Thu) 12:15
投稿者名:Say
Eメール:
URL :
タイトル:
Re^3: MSFlexGridで問い合わせ受付票を作成してるのですが・・・
こんな手もあります

    Dim lngrowx As Long
    Dim lngrowy As Long
    Dim strbuf As String
    Dim strvbtab4 As String
    strvbtab4 = String(4, vbTab)
    For lngrowx = 1 To MSFlexGrid1.Rows - 1
        MSFlexGrid1.Col = 1
        MSFlexGrid1.Row = lngrowx
        MSFlexGrid1.ColSel = 5
        MSFlexGrid1.RowSel = lngrowx
        strbuf = MSFlexGrid1.Clip
        If strbuf = strvbtab4 Then
            Exit For
        Else
            Debug.Print Replace(strbuf, vbTab, ",")
        End If
    Next

データにvbTabが含まれるときは、ちょっと工夫してください。

投稿時間:2004/05/27(Thu) 12:55
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^3: MSFlexGridで問い合わせ受付票を作成してるのですが・・・
どうでもいいようなことですが(^^;

> Dim lngrowx As Long
> Dim lngrowy As Long
これだと行を表わす変数が2つある感じですので

> If 対応履歴編集.MSFlexGrid1.TextMatrix(lngrowx, lngrowy) = "" Then
こういう使い方をする場合は、下のようにすると変数名がわかりやすいかもです。

Dim lngRow As Long
Dim lngCol As Long

省略

If 対応履歴編集.MSFlexGrid1.TextMatrix(lngRow, lngCol) = "" Then

投稿時間:2004/05/27(Thu) 14:20
投稿者名:mashin
Eメール:
URL :
タイトル:
Re^4: MSFlexGridで問い合わせ受付票を作成してるのですが・・・
管理人殿
Sayさん
LESIAさん

色々な意見をありがとうございました
管理人殿の考えた通りに組んでみて動かしてみます。

Sayさんの考えてくれたソースは見やすくてとてもいいと思うので、
少し手を加えて、一つの変数にすべてのセルのデータを格納し(”,”で区切り)
DBの1フィールドに納めたいと思い、いじってみたんですが
なかなかうまくいきませんでした。

ですのでLESIAさんが考えてくれたソースでがんばります^^
とても参考になり勉強になりました。ありがとうございます。

投稿時間:2004/05/27(Thu) 16:02
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: MSFlexGridで問い合わせ受付票を
> 少し手を加えて、一つの変数にすべてのセルのデータを格納し(”,”で区切り)

なら、ヘルプで Clip プロパティを調べて下さい。
ここのMSFlexGrid関係にも解説(怪説)がありますが。