Page 13 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼テキストの名前?? 豆太 02/9/3(火) 15:19 ┣Re:テキストの名前?? イケガミ 02/9/3(火) 15:41 ┃ ┣イケガミ さん、ごめんなさい こうちゃん 02/9/3(火) 15:53 ┃ ┃ ┗Re:イケガミ さん、ごめんなさい イケガミ 02/9/3(火) 16:02 ┃ ┗Re:テキストの名前?? 豆太 02/9/3(火) 16:12 ┃ ┗Re:テキストの名前?? イケガミ 02/9/3(火) 16:29 ┃ ┗Re:テキストの名前?? 豆太 02/9/3(火) 17:06 ┃ ┣Re:テキストの名前?? イケガミ 02/9/3(火) 17:15 ┃ ┗Re:別案 イケガミ 02/9/3(火) 17:44 ┃ ┗Re:別案 こうちゃん 02/9/3(火) 20:14 ┃ ┗Re:別案 イケガミ 02/9/3(火) 23:21 ┃ ┣ヤバイ!! 豆太 02/9/4(水) 9:11 ┃ ┗Re:別案 こうちゃん 02/9/5(木) 9:39 ┃ ┗Re:別案 イケガミ 02/9/5(木) 9:47 ┃ ┗Re:別案 こうちゃん 02/9/5(木) 9:55 ┗Re:テキストの名前?? こうちゃん 02/9/3(火) 15:51 ─────────────────────────────────────── ■題名 : テキストの名前?? ■名前 : 豆太 ■日付 : 02/9/3(火) 15:19 -------------------------------------------------------------------------
お世話になります。 今回は、変わった質問なんですが。 テキストボックスを『txt_test1』『txt_test2』『txt_test3』 と名前を付けて作りました。 下のソースのように日付ごとにデータを入てたいです。 ここで、for next文で使用した"a"の値を テキストの名前の数字に使用したいのですが、 うまく動かすことができません。 どうか救いの手を・・・。 Option Compare Database Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim a As Long Dim b As String Private Sub cmd_ok_Click() For a = 1 To 3 strSQL = "select データ from データ管理 where 月 = '" & txt_test.Value & "' And 日 = '" & a & "';" Set db = CurrentDb Set rs = db.OpenRecordset(strSQL, dbOpenDynaset) If rs.EOF Then MsgBox "ノ〜デ〜タ" Else Do Until rs.EOF txt_t & a & .value = rs!データ(ここです!!) rs.MoveNext Loop End If Set db = Nothing Set rs = Nothing Next a End Sub |
テーブル:データ管理 フィールド:データ にあるレコードの1〜3件目をテキストボックスに表示したいということ? テキストボックスの参照に変数を使う場合は、 Me.Controls("txt_test" & a) = rs!データ のようにします。 テーブルの中身とテキストボックスにどう表示したいのかを 具体的に教えてください。 |
イケガミ さん、こんにちは また、かぶっちゃいましたm(__)m (オンラインで書いてたんで・・) |
こうちゃん さん、こんにちは。 >また、かぶっちゃいましたm(__)m それはいいのですが、今だに質問の内容がわからなくて。。 これは、For〜Next 文とDo〜Until 文のつながりを見るとおかしいですよね。。 これだと、レコードセットの最終データがテキストボックスに入るだけですので。。 |
▼イケガミ さん: >テーブルの中身とテキストボックスにどう表示したいのかを >具体的に教えてください。 月 日 データ 8 1 123 8 2 112233 8 3 111222333 上のテーブルから8/1,8/2,8/3のデータを それぞれテキストに入れるだけです・・・。 |
> 月 日 データ > 8 1 123 > 8 2 112233 > 8 3 111222333 は、必ず1日に1レコードしかないのでしょうか? で、 > txt_test.Value には、抽出条件の月があって、 > 『txt_test1』『txt_test2』『txt_test3』 に上記テーブルより入れたいということ? |
▼イケガミ さん: >> 月 日 データ >> 8 1 123 >> 8 2 112233 >> 8 3 111222333 >は、必ず1日に1レコードしかないのでしょうか? はい。必ず1レコードです。 >で、 >> txt_test.Value >には、抽出条件の月があって、 >> 『txt_test1』『txt_test2』『txt_test3』 >に上記テーブルより入れたいということ? その通りです。 |
> その通りです。 でしたら、↓の方法でできませんでしたか? イケガミ - 02/9/3(火) 15:41 - > テキストボックスの参照に変数を使う場合は、 > Me.Controls("txt_test" & a) = rs!データ > のようにします。 こうちゃん - 02/9/3(火) 15:51 - > Me.Controles("txt_test" & a).value = rs!データ > 'txt_testとtxt_tは、どっちがほんと?実際のもので試験してみてね。 #同じ内容ですけど。。 |
> OpenRecordset をループの中でするのはあんまり効率的じゃないと思いますので、 別の方法です。(確認してませんので間違っているかも。。) --------------------------------------------------------------------- Set db = Currentdb Set rs = db.OpenRecordset("データ管理",dbOpenDynaset) For a = 1 To 3 rs.FindFirst "[月]='" & Me!txt_test & "' And 日='" & a & "'" If rs.Nomatch Then Msgbox "ノーデータ:" & a & "日分" Exit For Else Me.Controls("txt_test" & a) = rs!データ End If Next a Set rs = Nothing Set db = Nothing --------------------------------------------------------------------- |
豆太さん、イケガミ さん、こんばんは わかっているとは思いますが、SQL文も修正する必要があります。 念のためSQL文も書いときましょ(^^) >--------------------------------------------------------------------- strSQL = "select データ, 月, 日 from データ管理 where 月 = '" & _ txt_test.Value &"' " >Set db = Currentdb >Set rs = db.OpenRecordset("データ管理",dbOpenDynaset) > >For a = 1 To 3 > rs.FindFirst "[月]='" & Me!txt_test & "' And 日='" & a & "'" > If rs.Nomatch Then > Msgbox "ノーデータ:" & a & "日分" > Exit For > Else > Me.Controls("txt_test" & a) = rs!データ > End If >Next a > >Set rs = Nothing >Set db = Nothing >--------------------------------------------------------------------- 'もし毎日のデータがあることが確実なら、こんなループでもいいかも・・ '日フィールドが主キーに含まれていないと順番は不定になるので ORDER BY 句追加 strSQL = "select データ from データ管理 where 月 = '" & txt_test.Value & "' " strSQL = strSQL & " order by 日;" Set db = CurrentDb Set rs = db.OpenRecordset("データ管理", dbOpenDynaset) a = 1 Do Until (rs.EOF And a > 3) Me.Controls("txt_test" & a).Value = rs!データ a = a + 1 rs.MoveNext Loop Set rs = Nothing Set db = Nothing End Sub #同様に試験はしておりません。^^; |
To こうちゃん さん こんばんは。 >わかっているとは思いますが、SQL文も修正する必要があります。 >念のためSQL文も書いときましょ(^^) 直接テーブルを開いてますけど。。 >strSQL = "select データ, 月, 日 from データ管理 where 月 = '" & _ >txt_test.Value &"' " >>Set db = Currentdb >>Set rs = db.OpenRecordset("データ管理",dbOpenDynaset) でも、Order By を指定したSQLを使った方がいいかな?? |
イケガミ さん こうちゃん さん おはようございます。 いろいろな修正、やり方を教えていただきながら お礼が遅れてすいませんでした。 少々、ネットの調子が思わしくなくて・・・。 まだ、試していないんですが先にお礼だけで失礼します。。 |
To イケガミ さん こんにちは >直接テーブルを開いてますけど。。 はい、存じておりますが、テーブルには「経常的に使うとすれば他の月データも含まれている」という前提で考えたので、データを絞ったほうが処理的に早いのかな?と感じたものですから・・ #クライアント/サーバ形式で使うことが多いので、クエリは必要最小限のレコードを返すように考える癖がついてます^^; >でも、Order By を指定したSQLを使った方がいいかな?? まあ、「念のため」ってことで・・^^; |
To こうちゃん さん >>直接テーブルを開いてますけど。。 >はい、存じておりますが、テーブルには「経常的に使うとすれば他の月データも含まれている」という前提で考えたので、データを絞ったほうが処理的に早いのかな?と感じたものですから・・ > >--------------------------------------------------------------------- > > strSQL = "select データ, 月, 日 from データ管理 where 月 = '" & _ > txt_test.Value &"' " > > >Set db = Currentdb > >Set rs = db.OpenRecordset("データ管理",dbOpenDynaset) Set rs = db.OpenRecordset(strSQL,dbOpenDynaset) こちらも修正しないとダメですね。 #SQLで絞って検索するなら。。 |
イケガミ さん、こんにちは >>Set rs = db.OpenRecordset("データ管理",dbOpenDynaset) >Set rs = db.OpenRecordset(strSQL,dbOpenDynaset) > >こちらも修正しないとダメですね。 >#SQLで絞って検索するなら。。 そですね、忘れてました、ごめんなさい(^^;) |
豆太 さん、こんにちは >Private Sub cmd_ok_Click() > > For a = 1 To 3 > strSQL = "select データ from データ管理 where 月 = '" & txt_test.Value & "' And 日 = '" & a & "';" > > Set db = CurrentDb > Set rs = db.OpenRecordset(strSQL, dbOpenDynaset) > > If rs.EOF Then > MsgBox "ノ〜デ〜タ" > Else > Do Until rs.EOF > txt_t & a & .value = rs!データ(ここです!!) Me.Controles("txt_test" & a).value = rs!データ 'txt_testとtxt_tは、どっちがほんと?実際のもので試験してみてね。 > rs.MoveNext > Loop > End If > > Set db = Nothing > Set rs = Nothing > > Next a > >End Sub |