• 締切済み

フォーム上にDBの内容を一覧表示したい。

はじめまして。宜しくお願いします。 現在Access2002、SQLサーバーをつかってタイトルのことを実現しようと思っています。 現在やっていることは、SQLサーバーのあるテーブルから、条件に合うものだけを取り出して、ワークテーブルに一時格納します。 そしてそのワークテーブルに連結しているフォームを、表示したいフォームの上にサブフォームとして表示しています。 つまり一覧表示をADOではなくDAOを使ってやっています。 (ADOでSQL文をつかってループをまわしながら表示する方法が分からなかったため。。) しかし、DAOを使うと検索するDBのが大きいとレスポンスが下がることや、表示するカラムが変わるごとに対応するワークテーブルを作成しなければならないと思い、やはりADOを使おうと思っています。 VBScriptをつかってWEB上に表示するときなどは、レコードセットから一件ずつ 読み出して、ループをまわしながら表示していけばよいのですが、 VBでのそのような方法が見つからず、行き詰っております。 そもそも、VBではそのようなことはできるのでしょうか? 初心者の質問で申し訳ございませんが、お気づきの方が居られましたら ご教授ください。

みんなの回答

回答No.2

私も昔から使っていて、楽なのでDAOを使っていますが、少し勉強してみました。 こちらも、VBでのサンプルです。参考になるでしょうか? Dim Cn As New ADODB.Connection Dim Cm As New ADODB.Command Dim Rs As New ADODB.Recordset Dim SQL As String Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[データベース名" SQL = "SQL文;" With Cm .ActiveConnection = Cn .CommandType = adCmdText .CommandText = SQL End With Set Rs = Cm.Execute With Rs Do While .EOF = False List1.AddItem .Fields("[フィールド名]").Value .MoveNext Loop End With Rs.Close Cn.Close

  • sienna
  • ベストアンサー率35% (51/145)
回答No.1

VBAじゃなくてVBで良いのですよね。 下記にVB6でグリッド表示する方法が記載されています。 http://homepage2.nifty.com/inform/vbdb/adodc_sqlserver.htm VBAだったらすいません。

takatoo
質問者

補足

早速のレスありがとうございます。 VBAを使用しているのですが、siennaさんに教えていただいたサンプル、試してみます。ありがとうございます。

関連するQ&A

  • 現在Accessで開発をしています

    現在Accessで開発をしています ライブラリはADOを使用しております メインフォーム データ検索 帳票フォームに全データを出力 サブフォーム1  修正/削除  連結フォームにフィルタをかけて修正/削除を サブフォーム2  追加 非連結フォームで追加処理を データ件数が多いのと項目数が多いのでメインフォーム上では 修正/追加/削除はやらず サブフォーム(単票フォーム)を呼び出しそこでやる ことにしています 本当はサブフォーム1だけで修正/削除/追加をしたいのですが ADOだと非連結のフォームでは更新ができないとわかり 連結フォームで対応しました DAOでやろうかとも考えましたが、ADOとDAOの共存はメンテナンス等を踏まえ やめました。また、DAOは入りにくいのも理由です ちなみにSQLサーバーは将来使用しません あくまでAccess単体(MDB)のみの開発をすると想定して みなさんは、以下の3つどのパターンで開発をしていますか? 1、ADOのみ 2、DAOのみ 3、ADOとDAO両方 また、理由もお聞きしたいです よろしくお願いします

  • ワークテーブル(ローカル)からDBサーバーへの更新について

    Access2003+PostgreSQLにて販売管理システムを構築しています。 レコードを見る・更新する時はサーバーのレコードを ワークテーブル(ローカルのmdbファイル内のテーブル)にコピーし 値を変更後、ローカルからサーバーにデータを戻す、といった処理をしたいと考えています。 サーバーからレコードをコピーする際は、ODBC接続&ADOにて サーバーのレコードを一旦レコードセットに格納し 「CurrentProject.Connection.Execute SQL文」で ワークテーブルにINSERTしています。 ここで質問なのが、ワークテーブルからサーバーにレコードを戻す際は ワークテーブル・サーバーへはそれぞれどの方法で接続すればいいでしょうか。 例えばサーバーへODBC&ADOで接続した場合、ワークテーブルの取扱方法(接続方法)が分かりません。 サーバー:ADO、ワーク:DAO、みたいな事するのでしょうか。 スマートな方法がお分かりの方は教えて下さい。 宜しくお願い申し上げます。

  • vb.netでSQL serverの接続を行うコーディング

    vb.net (vb 2005)でSQL serverの接続を行うコーディングがよくわかりません。 ADO,もしくはDAOを使うところまでわかったのですが、具体的なコーディングがわかりませんでした。 VBの教本とかではSQL serverではなくAccesへの接続だったので、どうコーディングしてよいか混乱しています。 (ADOの場合とDAOの場合の違い)

  • フォームで1レコード削除したのに表示は残ったまま更新されない

    Accessフォーム(表形式)に[削除]ボタンをつけました。 VBAで削除ボタン_Click()を書きました。 ADO接続 SQL発行し、該当レコード削除 (Delete from 予約 where 予約ID= me.予約ID ) というコードです。 削除後も、フォームにはレコードが見えたままなのですが、表示を更新するにはどうしたら良いのでしょうか? ----------------------------------- Set rs = Me.Recordset.Clone '' 予約テーブルからレコード削除処理 ... Me.Requery ----------------------------------- というやり方は、DAOだそうですね。 ADOではフォームのレコードソースを指定できないと参考書にありました。 しかし、DAOでは Delete SQL 発行の仕方がわからないので、できればADOで実現したいのです。 無理でしょうか?

  • 異なるDBのSQL

    SQLを始めたばかりの初心者です。 oo4oやADOを使用して、オラクルサーバーのデータをSELECT文で オラクル内の複数のテーブルを結合してListViewで表示する プログラムを作成中です。 オラクルサーバーにメインデーターがあり 各クライアントにMDB形式でマスタデータがあります。 MDBのマスタデータにはたとえばですが、テーブル名 [商品テーブル] フィールド名[コードナンバー]、[商品名]... となっており、サーバーには、テーブル名[商品コード]  フィールド名[コードナンバー]、[受注日]....があるとします。 クライアントからoo4oやADOを使用して、サーバーのデータを SELECT文でオラクル内の複数のテーブルを結合して ListViewで表示するのはできます。しかし [コードナンバー]は取得できるのですが、サーバーのテーブルには、 [商品名]がないためとうぜん表示できません。 この場合、オラクルから取得したデータをマスタデータのあるMDBに新しくテーブルを 作りそこに一度格納して再度ADOで結合処理して 商品名を表示する方法しか考えつかないのですが、 ほかに良い方法はありますでしょうか? ADOで接続MDBに保存再度ADOで接続して表示では レスポンスが悪いかなと思いまして... *VB6 winXP-pro オラクル9i

  • AccessVBAでADOとDAOとDoCmd

    いつもお世話になっています。access超初心者です。 いろいろまちがっているかもしれませんが、よろしくお願いします。 フォームやクエリを使うのにDoCmd、検索はSQL文、 テーブルとの接続やデータの追加はDAOですが、 Access以外のデータベースの値も必要なのでADOも使用して・・・と考えています。 たとえば、データがあるかを確認するにはフォームを開き、そこのテキストボックスに探すデータを入力、ボタンをクリックすると DoCmdで表示用フォームを用意、SQL文で検索、DAOで検索結果を表示・・・としていますが、このように一つのデータベースを作成するのに、DoCmdやDAOやADOの使用が入り乱れてもよいのでしょうか? まったく知識がなく学習本を頼りにしていますので、ツギハギだらけになってしまっているのでは?と不安です。 アドバイスのほど、よろしくおねがいいたします。

  • ACCESSフォームに編集用のテーブルを表示したい

    Accessフォームにあるテーブルより(SQLを使用して)抽出した結果を表示するリストボックスがあります。 それを『プレビュー用』として、 同じフォーム内に『編集用』のリストボックスのようなものを作成して 左右比較できる形で内容の編集ができるようにしたいです。 ※変更前と変更後のようなイメージです。 現在、プレビュー用のリストボックスは完成しているのですが その隣に同じ内容を表示した編集用テーブルのようなものを 作成しようとサブフォームを作成しましたが サブフォームのプロパティにはSQLをセットできるRECORDSETのようなものがみつかりません。 リストボックスにRECORDSETできるようにしてしまうと 今度は直接編集ができないです。 低レベルな質問で申し訳ありませんが よい方法がありましたらご教授願います。

  • Accessのサブフォームつきフォームを使い回しをしたい

    Accessでサブフォームを使っていくつかの表を表示させたいと思っています。 それで表示させたい表はテーブルは違いますがフィールドは似たようなものなので、 1つのフォーム(とサブフォーム)ですべての表を表示させたいと思っています。 つまり前の画面でどのボタンをクリックしたかによってフォームのRecordSource(SQL文)を変更したいのです。 それで色々やってみたのですがどうもうまくいきません。 1.まずどの部分でRecordSource(フォーム、サブフォーム両方とも)の設定をすればよいのかよくわからない。 2.色々試行錯誤して設定して表が表示されるようになったが、なぜかデータが1件もない時にサブフォームが表示されない(サブフォームに表のタイトルが書いてありますがそれが表示されない)。 3.それも試行錯誤してうまく表示させることができるようになったが、そこでも問題がありました、1つの表のデータだけそこで編集できるようにしたいのですがなぜか編集できません(SQL文でRecordSourceを設定していますがそのSQL文はクエリで書くと編集できます)。 もしかしたら根本的に間違っているかもしれませんので、プログラムやプロパティの設定をどのようにしたらよいか最初からご説明していただけますでしょうか?

  • 非連結のフォームからテーブルにデータを追加する

    アクセスにおいて フォームの非連結のテキストボックスから テーブルにデータを追加するには VBAのADOを学ぶしかないのでしょうか? ADOを使わなくても 追加クエリ等を使えば、対応できますか? よろしくお願い致します。

  • SQLServerのデータをアクセスで表示するには?

    カテ違いでしたらすいません。 エクセルからADOを使ってSQLサーバーにデータを移行できたのですが SQLサーバーのテーブルのデータを アクセスのクエリで表示するにはどうすればいいのでしょうか? 参考になるサイトなどがあれば教えてください。 よろしくお願いします。