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

投稿時間:2003/01/16(Thu) 10:26
投稿者名:HotSpring
Eメール:
URL :
タイトル:
こんボックスで指定したものを別フォームへ表示
コンボボックスで指定した項目をAccessのデータベースから抽出し別のフォームに表示させたいのですが、
プログラムの仕方がわかりません。

投稿時間:2003/01/16(Thu) 13:03
投稿者名:A221
Eメール:
URL :
タイトル:
Re: こんボックスで指定したものを別フォームへ表示
> コンボボックスで指定した項目をAccessのデータベースから抽出し別のフォームに表示させたいのですが、
> プログラムの仕方がわかりません。

わからない箇所がわかりません。
したがって、何を教えてよいかわかりません。

1.どこまで出来たか?(何も出来ていないというのは努力してないってことです。)
2.どこでつまづく(つまづいた)か?
3.最終的に何をしたいか?

これだけ明確にしてください。そうすれば、レスがつくでしょう。
明確に出来ないならば、まず本屋でVBでデータベースを扱う参考書を買うことをお勧めします。

投稿時間:2003/01/16(Thu) 13:17
投稿者名:Say
Eメール:
URL :
タイトル:
Re: こんボックスで指定したものを別フォームへ表示
とりあえず、このへんに目を通してみるとか・・・。
http://homepage2.nifty.com/inform/vbdb/

投稿時間:2003/01/16(Thu) 14:56
投稿者名:HotSpring
Eメール:
URL :
タイトル:
Re: こんボックスで指定したものを別フォームへ表示
レスありがとうございます。

今、温泉の情報を検索するプログラムを作っています。温泉のデータベースはAccessで作り、VBのほうでコンボボックスのリストの中から選択した項目に該当するものをAccessのデータベースから別のフォームに表示させるという感じにしたいと思っています。
まず、VBとAccess間の接続はできるようになりました。
次に、コンボボックスのリストには県名を表示して、そのリストの中から調べたい県名を選択し検索実行ボタンをクリックするとデータベースからその県に該当する温泉の情報を抽出して新しいフォームに表示させるようにしたいのですが、実行してみるとすべての温泉の情報が表示されてしまいます。

自分なりに参考書やホームページなどで調べてはいるのですが、なかなか参考にできそうなものをみつけることができないので、アドバイスいただければ幸いです。

投稿時間:2003/01/16(Thu) 15:45
投稿者名:A221
Eメール:
URL :
タイトル:
Re^2: こんボックスで指定したものを別フォームへ表示
> まず、VBとAccess間の接続はできるようになりました。

AccessMDBを開くとき、データベースとの接続はADOですか?DAOですか?
#ついでにVBと窓の環境も書きましょう。

>そのリストの中から調べたい県名を選択し検索実行ボタンをクリックすると

基本的には、Combo1.Textで「選択した県名」が取得できます。
その先は、.Filterメソッドでフィルタをかけているか、SQLを発効していると思います。

いままで多かった間違え方だと、SQLを発効する際に
×   SQLTMP="SELECT * FROM 温泉DB WHERE 県名=" & Combo1.Text
○   SQLTMP="SELECT * FROM 温泉DB WHERE 県名='" & Combo1.Text &"'"

.Filterでひらいているなら、.Filter=Combo1.Text ...かな。
#ADOかDAOで変わる部分もあります。もう少し詳細に状況を書いてください。

投稿時間:2003/01/16(Thu) 16:08
投稿者名:HotSpring
Eメール:
URL :
タイトル:
Re^3: こんボックスで指定したものを別フォームへ表示
早速の返信ありがとうございます。

> AccessMDBを開くとき、データベースとの接続はADOですか?DAOですか?
> #ついでにVBと窓の環境も書きましょう。

データベースとの接続はADOでやっています。
環境はVisualBasic6.0、WindowsMeです。

このような掲示板で質問するのは初めてなので至らないところが多々あると思いますが、
よろしくお願いいたします。

投稿時間:2003/01/16(Thu) 17:21
投稿者名:A221
Eメール:
URL :
タイトル:
Re^4: こんボックスで指定したものを別フォームへ表示
> データベースとの接続はADOでやっています。

#私の言葉が足りませんでしたね。

もしよければ、そのコンボボックスから読み出した「県名」で
MDBにデータを取りに行くところのコード記述を載せてください。

投稿時間:2003/01/16(Thu) 19:27
投稿者名:HotSpring
Eメール:
URL :
タイトル:
Re^5: こんボックスで指定したものを別フォームへ表示
> もしよければ、そのコンボボックスから読み出した「県名」で
> MDBにデータを取りに行くところのコード記述を載せてください。

プログラムは以下のとおりです。
*B1はコンボボックスです。あと、コンボボックスの中身は「県名」ではなく「区名」でした。すみません。

Private rs As ADODB.Recordset
Private Cn As New ADODB.Connection
Option Explicit
Dim ZZZ As String
Dim mySQL As String

Private Sub basyoj_Click()
    'Label12.Caption = B1.Text
    
     B1.AddItem "0 板橋区"
     ZZZ = "板橋"
     MsgBox "板橋区実行〜"
     mySQL = "SELECT * FROM  関東 " _
         & "WHERE 区域 LIKE '%板橋%'"
    
     B1.AddItem "1 江戸川区"
     ZZZ = "江戸川"
     MsgBox "江戸川区実行〜"
     mySQL = "SELECT * FROM  関東 " _
         & "WHERE 区域 LIKE '%江戸川%'"
        
  ' レコードセットを取得
   Set rs = New ADODB.Recordset
          
   rs.CursorLocation = adUseClient
   rs.Open mySQL, Cn, adOpenStatic
   Form2.Show
        
   ' データグリッドにレコードセットの内容を表示
   Set Form2.DataGrid1.DataSource = rs
   Form2.abc.Caption = ZZZ
End Sub

投稿時間:2003/01/17(Fri) 02:01
投稿者名:A221
Eメール:
URL :
タイトル:
Re^6: こんボックスで指定したものを別フォームへ表示
#うーん。どこから手をつけようか、悩みますが。

まず、
Private rs As New ADODB.Recordset
としておいてください。

> Private Sub basyoj_Click()
>     'Label12.Caption = B1.Text
>      B1.AddItem "0 板橋区"
------------------------------------------------------------
1.コマンドクリック時にコンボボックスへ値を.additemしていますが、
これだと、クリックのたびに足されます。
したがって、フォームの起動時に読み込むようにしたほうがよいのでは?

Dim i As Long

With Rs
    .Open "SELECT 区域 FROM 関東",Cn,adOpenStatic
    i=0
    Do Until .EOF
        B1.AddItem Format$(i,"000 ") & .Fields(0)
        i=i+1
    Loop
    .Close
End With

------------------------------------------------------------
>      ZZZ = "板橋"
>      MsgBox "板橋区実行〜"
>      mySQL = "SELECT * FROM  関東 " _
>          & "WHERE 区域 LIKE '%板橋%'"
------------------------------------------------------------
2.ここで、MySQLに板橋を含むものを読むようにしていますが、
DBをあけずに、上書きしてしまっています。      
------------------------------------------------------------
>      B1.AddItem "1 江戸川区"
>      ZZZ = "江戸川"
>      MsgBox "江戸川区実行〜"
>      mySQL = "SELECT * FROM  関東 " _
>          & "WHERE 区域 LIKE '%江戸川%'"
------------------------------------------------------------
ここですね。ですから、この場合は、

Private Sub basyoj_Click()
Dim SelText As String

Set rs = New ADODB.Recordset

SelText = Mid$(B1.Text,5,(B1.Text)-4)

MySQL="SELECT * FROM  関東 WHERE 区域 LIKE '%" & SelText & "%'"

With rs
    .CursorLocation = adUseClient
    .Open mySQL, Cn, adOpenStatic
End With

Set Form2.DataGrid1.DataSource = rs
Form2.abc.Caption = SelText
Form2.Show
End Sub
これで、選択されたコンボボックスの値で、SQLを発行します。
------------------------------------------------------------

ところで、これ、全部のデータが選ばれるのですか?
いまのプログラムでは、

>      mySQL = "SELECT * FROM  関東 " _
>          & "WHERE 区域 LIKE '%江戸川%'"

が実行されているはずです。

投稿時間:2003/01/17(Fri) 11:19
投稿者名:HotSpring
Eメール:
URL :
タイトル:
Re^7: こんボックスで指定したものを別フォームへ表示
アドバイス本当にありがとうございます。

> ところで、これ、全部のデータが選ばれるのですか?
> いまのプログラムでは、
>
> >      mySQL = "SELECT * FROM  関東 " _
> >          & "WHERE 区域 LIKE '%江戸川%'"
>
> が実行されているはずです。

mySQL = "SELECT * FROM  関東 " _
    & "WHERE 区域 LIKE '%江戸川%'"
を実行させることができました。

教えていただいたプログラムを参考にさせていただきましたが、
以下のようなエラーがでてしましました。
@すべてを訂正して実行した場合
>B1.AddItem Format$(i, "000 ") & .Fields(0)
実行時エラー'5':
プロシージャの呼び出し、または引数が不正です。
A
>With Rs
>    .Open "SELECT 区域 FROM 関東",Cn,adOpenStatic
>    i=0
>    Do Until .EOF
>        B1.AddItem Format$(i,"000 ") & .Fields(0)
>        i=i+1
>    Loop
>    .Close
>End With
上記の部分をコメントにして実行した場合
>SelText = Mid$(B1.Text,5,(B1.Text)-4)
実行エラー'13':
型が一致しません。

たびたび申し訳ございませんが、アドバイスいただければ幸いです。
よろしくお願いいたします。

投稿時間:2003/01/17(Fri) 14:50
投稿者名:A221
Eメール:
URL :
タイトル:
Re^8: こんボックスで指定したものを別フォームへ表示
> 教えていただいたプログラムを参考にさせていただきましたが、
> 以下のようなエラーがでてしましました。


> @すべてを訂正して実行した場合
> >B1.AddItem Format$(i, "000 ") & .Fields(0)
> 実行時エラー'5':
> プロシージャの呼び出し、または引数が不正です。

えーと、後述のバグがありましたので、たぶん、上記は問題なく動作するはず・・。

> A
> >With Rs
> >    .Open "SELECT 区域 FROM 関東",Cn,adOpenStatic
> >    i=0
> >    Do Until .EOF
> >        B1.AddItem Format$(i,"000 ") & .Fields(0)
> >        i=i+1
ここに、一行追加です。
           .MoveNext
> >    Loop
> >    .Close
> >End With

レコードセット側を進めていなかったです。ごめんなさい。

投稿時間:2003/01/17(Fri) 16:07
投稿者名:HotSpring
Eメール:
URL :
タイトル:
Re^9: こんボックスで指定したものを別フォームへ表示
教えていただいたとおり、
.MoveNext
を追加したところ

>B1.AddItem Format$(i, "000 ") & .Fields(0)
の部分で
実行時エラー'5':
プロシージャの呼び出し、または引数が不正です。

というエラーはでなくなりましたが、

>SelText = Mid$(B1.Text,5,(B1.Text)-4)
の部分で
実行エラー'13':
型が一致しません。
というエラーがでます。

投稿時間:2003/01/17(Fri) 16:32
投稿者名:A221
Eメール:
URL :
タイトル:
Re^10: こんボックスで指定したものを別フォームへ表示
> >SelText = Mid$(B1.Text,5,(B1.Text)-4)

SelText = Mid$(B1.Text,5,Len(B1.Text)-4)

どうも寝不足で駄目ですね。集中力を欠いています。ごめんなさい。

投稿時間:2003/01/17(Fri) 19:08
投稿者名:HotSpring
Eメール:
URL :
タイトル:
Re^11: こんボックスで指定したものを別フォームへ表示
お疲れのところを何度もお返事いただき本当にありがとうございます。
学校の授業の課題でグループでやっているのですが、メンバー一同大変感謝しております。

> SelText = Mid$(B1.Text,5,Len(B1.Text)-4)
に直したところ、1回目に実行するとエラー表示はでなくなりましたが、
今度は選択したもの以外も全部表示されてしまうようになりました。

また、1回目に実行したものを終了し、再度実行すると
> SelText = Mid$(B1.Text,5,Len(B1.Text)-4)
の部分に
実行時エラー'5':
プロシージャの呼び出し、または引数が不正です。
とでてしまします。

投稿時間:2003/01/18(Sat) 00:02
投稿者名:A221
Eメール:
URL :
タイトル:
Re^12: こんボックスで指定したものを別フォームへ表示
> > SelText = Mid$(B1.Text,5,Len(B1.Text)-4)
> に直したところ、1回目に実行するとエラー表示はでなくなりましたが、
> 今度は選択したもの以外も全部表示されてしまうようになりました。

う〜ん。ここに、「ファンクション9」キーでブレークポイントをおいて、
SelTextの中身と、発行されるMySQLの中身を確認していただけませんか?

もしくは、Like節ではなく、"Where 区域名 ='" & Seltext & "'"
で、実行して結果がどうなるかを見てほしいのですが。

> > SelText = Mid$(B1.Text,5,Len(B1.Text)-4)
> プロシージャの呼び出し、または引数が不正です。

この部分は、コンボボックスへ読み込んだ際に、フィールドの頭に
番号をつけましたね。
>         B1.AddItem Format$(i,"000 ") & .Fields(0)  'この部分で。

だから、付けた空白を除去しているのですが、
MID$(指定文字列,抜き取りを開始する位置,抜き取る文字の長さ)
という指定の中で、おそらくTextが空だから発生していますね。

Comboのstyleはドロップダウンにしておいて、クリアしたりせずにおくと
大丈夫のはずです。

投稿時間:2003/01/18(Sat) 10:33
投稿者名:HotSpring
Eメール:
URL :
タイトル:
Re^13: こんボックスで指定したものを別フォームへ表示
> う〜ん。ここに、「ファンクション9」キーでブレークポイントをおいて、
> SelTextの中身と、発行されるMySQLの中身を確認していただけませんか?
>
江戸川区を選択し実行したところ、
SelTextの中身は、
sel=""、B1.Text"江戸川区"、Len(B1.Text)=4
MySQLの中身は、
mySQL=""、SelText=""
とでました。
やはり、選択したもの以外も表示されてしまします。

> もしくは、Like節ではなく、"Where 区域名 ='" & Seltext & "'"
> で、実行して結果がどうなるかを見てほしいのですが。
>
実行したところ、結果がなにも表示されませんでした。

> Comboのstyleはドロップダウンにしておいて、クリアしたりせずにおくと
> 大丈夫のはずです。

大丈夫でした。ありがとうございます。

投稿時間:2003/01/18(Sat) 11:25
投稿者名:A221
Eメール:
URL :
タイトル:
Re^14: こんボックスで指定したものを別フォームへ表示
> 江戸川区を選択し実行したところ、
> SelTextの中身は、
> sel=""、B1.Text"江戸川区"、Len(B1.Text)=4

B1.Textが"江戸川区"なら、SelText=B1.Textとしてください。

元プログラムからの改変でMID$による文字の除去が2回走ったりしていませんか?
もしくは、コンボボックスへ読み込む際に頭の番号をはずしていませんか?

> MySQLの中身は、
> mySQL=""、SelText=""

mySQL=""では、レコードセットは開けません。
MySQLを書き換える何か別の処理が入っていませんか?

> > もしくは、Like節ではなく、"Where 区域名 ='" & Seltext & "'"
> > で、実行して結果がどうなるかを見てほしいのですが。
> >
> 実行したところ、結果がなにも表示されませんでした。

SelText=""なら、当然です。Likeで全件選ばれてしまうのも当然です。

もう少し、自分たちでエラーの原因なり、SQLについてなり、
調べてから質問していただけるとうれしいのですが。

もう一度、書き直したソースを見直して、わからなければ改めて聞いてください。

#スレッドが読みにくくなりました。
#管理人のはなちゃん様、他の読者の皆様ごめんなさい。

投稿時間:2003/01/18(Sat) 14:21
投稿者名:HotSpring
Eメール:
URL :
タイトル:
お礼と謝罪
A221様へ
ここまで親切に教えていただき本当にありがとうございました。
また、自分達の勉強不足を深く反省し謝罪いたします。
ここからはもう少し自分達で努力をしていきます。

管理人様・掲示板をお使いの皆様へ
スレッドが読みにくくなり、皆様へ迷惑をかけたことを謝罪いたします。
ご迷惑をおかけいたしました。