ACCESS SQLで複数データ表示させるには?

このQ&Aのポイント
  • ACCESS SQLを使用して、フォームにテーブルの全レコードを表示させる方法を教えてください。
  • 上のコードでは、テーブルの全レコードを表示させるために必要な部分が欠けています。
  • この問題を解決するために、以下のリンクを参照しましたが、解決できませんでした。
回答を見る
  • ベストアンサー

ACCESS SQLで複数データ表示させるには?

*************************************************** 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 を見ましたが、解決できませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

ええと・・たとえばレコードが一つだけなら何も問題は無いですよね? まず単票フォームの場合だったとしましょう。 当然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 大雑把に言ってこんな風かと思いますが フォームが帳票タイプだと実用的なのは不可能だと思います。 レコード数分のコントロールを予め作っておくのは愚かですし 連結コントロールのような分けにはいきません。 何故、非連結にしたいのか分かりませんが、ユーザーのご修正を排除したいのなら フォームのプロパティで、更新・削除・追加 の許可を「いいえ」にしておくとか レコードセットをスナップショットにしておけば済むかとおもいますよ。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

Private Sub Form_Load() mySQL = "select * from テーブル" Me.RecordSource = mySQL End Sub とかの方が良いと思いますよ。 それと、折角なら Access Club さんで質問されたほうが良かったのにと思います。 お待ち申しております。。。 ※その時は、こっちは閉じてね!

PearlJam69
質問者

お礼

ありがとうございます。 >Me.RecordSource = mySQL レコードソースのことをすっかり忘れてました。 >折角なら Access Club さんで質問されたほうが Access Club で質問できる事をすっかり忘れてました。

PearlJam69
質問者

補足

あぁ、すいません! お礼した後なんですが、もう一度ご回答願います! 前提を書き忘れていました! テキストボックスは非連結なんです。 非連結にしたいんです。 なので、テキストボックスに代入したんです。 よろしくお願いします!

関連するQ&A

  • ADOでエクセルからSQL Serverへデータを移行するには

    エクセルvbaのADOを使って、 SQL Serverの「test」という名のデータベースの「Table_1」に 新規レコードを追加する事はできますか? エクセルからアクセスには Sub test() Dim データベース名 As String Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & データベース名 rs.Open "Tテーブル1", cn, adOpenKeyset, adLockOptimistic rs.AddNew rs.Fields("フィールド1") = データ rs.Update rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub で移行しています。 これをエクセルからSQL Serverへ移行させるにはどうすればいいのでしょうか? よろしくお願いします。

  • DataGridに表示されない

    VB6でMySQL4.1に接続して MySQL内にあるデータベース"sample"の テーブル"総合"をDataGridに表示したいのですが できません。 エラーメッセージは "実行時エラー '7004': 行セットにはブックマークを設定できません" とでます。 どうしたら表示されるのでしょうか? Private Sub form_load() Dim cn As ADODB.Connection 'オブジェクト Dim rs As ADODB.Recordset 'データベースに接続 Set cn = New ADODB.Connection 'データベース:Sheet1 cn.ConnectionString = "Provider=MSDASQL.1;" _ & "Data Source=sample" cn.Open 'レコードセットの取得 Set rs = New ADODB.Recordset rs.ActiveConnection = cn rs.Source = "総合" rs.CursorType = adOpenStatic rs.LockType = adLockOptimistic rs.Open Set DataGrid1.DataSource = rs End Sub

  • ADO 「Set」は使ったほうがいいのでしょうか?

    Sub test1() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordse End Sub Sub test2() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset End Sub この二つは同じ意味ですか? 「Set」は使ったほうがいいのでしょうか? よろしくお願いします。

  • Accessでの検索結果表示

    Accessでの検索画面を作っているのですが *検索項目* ・顧客ID ・電話番号 ・氏名(前方一致で検索したい) *顧客テーブル* ・顧客ID ・電話番号 ・氏名 ・氏名カナ ・住所 3つを複合的な検索項目として、検索ボタンを押下した際に フォーム上のテキストボックスに顧客テーブルから 検索した住所を表示させたいと思っています。 現在、顧客コードだけを 検索項目として以下のようなコードを記述しているのですが これでさえもうまくいきません。 *************************** Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strRet As String Set cn = CurrentProject.Connection rs.Open "顧客テーブル", cn, adOpenKeyset, adLockOptimistic strRet = "顧客ID='" & Me!CustmID & "' " rs.Find strRet If Not rs.EOF Then Me.Address = rs!住所 Else: MsgBox "該当なし" End If rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub **************************** 現状、何が悪いのかそしてどのようにこのプログラムを 改良すれば本来やりたいことができるのか 教えていただけますでしょうか。よろしくお願いいたします。

  • ADOでRecordsetオブジェクトをレコードソースに設定したい

    Access2000を使っています。リンクテーブルを使わずに、ODBCで繋いだDBのテーブルをフォームのレコードソースにセットしたいのですが、可能でしょうか。 宜しくお願いします。 Private Sub FormNoKansu() Dim cn as New ADODB.Connection Dim rs as New ADODB.Recordset Dim strSql as String 'ODBCでサーバーに接続 cn.ConnectionString = "ODBCでMySQLに..." ... strSql = "SELECT * FROM ..." rs.Open strSql, cn 'ここに[rs]を入れられたらと思っています Me.Recordset = "" End Sub

  • アクセス VBAのエラー

    以下のコードをwindowsXPで問題なく使っていましたが、windows7で使ったところ 「保存できません」というエラーメッセージが出ます。ただ全く同じコードを(だと思うのですが)リストボックスのダブルクリックで実行すると作動します。参考に二つのコードを書いておきます。 何か原因に心当たりのある方よろしくお願いします。 (コマンドボタン) Private Sub コマンド選択_Click() Dim namecode As String namecode = リスト会員 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "MT_会員", cn, adOpenKeyset, adLockOptimistic rs.Find "会員IDkai = " & namecode rs!Selectedkai = True '-1 rs.Save Me!リスト会員.Requery リスト印刷会員.Requery rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub (ダブルクリック) Private Sub リスト会員_DblClick(Cancel As Integer) Dim namecode As String namecode = リスト会員 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "MT_会員", cn, adOpenKeyset, adLockOptimistic rs.Find "会員IDkai = " & namecode rs!Selectedkai = True '-1 rs.Save Me!リスト会員.Requery リスト印刷会員.Requery rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub

  • コンパイルすると「メソッドまたはデータメンバが見つかりません」

    Access2000です。 名前を「Me!txt名前」に入力して「cmd探す」をクリックすると「メソッドまたはデータメンバが見つかりません」 「rs.FilterOn = True」でデバッグが中止します。 どなたかアドバイスお願いします。 ------------------------------ Private Sub cmd探す_Click() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset   Dim strRet As String Set cn = CurrentProject.Connection rs.Open "Q_修正", cn, adOpenKeyset, adLockOptimistic strRet = "使用者氏名 Like'" & Me!txt名前 & "*'" rs.Filter = strRet rs.FilterOn = True ------------------------------

  • rs.MoveFirst

    アクセスvbaです。 Sub Sample() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim i As Long Set cn = CurrentProject.Connection rs.Open "Tテーブル", cn, adOpenKeyset, adLockOptimistic rs.MoveFirst '←これいらない? For i = 1 To rs.RecordCount rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub このようなコードの場合 rs.MoveFirst はあってもなくても変わらないですか?

  • 【VBA】アタッチとデタッチについての認識

    VBAを勉強中の者です。カテ違いならすいません。 ******************************************************* Sub test1() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Provider=SQLOLEDB;Data Source=localhost\SQLEXPRESS; " & _ "Initial Catalog=" & データベース名 & ";" & _ "Integrated Security=SSPI" rs.Open "テーブル1", cn, adOpenStatic, adLockOptimistic MsgBox rs.RecordCount rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub ******************************************************* このコードで アタッチは「Set cn = New ADODB.Connection」、 デタッチは「cn.Close: Set cn = Nothing」 になりますか? ご教授よろしくお願い致します。

  • access 初心者です。

    Private Sub 患者番号_AfterUpdate() Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Set Cn = CurrentProject.Connection Set Rs = New ADODB.Recordset Rs.Open "[tbl個人情報]", Cn, adOpenKeyset, adLockOptimistic Rs.Find "[患者番号] = " & Me![患者番号] If Rs.EOF Then MsgBox "レコードが見つかりません。ID=" & Me![患者番号] Else Me![性] = Rs![性] End If Rs.Close: Set Rs = Nothing Cn.Close: Set Cn = Nothing End Sub 上記の式を見よう見まねで作成したのですが、エラーが出てしまします。          Me![性] = Rs![性]  が見つかりません どのように解釈すれば良いのでしょうか? ちなみに、サブフォームに入れているテキストボックスの「[性]を 同じサブフォーム内の[患者番号]から検索がしたいです。 初歩的なことで申し訳ございません。よろしくお願いします。

専門家に質問してみよう