AccessがリンクしたMySQLと同期が取れない

このQ&Aのポイント
  • AccessからMySQLへの同期が取れない状況に困っています。サマリーテーブル作成後もリンクテーブルが途中までしかできていず、サマリーテーブルの完了を判定する方法を模索しています。
  • ダミーテーブルの利用や[Shift][F9]キーの送信など、いくつかの処理を試みましたが、期待通りの動作には至っていません。
  • どのようにすれば1のサマリーテーブルの作成が完了したタイミングで2の処理に引き継げるか、アドバイスをいただけると幸いです。
回答を見る
  • ベストアンサー

AccessがリンクしたMySQLと同期が取れない

いつも楽しく勉強させていただいております。 環境はWin7、Access2007、MySQL5.5です。 フランチャイズのお店の売上集計をしています。 以下の処理を行いたいのです。 1.AccessからSQLコマンドを書いたファイルをバッチで起動し、MySQLでサマリーテーブルを作成します。 2.Accessはできたサマリーテーブル(ODBCリンク)をお店ごとに分割してExcel形式でエクスポートする。 困っているのは1が終了したところで2を実行したいのですが、どうも同期がとれないことです。2が動き始めた段階ではサマリーテーブルは途中までしかできていない状態でしか読めません。これはバッチで起動した場合は仕方ないかと思います。 そこで1が終了したということを判定するため、ダミーのテーブルを作成しました。サマリーテーブルを作る前にダミーのテーブルレコードを削除し、サマリーテーブルの作成が終わった時点でダミーのテーブルにレコードを追加するというロジックを追加してみました。ダミーテーブルにレコードがあればサマリーテーブルには完全にレコードがそろっているはずですよね。それなのにリンクテーブルを開いてみるとまだ作成途中です。実際ステップ実行すると期待通りに動きます。また、1が終わった時点でサマリーテーブル(リンクテーブル)を開き、[Shift][F9]キーを押すとすべてのレコードがそろいます。 どうやらMySQL側での処理結果にリンクテーブルの反映がついていけてないような気がします。 どのように対処すれば1のサマリーテーブルが完全にできた時点で2の処理に引き継げるでしょうか。 たとえば1と2の途中でリンクテーブルを開き、[Shift][F9]キーを送信するという処理をVBAで実現できますか。

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

  • ベストアンサー
  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.3

<リンク再設定のサンプルコードはたくさんありますが、create table後にリンクの設> accessDBのリンクなら作り直したことあるけど。。。。。。 さてACCESSはデータの数がきちんと返ってこないことが多々あります。これはMicrosoftのページでも指摘されています。 MoveLastで数を数えたらどうかと思いますが。 私はいつもこれでやってます。

meglin888
質問者

お礼

処理1と処理2を続けて行いましたが、無事店舗数分のファイルができました!おかげさまで週末を明るい気持ちで迎えられます。本当にありがとうございます。

meglin888
質問者

補足

MoveLastはビンゴ!かもしれません。 2.のエクスポートのフェーズの前でMoveLastしたら、本来のレコード数より小さい値となりました。 そこで正しいレコード数になるまでループし、正しくなった段階で従来の処理を開始するようにしてみました。 確認できるまでちょっと時間がかかりますが、店舗数分のファイルが作成できたら報告&お礼をいたします。

その他の回答 (2)

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.2

完全な解決では無いとは思いますが ACCESS側でレコード数が増えるかどうかを判断して増えなくなったら反映されたと判断するとか。 mysqlでフラッシュするコマンド無かったけな。

meglin888
質問者

お礼

それはたぶんうまくいかなさそうな気がします。 というのはサマリーテーブル作成後にdcount関数でレコード数をみると、正しく書きこめている旨の数字が返ります。それなのにリンクテーブルを開くとまだ書きかけという状態なのです。 いっそリンクを切断し(リンクテーブルの削除)、再度リンクしなおそうかと思うのですが、どうでしょうか。ちなみにリンクの「再設定」ではダメでした。 リンク再設定のサンプルコードはたくさんありますが、create table後にリンクの設定という方法がわかりません。もしかしてご存じないですか。

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

まだ空中にある物を要求しているからなんでしょうね。 さてVBAでキーを送ることはできます。sendkeys で。 テーブル開いてその窓に sendkeys で送ってテーブルを閉じる?

meglin888
質問者

お礼

回答ありがとうございます。 DoCmd.OpenTable "summary" SendKeys "+{F2}" こんな感じですか? せっかくヒントをいただいたのに結果はうまくいきませんでした。書き方が悪くてテーブルの窓に送れてないのでしょうか。 ちなみに手動での[Shift][F9]もレコード数が多い場合は信用できないことがわかりました。一回押したくらいでは、空中にある物が返るようです。

関連するQ&A

  • ACCESSからリンクでのレコードの追加

    XP&MySQL5&ACCESS2003&MyODBC3.51 MySQLのDBをODBCに登録→ACCESSからリンク しています。 リンクテーブルからレコードの追加ができません。 ご存知の方おられたら、教えてください。

    • ベストアンサー
    • MySQL
  • MySQLからACCESSにリンクすると文字化けします

    MySQL初心者です。困っています。教えてください。 PC環境は OS:WindowsXP,ACCESS2000,MySQL5.10ver,ODBC3.51です。 ACCESS側からMySQLにリンクテーブルを張ると、全角が表示されません。 すべて“#Name?”と表示されてしまいます。 またインポートテーブルを作成すると半角は表示されますが、 やはり全角は“?”ですべて表示されます。 コマンドプロンプト上でテーブルに格納されているレコードを表示する場合は、 ちゃんと全角で内容が表示がされています。 MySQL上の「My.iniSetup」には以下の設定をしています。 [WinMySQLAdmin] Server=C:/mysql/bin/mysqld-max-nt.exe [mysqld] basedir=C:/MYSQL default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis [WinMySQLadmin] Server=C:/MYSQL/bin/mysqld-nt.exe 他の方の文字化けする場合などの質問では、 大体がiniファイルの設定が影響するようでしたが、 やはりわたしもこの設定がおかしいのでしょうか? 皆様のお知恵をお貸し下さい。 よろしくお願い致します。

  • レコード操作ツール探してます

    windowsで動くレコード操作ツールありませんか^-^?(追加/更新/削除できるもの) よろしくお願いします。 1)Access2000のリンクテーブルやパススルークエリ 2)mysql.exe でもそれなりにできるのですが、もーーーと便利なソフトウェア探してます。 1)Access2000のリンクテーブルは、定義したデータベースにprimary keyがないとデータ更新できない... 2)mysql.exe コマンド打つのめんどい ※かねやんMySQLAdmin.exeでいけるかと思いましたが、レコードいじれませんでした。

    • ベストアンサー
    • MySQL
  • かねやんMysqlでレコードの修正

    かねやんでMySQLを操作しているのですが、2人で作業をしていてふとわからない点に出会いました。 私が新規にテーブルを作成しレコードが追加されいきます。 途中でレコード内のデーターをかねやんの「レコード明細」で修正できました。 しかし、友人が作成したテーブルはなぜか修正ができません。できないというよりその修正したい部分が文字の変換ができないというかなんせ変化してくれないのです。 これはテーブルを作成する時に何か特別なことがあるのでしょうか? またあとからそのテーブル自体をいつでも修正可能な状態に変更できるのでしょうか? ご教授おねがいします。

    • ベストアンサー
    • MySQL
  • Access -> MySql

    AccessからMySqlに接続しようとしているのですが、なかなかうまくいきません。 ODBCでデータソースを作成するところまでは出来ているのですが (TestでもSuccess:connection was mode!とでています) Accessを起動し 「ファイル」->「外部データの取り込み」->「テーブルのリンク」を選択し出てきたダイアログの「ファイルの種類」でODBCデータベースを選択するのですが、「データソースの選択」ダイアログが出てきません。 何に問題があるのでしょうか? Access:Access2003 MySql:5.0.27 ODBC:Mysql Connecter/ODBC 3.51.17 DBサーバ、クライアントともにXPを使用しています。

  • 2つのaccessテーブルのレコード数を合わせたい

    一つは200レコードあるリンクテーブルです。 このリンクテーブルとあるテーブル(Bテーブル)を合体させたいと思いました。 そのあるテーブルは主キーであるIDとチェックボックスの2つのフィールドだけです。 このB]テーブルの主キーとリンクテーブルの主キーとリレーションでつなげました。 しかし、そのBテーブルはレコードが全く無いのでチェックボックスが出て来ません。 リンクテーブルのレコード数分、手動で作成したらチェックボックスと組み合わさります。 これでは、毎回毎回リンクテーブルのレコード数を数えて同じ分だけBテーブルでレコードを作成しなくてはいけません。 自動で同じだけのレコードを作ることはできますでしょうか? VBAでレコード数を数えて・・・・とかするのでしょうか?

  • アクセスのリンクテーブルの操作方法について

    アクセスで、OpenRecordsetオブジェクトでリンクテーブルを開こうとしましたが、引数にテーブルタイプのdbopentableを使用すると"無効な処理を行いました"とエラーになります。引数を省略すると、そこではエラーになりませんが、テーブルの更新ができません。 どのようにしたら、リンクテーブルのレコード操作ができるでしょううか?

  • Access2000からネットワーク経由でMySqlにODBCでリンクテーブル

    Access2000からMySqlにODBC経由でリンクテーブルをつな げたいのですが。 以前この件で質問させていただきまして、その時はローカル 内のMYSQLにリンクテーブルを繋げることは出来たのですが ネットワーク経由で、リンクテーブルを設定する際につまずいて おります。 システムDSNを登録する際の[CONNECTER/ODBC]の設定で、SERVER の項目が問題だと思っているのですが、ここにMYSQLをインストール しているPCのコンピュータ名を入力したのですが、駄目でした。 ネットワーク経由でMYSQLを使用する際の[CONNECTER/ODBC]の設定 方法をどうかご教授して頂けませんでしょうか? 以上 宜しくお願い致します。 環 境    :WINXP,ACCESS2000   MySQL: Ver5.0.27 ODBCドライバ: MySql ODBC 3.51 Driver

  • Access2010のリンクテーブルについて

    Access2010のリンクテーブルについて質問をさせてください。 現在、社内ではExcelシートで対応ログを残しています。 ログ入力や検索のことを考えれば、Accessへ移行するべきだと思うのですが、現在その予定はありません。また、ここで対応内容に応じて「区分」を付加していきたいと考え、以下のことを行いました。 1.ExcelシートをリンクテーブルとしてAccessに取り込み。  [対応テーブル]   ・対応NO   ・対応内容 2.今後加えていきたい区分のテーブルを作成  [区分マスタ]   ・区分NO   ・区分名 3.AccessでExcelシートは更新できないので、1と2をもとにしたテーブルを作成  [対応明細]   ・対応明細NO   ・対応NO(1と結合)   ・区分NO(2と結合)    3.のテーブルに対し、「対応NO」と「区分NO」を入力していければ、もともとのExcelファイルをいじることなく、区分を追加していけるものと考えたのですが、「このレコードセットは更新できません。」とのエラーとなってしまいます。 以前のAccessではExcelのリンクテーブルも更新できたと思うのですが、大人の事情でそれができなくなったことは認識しています。その回避策として、リンクテーブルに編集を加えるのではなく、更新用のテーブルを用意して入力していこうと思ったのですが、それもできません。 回避策がありましたらご教示いただけますでしょうか。 宜しくお願いいたします。

  • Win98とMySQLについて

    初めてmySQLを使ってDBの構築をしています。皆様のお力をお借りしたく思います。 Win98SEのパソコンでACCESS2000とMySQLを使ってデータベースを作成していますが、mySQLODBC3.51を使ってリンクテーブルを作成したところ、全く開きません。 何かの設定がおかしいのでしょうか。

    • ベストアンサー
    • MySQL

専門家に質問してみよう