• 締切済み

Accessアップサイジング後の入力一時テーブル

MDBよりADPにアップサイジング中。access2007+sqlserver2005にて構築中です。 MDBのときはserver側にテープルすべて移動させリンクにて運用し始めたが、Dataテーブルを直接参照させ開かせると他の処理に影響があるので、入力一時ファイルを作成しておき入力フォームで入力後入力完了ボタンで、更新、追加、削除させDataテーブルに書き込ませていました。 この時server側にこの一時入力テーブルを作ると、レコードが混ざってしまうのでクライアントのMDB 上にこのテープルだけ持たしていました。 ADPにするとこの手法はとれないので(ADPにはテーブル、クエリ等持てない)どのようにすればいいのでしょうか。 くぐったりすると、ローカル一時ファイルを作るようにあるのですが具体的には理解できません。 その入力フォームが出てくるのは、親子リンクで子側のテータテープルとして使用しています(発注フォームの商品明細部分) よろしくお願いします。

みんなの回答

  • KHSSSK
  • ベストアンサー率76% (13/17)
回答No.1

3年前Access2003からSQL2005へアップサイジングしました。 始めた当初は何も解らず苦労しましたが、何とか順調に稼動しています。 SQLの場合は排他制御がしっかりしているため同じテーブルに多数の クライアントから同時アクセスしても不具合は発生しないことになっている と思いますので、一時テーブルなど無しでテストしてはいかがですか。 テーブルを直接フォームのレコードソースにしないで、ビューを介した方 が良いでしょう。 SQLの一時テーブルは例えばストアドで CREATE TABLE ##TableA( ID int PRIMARY KEY NOT NULL,・・・・・ ); のように項目名とデータ型をカンマで区切りながら指定していけば出来ます。 ただ、慣れないと使い難いです。 そこで、通常のテーブルを用意しておき、項目の中にアクセスしてきた PCのホスト名を記録しておきます。 どのPCからアクセスがあったかを知るには HOST_NAME() という関数が 有ります。 使いかたは、例えば INSERT INTO 作業テーブル(項目1, ホスト名, 項目2,・・・・・) SELECT 項目1, HOST_NAME(), 項目2,・・・・・ FROM ・・・ のように一時ファイルを作成し、フォームのレコードソースは SELECT * FROM 作業テーブル WHERE ホスト名 = HOST_NAME() のようにします。 本テーブルへ書き込んだら、一時ファイルを削除しておきます。 DELETE FROM 作業テーブル WHERE ホスト名 = HOST_NAME()

plala2010
質問者

お礼

ご回答ありがとうございます >SQLの場合は排他制御がしっかりしているため同じテーブルに多数の >クライアントから同時アクセスしても不具合は発生しないことになっている この部分に関しては、同時アクセスで不具合は生じないようですが(実験済み)ただ、同じファイルに書いているので更新・追加・削除も最初に実行したところでおこなわれてしまい、入力途中の人に影響が出てしまいました。一連がたまたま同時でなかったらOKですが。 したがって、後半部分でご提案あった入力者を特定するものでWhere条件にして、更新・追加・削除処理する方法がよさそうですね。現在はログインにSaのパスワードを入力者全員に教えておいてログインしてもらっているのですが、今回の完全移行からUserIDとパスワードにてログインさせる予定ですがSQLSERVER側の制御がまだ勉強不足なものでクライアント(ACCESS ADP)にパスワード認識を組み込もうとしています。そこから得られるUserIDを利用できそうですね。 TRYしてみますのでまた報告します。そのとき又ご教示いただけると幸いです。

関連するQ&A

  • データ入力用フォームでコントロールが表示されない

    はじめまして、 現在、ACCESS2000のMDBからADP+SQLへの移行をしているのですが。 「t_受注」テーブルをデータソースとするフォームを 「データ入力用プロパティ」を「はい」にして、 データ入力用のフォームとして使っていました。 ADPへアップサイジングしたら コントロールがまったく表示されずに困っています。 「データ入力用プロパティ」を「いいえ」にすると、 全てのコントロールと「t_受注」テーブルのデータが見えます。 どうか宜しくお願いします。

  • リンクテーブルで繋げているテーブルがいきなり入力・変更ができなくなった!

    ○○.mdbと○○_be.mdbのファイルがあり、○○_be.mdbはテーブルのみで、 ○○.mdbには○○_be.mdbのテーブルのコピー(リンクテーブル)があります。 なぜか今リンクテーブルで繋げている○○.mdbファイルのテーブルが 入力できなってしまいました。 このAccessファイル(○○.mdb)で作成したテーブルは変更可能です。 リンクテーブルのみ、 値の変更も新規レコードの追加もできなくなったのですが なぜでしょうか!!?? Accessを一度落として、 ファイルを開く→「開く」で再起動しても変わりません。 リンクテーブルのもとは(○○_be.mdb)変更可能です。 しかしフォームなどは○○.mdbファイルにある為、 ○○.mdbのリンクテーブルでのデータを変更したいのですができません! 何かわかる方よろしくお願い致します!!!!! (オフィス2003です)

  • Accessのアップサイジングウィザード

    Accessのアップサイジングウィザードを使用し、SQLServerへ テーブルとデータを移行しようと考えています。 Access2000、SQL Server 2005 Express Editionを使用して います。 アップサイジングウィザードで「既存のデータベースを使用する」 を選択すると移行できるのですが、「新しいデータベースを作成 する」を選択すると、移行できません。レポートに「Table was skipped or export failed」と表示されます。 (ログインユーザはcreate table権限があります。) アップサイジングウィザードの手順書には、、「新しいデータベース を作成する」を選択すると書いてあるので、うまくいかない理由を 知りたいと思います。 宜しくお願い致します。

  • accessからsqlserverにアップサイジングしましたが,テーブ

    accessからsqlserverにアップサイジングしましたが,テーブルにデータを入力出来なくなってしまいました。 Dim rs As DAO.Recordset Dim db As DAO.Database Set db = CurrentDb() Set rs = db.OpenRecordset("確認用", dbOpenDynaset) rs.AddNew rs!品番 = Me.品番 rs.Update 上記のようにDAOを介してテーブルにデータを入れていました。 アップサイジングする前は、問題なかったのですが、どういったことが原因になりますでしょうか?

  • Access2003 リンクテーブルをフォームでデザインビュー表示したい

    kamuycikapです。 フォームやクエリを作成している「FQ.mdb」とデータが保存されている「DT.mdb」を分けている為、FQ.mdbではテーブルをリンクしてデータを入力したりクエリ利用したりしています。 DT.mdbに作成しているテーブルはリレーションシップされており、デザインビューで開くと「+」マークが表示されていて、紐付けられているデータを開くことが出来、非常に便利です。 メインとなるテーブルをデザインビューで開くことで、連鎖するテーブルのデータまで入力する事が出来ます。 これを、FQ.mdb側のフォームに表示したいのですが「+」マークが表示されていません。 FQ.mdbのマクロで DoCmd.OpenForm stDocName, acFormDS, , stLinkCriteria として、acFormDSで開くように記述しているのですが・・・・ リンクしている側のテーブルを開いても、「+」マークつきのビューで開くことが出来ないのでしょうか? ユーザーさんから 「入力フォームでの入力もいいんだけれど・・・・デザインビューでの入力も捨てがたいからフォームに表示できるようにしてよ」 的な要望があったのです。 識者の方、ご教示願います。

  • Accessのセキュリティ対策

    現在Accessで業務用のアプリケーションを開発しています。 一応サーバがある環境なのですが、Accessで作成したmdbは サーバの誰でもアクセスできるフォルダに置き、みんなが利用 できるようになっています。 しかし、これでは悪意のある者がmdbのあるフォルダにアクセスし mdbをそのままコピーして持っていってしまうことができます。 又、削除してしまうこともできます。 そこで、mdbのテーブル部分をMSDEを利用して、アップサイジングし 各クライアントにはadpファイルを設置しようかと思っています。 これであれば、データはサーバのSQLサーバ(MSDE)の中なので 心配ないと思っていますが、どうでしょうか。 それほど知識のない者でも、データを取り出せたり するのでしょうか。 宜しくお願いします。

  • ACCESSリンクテーブルでデータを入力しても表示されない。

    ACCESSリンクテーブルでデータを入力しても表示されない。 MS ASSECC2003を使っています、 ORG_data.mdbに元データがあります USER.mdbからリンクテーブルで上記ORG_data.mdb のテーブルを参照しています。 USER.mdbを開いてORG_data.mdbのテーブルに新規データを追加しても USER.mdbをいったん閉じて再度開かないと追加されたデータが見えません 元データのORG_data.mdbのテーブルにはデータが追加されいますが、 リンクテーブルの設定とかあるのでしょうか? USER.mdbで追加したデータがすぐに更新されて見れる方法はありませんか? どなたかお知恵を拝借させてください。 リンクテーブルで参照

  • アップサイジングしたクエリのSQLにPHPからアクセスできる?

    ACCESSで作成したファイルAをアップサイジングし、 MS SQLServerに登録されているテーブル・クエリがあります。 このクエリに対してPHPからIEに表示させることは可能でしょうか? たぶんクエリに書かれているsqlを読みに行くことになると思うんですが そういうことってできるんですか?

    • 締切済み
    • PHP
  • ACCESS2003フォーム入力

    ACCESS32003のフォームウィザードで作成した単票形式フォームで、データを表示することはできるのですが、データを変更(入力)することができません。 XP(SP3)でSqlserver2005のテーブルをODBC接続している環境です。 テーブルリンクは問題ありません。 フォームプロパティのデータ入力用を『はい』にしましたができませんでした。 入力可能にする方法を教えてください。宜しくお願いします。

  • Accessでの理想の運用形態

    はじめまして、Accessで業務用アプリケーションを作成しています 独学なので、何が正しいというものを分からず、 主にインターネットの情報を元に作成しています そこで、まずテーブルとそれ以外(クエリ、フォーム、レポートなど)を分割し、テーブルだけのmdbはファイルサーバー上に置いています 利用者のパソコンのデスクトップに、それ以外のmdbを置いています 接続はテーブルのリンクのみです ですので、利用者のmdbを開くと同時に、ファイルサーバー上の mdbも開き、ldb(ロックファイル)も生成されます これをファイルサーバー上のmdbを開かずに、テーブルのデータを 取得することは可能でしょうか DAOとかADOでVBAを使わなければならないのでしょうか アドバイスよろしくお願いします ちなみに、SQLServer2005ExpressEdtionをどこかのパソコンに インストールし、データベース環境を一新しようと思ったのですが どうすればいいのかがイマイチ分かっていません ヒントでもいいので、教えていただけないでしょうか