ラベル 互換性 の投稿を表示しています。 すべての投稿を表示
ラベル 互換性 の投稿を表示しています。 すべての投稿を表示

2010/10/21

access2010 CurrentDB.Properties("VBAArchitecture")

そういえば、CurrentDB.Properties("MDE")ってのがあったなと、ふと思い出しaccess2010でどうなってるのかなと確認していたところ。まぁ当然にあった。
で、 CurrentDB.Properties("VBAArchitecture")というのも確認できた。

accde/mde/adeを作成した場合
  •   CurrentDB.Properties("MDE")
    String で "T"
  •   CurrentDB.Properties("VBAArchitecture")
    32bit Long で 1
    64bit Long で 2

なので、
CurrentDB.Properties("MDE")="T" で、CurrentDB.Properties("VBAArchitecture")が存在しない2007形式のファイルはaccess2007で作成されたものと判断できる。だからどうした。

2010/10/08

access2010 access2007 分割フォームのモジュール変数

質問に対しての回答というか対策方法。

データシート側で、モジュール変数を参照できない件について
基本的な対策としては、TempVarsを使用と考えられます。
Option Compare Database
Option Explicit

Private Const ConstVar = "Constvar"
Public PublicVar
Private PrivateVar

Private Sub ShowVars()
    Debug.Print "PublicConstVar:" & PublicConstVar
    Debug.Print "ConstVar:" & ConstVar
    Debug.Print "PublicVar:" & PublicVar
    Debug.Print "PrivateVar:" & PrivateVar
    Debug.Print "TempVar:" & TempVars("tVar")
End Sub

Private Sub Form_Close()
    TempVars.RemoveAll
End Sub

Private Sub Form_Open(Cancel As Integer)
    PublicVar = Now
    PrivateVar = Now
    TempVars("tVar") = Now
End Sub

Private Sub Form_Current()
    Debug.Print "*** Form_Current ***"
    ShowVars
End Sub

Private Sub Field01_BeforeUpdate(Cancel As Integer)
    Debug.Print "*** Field01_BeforeUpdate ***"
    ShowVars
End Sub

Private Sub Field02_AfterUpdate()
    Debug.Print "*** Field02_AfterUpdate ***"
    ShowVars
End Sub
Option Compare Database
Option Explicit

Public Const PublicConstVar = "PublicConstVar"
access2010/access2007の間でも取得可否が異なるので確認しながらということになります。
必ず取得できるのは、TempVars/PublicなConst/PrivateなConstの模様。
上記コードで確認できる差はFormCurrent時イベント。2010ならばすべて取得可能。

仕様というか不具合というか、たぶん修正されないと思われるレベルの事象かな。

2010/09/08

access2010 アプリケーションパーツ その6

その4でもメモってたけど、足りないことあったから追加。
テンプレートaccdtは、CurrentDB.Version=12.0になるように作った方がよかった。
a2007用作ってたつもりだったのに、いつのまにか14.0になってた原因がアプリケーションパーツだった模様。まぁ、新規accdbで再構成すればよいのだけれども。

2010/09/07

access2010 カレンダーコントロールmscal.ocxからの変更

カレンダーコントロール mscal.ocx がなくなったので、DatePickerへの変更時のメモ
カレンダーコントロールのイベントで制御などしていた場合について。
該当するテキストボックスイベントChangeとTextプロパティを使いましょうかね。ValueだとDatePickerで選択した日付は参照できないのさ。Form.Requeryでもいい場合もあるかもだけど、レコード確定しちゃうから普通は避けるべきじゃないかな。
Option Compare Database
Option Explicit

Private Sub date01_Change()
    If Not IsDate(Me.date01.Text) Then Exit Sub
    '以降、日付とかに合わせた処理
End Sub

Private Sub date02_Change()
    If Not IsDate(Me.date02.Text) Then Exit Sub
    '以降、日付とかに合わせた処理
End Sub

Private Sub date02_GotFocus()
    DoCmd.RunCommand acCmdShowDatePicker
End Sub

2010/09/05

access2010 カレンダーコントロール 推奨しない

なにが起きるかわからないから、自己責任で。 カレンダーなくなるよってあれほど言ってたのに。今頃になって問い合わせしてくるとはね。
ライセンス的にどうかは自分で確認して。少なくとも製品版どうしのSideBySideは問題ないはず。

2010/08/26

access2010 2007との互換性 どうなるか その4

2010で2007用ファイルを作るときに気が付いたこと。
CurrentDB.Versionの値が12.0から14.0に変化する契機を覚えておく。

新規作成後、CurrentDB.Versionは12.0。
12.0を維持できていれば2007で起動したときアラートは出ない。 だから、2007用ファイルを作るときは、新規ファイルにインポートする形をとる必要がある。当然にインポートするオブジェクトは、2010新機能を用いていないものでなければならない。

で、どのタイミングで12.0から14.0になるのか。

2010新機能がもつオブジェクトを保存したとき。たとえばフォームにWebブラウザコントロールを配置した場合、配置した時点ではまだ12.0。フォームを保存したとき14.0になる。テーブルでのデータマクロ集計フィールドも同様と思われる。実際そこまで確かめてないだけなんだが、おそらく。

一部の例外はマクロ。2010でマクロを作った場合は基本的に14.0になる。但し、マクロの新規保存では12.0のまま。マクロを修正した時点で14.0に遷移。上書き保存しなくても遷移。なので、インポートして2007用ファイルを作るとき、大丈夫だと思ってマクロを修正すると新規インポートからやり直しということ。また、ネストしたIFブロックとか2007が理解できないマクロは書かない。

2010/08/25

access2010 2007との互換性 どうなるか その3


2007/2010各バージョンからaccdeを作成したとき、各々での動作。
2007製造/2010(32)動作のパターンを除き、動作しません。
オブジェクトが全くないaccdeでも同様。

2010から追加されたコントロールや機能を搭載した場合にどうなるのか。
サンプルには、Webブラウザーコントロールを使用。
2010から追加されたものが配置や設定された時点で、CurrentDB.Versionが14.0に変わります。削除しても12.0には戻りません。
データマクロ/集計フィールドをテーブルに追加した場合、2007ではReadOnlyとか参照できなくなります。

2010/06/06

access2010 互換性

ソースなしコンパイル済み(accde)での互換性
64製造32起動
32製造64起動

2007対応を含め、対応先でaccdeを作成してから配布

customUI xmlnsが違う
2007:
http://schemas.microsoft.com/office/2006/01/customui
2010:
http://schemas.microsoft.com/office/2009/07/customui

2010/05/29

access2010 2007との互換性 どうなるか その2

CurrentDB.Propertiesを見る機会があったから併せて確認。
Option Compare Database
Option Explicit

Private Sub ShowVersion_Click()
    MsgBox "Access Ver. : " & Application.CurrentDb.Properties("Version")
End Sub
最初は、12.0になっている。この状態に2010新機能の何かを加えると、
 14.0になる。

2010/05/25

access2010 2007との互換性 どうなるか

2010で作成したaccdbを2007で使用したいとする。
2010からの新機能などについては当然2007で作動しない。実際のところどうなるのか。
2010でテーブルとその連結フォームで様子見。2007は、XPSP3

基本パターンとして、テーブルとフォームは2007製で2010で変更。
・なにもしてない
特に問題なし

・集計フィールド追加してみた
順当な結果。で、集計フィールドを削除してみた
集計フィールド削除しても、もとには戻らないという感じ。
テーブル1を作り直してみた。
操作できるようになるが、アラートはそのまま。
だから、新しいaccdbにインポートして使えってことか。

基本のパターンにデータマクロを設定してみた。
読み取り専用になる。先の資料通り。データマクロは起動しない。
データマクロを削除してみた。
状況としては変わらず読み取り専用に。作り直すかインポートで使えるようになる。

もろもろ考えると2007対応はちとめんどくさいな。
2010で2007対応accdbを製造することは可能。だが、行程中一度でも2010新機能を設定した場合、その時点でバージョン14が確定。2007で動作するとしてもアラートが残ると。新たなaccdb(14と確定してない)にインポートしておおむねの2007対応か。

Access2010 2007との互換性資料

Backward Compatibility between Access 2010 and Access 2007 | MSDN

ポイントは、2007からインポートすることで2010新機能を設定しないaccdbが作れるということだろか