- 締切済み
- すぐに回答を!
テーブル内のレコードを別のテーブルに移す良い方法を教えてください
SQLサーバー7.0(ADO)とAccess97のVBAでアプリケーションの開発を行っております。SQLサーバー7.0(サーバー側)にあるテーブルの中身(レコード全件)をAccess97(ローカル)にあるテーブル(テーブル名とその中のフィールド名は全く同じだが中身はからっぽ)にまとめて移しかえる良い方法があれば教えてください。いま私はフォームオープンイベントでフィールドとレコードをループでまわして移しかえているのですが、テーブル数も多いため記述も長くなりますし、何よりもパフォーマンスが良くありません。テーブル単位で中身を別のテーブルに移す方法などがあれば是非教えてください。 (例) SQLサーバー(ホスト側)---テーブル名「T_社員マスター」フィールド数100項目、レコード数500件 ↓ ↓ フォームオープン時にそのまま移しかえたい ↓ ↓ Access97(端末側)-------テーブル名「T_社員マスター」フィールド数100項目、レコード数0件 よろしくお願いします。
- seyatomo
- お礼率47% (20/42)
- その他(データベース)
- 回答数3
- ありがとう数4
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 回答No.3
- wow_hiro
- ベストアンサー率100% (1/1)
私も同じ環境で逆のパターンをしています。(SQLServer→Access)その際使うのがSQLServerにあるDTS(データ変換サービス)です。高速にデータを変換してくれる上、パッケージ化しておけば、再度使いまわしができ、重宝しています。SQLServer→Accessの変換もできると思いますの1回試してみられたらどうでしょうか。
- 回答No.2
- arata
- ベストアンサー率49% (139/279)
SQLサーバーを良く知らないので、はずしているかもしれませんが、SQLでインサートしてはだめなのでしょうか? 通常、下記のようなSQLで、テーブルから抜いたデータを他のテーブルに追加することができます。 INSERT INTO 追加先のテーブル名 ( カラム名1,カラム名2,....) SELECT カラム名1,カラム名2,... FROM 追加元のテーブル名 WHERE 抜き出し条件 ACCESSで言うと追加クエリーですね。
- 回答No.1
- mnabe
- ベストアンサー率33% (427/1283)
残念ながらその方法しかありません。 バッチ方式でよければ、いくらか方法はあるのですが...ね。 そもそもなんで、SQLのデータをAccessにコピーするのか解りません。アタッチでは、パフォーマンスが悪いから駄目なのでしょうか? バッチなら、SQLで常に決まった場所にCSV形式でデータを書出して、Access君はこのCSVを読込む用にすればいくらかは早くなります(多分)。
関連するQ&A
- あるテーブルをそっくり別のテーブルに追加
あるテーブルのレコードをそっくり別のテーブルに追加するSQLを教えていただけないでしょうか。 #フィールド名等はまったく同じです。 windows2000 access2000 です。
- ベストアンサー
- その他(データベース)
- フィルタ後のテーブルのレコード数を取得したい
アクセスvbaです。 フィルタ後のテーブルのレコード数を取得したいのですが Debug.Print DCount("[フィールド1]", "テーブル1") だと、フィルタ前の数が取得されてしまいます。 フォーム1にテーブル1を紐付けて、 更にフィルタをしているのですが、 元のテーブル1のレコード数が10として、 フィルタ後が3なら、3を取得するVBAコードを教えてください。
- ベストアンサー
- オフィス系ソフト
- ACCESSの既存テーブルに、EXCELデータをレコードとして追加する事は可能ですか?
ACCESSの既存テーブルに、EXCELのデータをレコードとして追加する方法はありますか? 又は方法を説明しているサイト等ありましたら教えて下さい。 EXCELのデータは、シートの1行目に各項目名、2行目以降に各データが順次入力されている状態です。 尚、EXCELの項目名と、ACCESSのフィールド名は一致していない状態です。 例えば、 EXCELの項目名:「予約ID」、「予約名」、「予約日」 ACCESSのフィールド名:「rsv_id」、「rsv_name」、「rsv_date」 のような感じです。 ACCESSのフィールド「rsv_id」には、EXCELの「予約ID」項目のデータを入れなければいけません。 こういうことは出来るのでしょうか? ※マクロは使わないようにしたいです。 いったんACCESS上で、EXCELのデータを元に新規テーブルを作成してから、 その新規テーブルからデータを抽出して、既存テーブルにレコード追加するような、SQLを書けばできるでしょうか?
- ベストアンサー
- オフィス系ソフト
- ACCESS テーブルのレコードを全て移動
ACCESS VBA を使って処理を行っております。 原因が分からず困っております。 結果テーブル フィールド名 monoID,monona,inkosuu,outkosuu,nowkosuu 取込テーブル フィールド名 物ID,物名,現在個数 今までフォームに表示させて一件づつ手入力にて処理しておりましたが、複数人で作業できるように修正している所です。 ○各々がExcelに収集したデータをCSVにて「取込テーブル」にインポート ↓ ○「取込テーブル」のレコードを集約しデータ整合(ここまでは出来ています) ↓ ○「取込テーブル」の全レコードを「結果テーブル」にインポート DIM SQL001 AS String SQL001 = "INSERT INTO 結果テーブル (monoID,monona,nowkosuu) SELECT (取込テーブル.物ID,取込テーブル.物名,取込テーブル.現在個数) FROM 取込テーブル CurrentDb.Execute SQL001 これで動作させるとエラーになります。 ただ、実験で SQL001 = "INSERT INTO 結果テーブル (monoID) SELECT (取込テーブル.物ID) FROM 取込テーブル の様に一つのフィールドだけにすると全てのレコードをインポートすることが出来ます。 何か凡ミスの様な気もするのですが、取込テーブルをレコードセットとし1件ずつインポートする方法しか無いのでしょうか?
- ベストアンサー
- その他(データベース)
- テーブルの名前のつけかた。
アクセス初心者です。 テーブルの各フィールドに名前をつけますよね? そのときに、T_ 顧客テーブル⇒顧客マスターとか、 T_ 商品テーブル⇒商品マスターとかがいろんな解説書に載っているのですが、T_ とはテーブルだから、Tがきてるのですか?何か意味があって、T_ が項目の前にきているのでしょうか?よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- テーブルに新しいレコードを追加する方法について
ACCESS2007を使っています。 フィールドに以下のような項目があるテーブルAがあります。 日付 | 名称 | 項目 | MIN(数値) | MAX(数値) | チェック(Yes/No) また、以下のような項目があるテーブルBがあります。 日付 | 名称 | 項目 | ナンバー(数値) このテーブルAに以下のようなデータが入っているとして 1/1 | あああ | いいい | 10 | 100 | No 1/1 | あああ | ううう | 1 | 20 | Yes テーブルBに以下のようにレコードを追加したいのです。 1/1 | あああ | いいい | 10 1/1 | あああ | いいい | 11 ・ ・ ・ 1/1 | あああ | いいい | 100 1/1 | あああ | ううう | 1 1/1 | あああ | ううう | 2 ・ ・ ・ 1/1 | あああ | ううう | 20 1/1 | あああ | ううう | blank 最終的には、テーブルBをソースとしてラベル印刷したいと思っています。 レコードセットとFor~Nextなどを使えばできそうな気がするのですが、???です。 どなたかご指南いただけませんでしょうか?
- ベストアンサー
- オフィス系ソフト
- フォームのレコードソース(Access2000)
質問させていただきます。 フォームの「レコードソース」でテーブルとクエリーのほかに、「SELECT テーブル名、フィールド名・・・」というのがあります。これもクエリーなのでしょうか? ちなみに、レコードソースの右にある「---」をクリックすると「SQLステートメント:クエリビルダ」というものが開きます(クエリー画面と同じ?)。 また、フォームのレコードソースはテーブル、クエリー、SOLステートメントのどれにすれば良いのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 3つのテーブルの結合
access2000にて作業しています。 下記のようなテーブルが3つあります。 [納品T] 年月日|顧客番号|品名|数量 [品名マスタ] 顧客番号|品名 [顧客マスタ] ID|顧客名 納品クエリを作り デザイン画面で [納品T]品名と[品名マスタ]品名を結び [納品T]顧客番号[顧客マスタ]IDを結んで クエリを表示すると、[納品T]のレコードより少なくなってしまします。 その原因は、別の顧客で品名が同一なものがあることが原因と思うのですが、[納品T]と納品クエリのレコード数を一致させるには、SQLはどのように書けばいいのでしょうか。
- ベストアンサー
- その他(データベース)
- フォームのレコードソースの設定の仕方
フォームを以下の手順で作成し、 1. 4つぐらいのテーブル間でリレーションを設定 2. その中の1つのテーブルから、フォームの自動作成 3. 出来たフォームのレコードソースの「・・・」ボタンをクリックして、1で設定した3つのテーブルを追加し、必要な項目を追加して、その設定内容を保存 →最初のテーブルは「テーブル名.*」として一覧に追加、その他のテーブルは、必要な項目だけを追加 4. デザインモードで、フォームの項目を追加してフォームを作成 再度、フォームのレコードソースを開くと、中身が消えてしまい、何もありません。 そして、エラーがおき、「「*」を有効なフィールド名、式として認識出来ません」というようなエラーになり、表示できません。 複数のテーブルを連結してレコードソースにスル場合、このようなエラーが起きるのでしょうか。また、解決方法なども教えていただけると助かります。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- ACCESS2000であるレコードまで進んだら別フォームに
ACCESS2000を使って簡単占いソフトを作りました。 あるテーブル(質問集)から単票フォームを作成しました。次のレコード(質問)へはマクロボタンを割付し進むようになっています。 この場合最終レコード(最後の質問)でそのマクロボタンを押すと、別のフォーム(別の質問集)に切り替えるにはどう記述したらよいでしょうか? レコードの数は変わることはありません。 ACCESSは初歩的なことはわかり自分で作成もしますが、モジュールは全くわかりません。基本的なSQLの知識はありますが実践したことはありません。 わかりづらい点があれば、補足質問をお願いします。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト