プロが教える店舗&オフィスのセキュリティ対策術

***************************************************
Private Sub Form_Load()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection
mySQL = "select * from テーブル"
rs.Open mySQL, cn, adOpenForwardOnly, adLockOptimistic

’コントロールに代入
Me.No = rs![No]
Me.項目 = rs![項目]
・・・

End Sub
***************************************************

こんな感じで、クエリでなくSQLで
フォームにテーブルの全レコードを表示させたい場合、
どのようにすればよいのでしょうか?
上の文には、何が不足しているのでしょうか?

http://www.accessclub.jp/ado/09.html
を見ましたが、解決できませんでした。

A 回答 (2件)

Private Sub Form_Load()


mySQL = "select * from テーブル"
Me.RecordSource = mySQL
End Sub

とかの方が良いと思いますよ。

それと、折角なら Access Club さんで質問されたほうが良かったのにと思います。
お待ち申しております。。。
※その時は、こっちは閉じてね!

この回答への補足

あぁ、すいません!
お礼した後なんですが、もう一度ご回答願います!

前提を書き忘れていました!

テキストボックスは非連結なんです。
非連結にしたいんです。
なので、テキストボックスに代入したんです。

よろしくお願いします!

補足日時:2007/05/01 01:23
    • good
    • 0
この回答へのお礼

ありがとうございます。
>Me.RecordSource = mySQL
レコードソースのことをすっかり忘れてました。

>折角なら Access Club さんで質問されたほうが
Access Club で質問できる事をすっかり忘れてました。

お礼日時:2007/05/01 00:41

ええと・・たとえばレコードが一つだけなら何も問題は無いですよね?


まず単票フォームの場合だったとしましょう。
当然1レコードしか表示できないわけですので
私だったらこんな風に考えます(あくまでも一例です)

アクティブX コントロールのスピンボタンコントロールを配置します
で、そのコントロールの値の増減によって、Rs.MoveNextやPreviousしてから
それぞれの値の代入を行えば出来るかと思います。
スピンボタンコントロールは、OldValue の値を持っていてくれないので
Public 変数にでもいったん退避させて置くしかないかも

Dim SpnVal as Long

フォームのオープン時にSpnVal = 0
レコードセットを adOpenDynamic で開いておく

スピンコントロール(仮名 Spn)の更新時処理に
Private Sub spn_Updated(Code As Integer)
if SpnVal > Me!SpnVal Then
Rs.MovePrevious
それぞれのコントロールに代入処理
Else
Rs.MoveNext
それぞれのコントロールに代入処理
End if
spnVal = Me!spn
End Sub

大雑把に言ってこんな風かと思いますが
フォームが帳票タイプだと実用的なのは不可能だと思います。
レコード数分のコントロールを予め作っておくのは愚かですし
連結コントロールのような分けにはいきません。

何故、非連結にしたいのか分かりませんが、ユーザーのご修正を排除したいのなら
フォームのプロパティで、更新・削除・追加 の許可を「いいえ」にしておくとか
レコードセットをスナップショットにしておけば済むかとおもいますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!