- ベストアンサー
AccessがリンクしたMySQLと同期が取れない
- AccessからMySQLへの同期が取れない状況に困っています。サマリーテーブル作成後もリンクテーブルが途中までしかできていず、サマリーテーブルの完了を判定する方法を模索しています。
- ダミーテーブルの利用や[Shift][F9]キーの送信など、いくつかの処理を試みましたが、期待通りの動作には至っていません。
- どのようにすれば1のサマリーテーブルの作成が完了したタイミングで2の処理に引き継げるか、アドバイスをいただけると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
<リンク再設定のサンプルコードはたくさんありますが、create table後にリンクの設> accessDBのリンクなら作り直したことあるけど。。。。。。 さてACCESSはデータの数がきちんと返ってこないことが多々あります。これはMicrosoftのページでも指摘されています。 MoveLastで数を数えたらどうかと思いますが。 私はいつもこれでやってます。
その他の回答 (2)
- masatsan
- ベストアンサー率15% (179/1159)
完全な解決では無いとは思いますが ACCESS側でレコード数が増えるかどうかを判断して増えなくなったら反映されたと判断するとか。 mysqlでフラッシュするコマンド無かったけな。
お礼
それはたぶんうまくいかなさそうな気がします。 というのはサマリーテーブル作成後にdcount関数でレコード数をみると、正しく書きこめている旨の数字が返ります。それなのにリンクテーブルを開くとまだ書きかけという状態なのです。 いっそリンクを切断し(リンクテーブルの削除)、再度リンクしなおそうかと思うのですが、どうでしょうか。ちなみにリンクの「再設定」ではダメでした。 リンク再設定のサンプルコードはたくさんありますが、create table後にリンクの設定という方法がわかりません。もしかしてご存じないですか。
- masatsan
- ベストアンサー率15% (179/1159)
まだ空中にある物を要求しているからなんでしょうね。 さてVBAでキーを送ることはできます。sendkeys で。 テーブル開いてその窓に sendkeys で送ってテーブルを閉じる?
お礼
回答ありがとうございます。 DoCmd.OpenTable "summary" SendKeys "+{F2}" こんな感じですか? せっかくヒントをいただいたのに結果はうまくいきませんでした。書き方が悪くてテーブルの窓に送れてないのでしょうか。 ちなみに手動での[Shift][F9]もレコード数が多い場合は信用できないことがわかりました。一回押したくらいでは、空中にある物が返るようです。
お礼
処理1と処理2を続けて行いましたが、無事店舗数分のファイルができました!おかげさまで週末を明るい気持ちで迎えられます。本当にありがとうございます。
補足
MoveLastはビンゴ!かもしれません。 2.のエクスポートのフェーズの前でMoveLastしたら、本来のレコード数より小さい値となりました。 そこで正しいレコード数になるまでループし、正しくなった段階で従来の処理を開始するようにしてみました。 確認できるまでちょっと時間がかかりますが、店舗数分のファイルが作成できたら報告&お礼をいたします。