name | type | default |
UseMDIMode | dbByte | 0 |
ShowDocumentTabs | dbBoolean | True |
Theme Resource Name | dbText | |
StartUpShowDBWindow | dbBoolean | True |
StartUpShowStatusBar | dbBoolean | True |
AllowShortcutMenus | dbBoolean | True |
AllowFullMenus | dbBoolean | True |
AllowSpecialKeys | dbBoolean | True |
AllowDatasheetSchema | dbBoolean | True |
Auto Compact | dbLong | 0 |
DesignWithData | dbBoolean | True |
Themed Form Controls | dbLong | 1 |
Show Navigation Pane Search Bar | dbLong | 1 |
AllowBypassKey | dbBoolean | |
Remove Personal Information | dbLong | |
CustomRibbonID | dbText | |
StartUpForm | dbText |
2010/05/30
access2010 CurrentDb.Properties メモ
ラベル:
access 2010
access2010 ランタイム その3
XPクライアント上でランタイム実行アプリケーションにおいて、アプリ終了してもプロセスが終了しない場合がある。
2007でも発生していたのだけれど。そのまま放置するといずれリソース不足で困ることになる。
把握している発生条件は、
・クライアントがXP
・ADOで外部DB接続するアプリ
・レポートをダイアログで開く
ダイアログにしない限り現象は確認できない
ADPでも発生していた話を聞いている
バックエンドaccdbについては現象を発生していない
ADO+MySQLは発生する
2007でも発生していたのだけれど。そのまま放置するといずれリソース不足で困ることになる。
把握している発生条件は、
・クライアントがXP
・ADOで外部DB接続するアプリ
・レポートをダイアログで開く
ダイアログにしない限り現象は確認できない
ADPでも発生していた話を聞いている
バックエンドaccdbについては現象を発生していない
ADO+MySQLは発生する
ラベル:
access 2010,
Runtime
2010/05/29
access2010 2007との互換性 どうなるか その2
CurrentDB.Propertiesを見る機会があったから併せて確認。
14.0になる。
Option Compare Database Option Explicit Private Sub ShowVersion_Click() MsgBox "Access Ver. : " & Application.CurrentDb.Properties("Version") End Sub最初は、12.0になっている。この状態に2010新機能の何かを加えると、
14.0になる。
ラベル:
access 2010,
MS-Access,
互換性
access2010 テーマ変更に使うプロパティ
Sub ShowThemeProperty() Debug.Print Application.CurrentDb.Properties("Theme Resource Name") End Sub Sub SetThemeProperty() Application.CurrentDb.Properties("Theme Resource Name") = "ThemeName" End Subだけど瞬時に切り替わるわけではない。UIで変更すると変わるわけだからなんらか方法があるかも
UIから変更とかしてるとどんどん共有リソースのテーブルに格納されていくから、
Currentproject.AddSharedImageメソッドで追加してからプロパティ更新かな。
ラベル:
access 2010
access2010 アプリケーションパーツ その3
アプリケーションパーツを作成すると、(ユーザフォルダ)\AppData\Roaming\Microsoft\Templates\Accessにaccdtテンプレートファイルができるのであるが、accdtの中身をのぞいてみた。accdtは、xml/txtファイルのzipアーカイブ。Office2007からファイルは基本的にzip。つまり、内容を理解していればaccdt ファイルを直接編集できるということ。accdtファイルをzipにリネームもしくはアーカイバでオープン。
わかりやすいところで\docProps\core.xml
カテゴリーとかここで編集することで、アプリケーションパーツメニュー上の表示を変更可能。
\templete\icon
\templete\preview
には、backstageとかメニューに表示される画像
\templete\database以下に各オブジェクト情報は埋め込まれている。
VBA参照設定 \templete\database\vbaReferences.xml
\template\database\objects\form(form_name).txtにフォーム情報あれこれ
わかりやすいところで\docProps\core.xml
カテゴリーとかここで編集することで、アプリケーションパーツメニュー上の表示を変更可能。
\templete\icon
\templete\preview
には、backstageとかメニューに表示される画像
\templete\database以下に各オブジェクト情報は埋め込まれている。
VBA参照設定 \templete\database\vbaReferences.xml
\template\database\objects\form(form_name).txtにフォーム情報あれこれ
ラベル:
access 2010
2010/05/28
access2010 CommandButton Properties
コマンドボタンを始めとし各コントロール表示系のプロパティが増えたのであるが、どうも整理がつかないのでツールっぽいものを作ってみたと。
各パラメータ調整後、ボタン押下で、イミディエイトにWith~End Withを出力
基本的には、UseTheme=True で、 Themeの色フォントを使用する
各パラメータ調整後、ボタン押下で、イミディエイトにWith~End Withを出力
基本的には、UseTheme=True で、 Themeの色フォントを使用する
With Me.cmd00 .UseTheme = True .Gradient = 12 .BackThemeColorIndex = 4 .ForeThemeColorIndex = 0 .HoverForeThemeColorIndex = 0 .BackShade = 100 .BackTint = 60 .PressedThemeColorIndex = 4 .HoverThemeColorIndex = 4 .HoverTint = 40 .PressedTint = 100 .ForeTint = 75 .HoverForeTint = 75 .PressedForeThemeColorIndex = 0 .PressedForeTint = 75 .BorderStyle = 1 .BorderThemeColorIndex = 4 .BorderTint = 60 .BorderWidth = 0 .HoverShade = 100 .PressedShade = 75 .Shape = 1 .BorderShade = 100 .Bevel = 0 .Glow = 0 .Shadow = 0 .SoftEdges = 0 .ForeShade = 100 .HoverForeShade = 100 .PressedForeShade = 100 .GridlineThemeColorIndex = 1 .GridlineTint = 100 .GridlineShade = 65 .GridlineStyleTop = 0 .GridlineStyleBottom = 0 .GridlineStyleLeft = 0 .GridlineStyleRight = 0 .GridlineWidthTop = 1 .GridlineWidthBottom = 1 .GridlineWidthLeft = 1 .GridlineWidthRight = 1 .ThemeFontIndex = 1 End With順序がいい加減になってしまったことは忘れる。
ラベル:
access 2010
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対応か。
2010からの新機能などについては当然2007で作動しない。実際のところどうなるのか。
2010でテーブルとその連結フォームで様子見。2007は、XPSP3
基本パターンとして、テーブルとフォームは2007製で2010で変更。
・なにもしてない
特に問題なし
・集計フィールド追加してみた
順当な結果。で、集計フィールドを削除してみた
集計フィールド削除しても、もとには戻らないという感じ。
テーブル1を作り直してみた。
操作できるようになるが、アラートはそのまま。
だから、新しいaccdbにインポートして使えってことか。
基本のパターンにデータマクロを設定してみた。
読み取り専用になる。先の資料通り。データマクロは起動しない。
データマクロを削除してみた。
状況としては変わらず読み取り専用に。作り直すかインポートで使えるようになる。
もろもろ考えると2007対応はちとめんどくさいな。
2010で2007対応accdbを製造することは可能。だが、行程中一度でも2010新機能を設定した場合、その時点でバージョン14が確定。2007で動作するとしてもアラートが残ると。新たなaccdb(14と確定してない)にインポートしておおむねの2007対応か。
ラベル:
access 2010,
MS-Access,
互換性
Access2010 2007との互換性資料
Backward Compatibility between Access 2010 and Access 2007 | MSDN
ポイントは、2007からインポートすることで2010新機能を設定しないaccdbが作れるということだろか
ポイントは、2007からインポートすることで2010新機能を設定しないaccdbが作れるということだろか
ラベル:
access 2010,
MS-Access,
互換性
2010/05/21
access2010 ADO非同期処理 メモ Form.Open
Option Compare Database Option Explicit Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private WithEvents cnCls1 As Class_ADOConnectionAsyncWithDialog Private cnCondition As Boolean Private OpenCancel As Boolean Private cnErrMsg As String Private Sub SetInit() Set cnCls1 = New Class_ADOConnectionAsyncWithDialog cnErrMsg = "" cnCls1.ConnectionStart End Sub Private Sub cnCls1_Connected(cnStatus As ADODB.EventStatusEnum, cnError As ADODB.Error) If cnStatus = adStatusOK Then cnCls1.ExecQueryReadOnly "procedurestring" Else OpenCancel = True cnErrMsg = "Connection Error:" & cnError.Description cnCls1.ConnectionClose'cnErrMsg代入を先にしないとConnectionCloseが先に実行される場合がある End If End Sub Private Sub cnCls1_ExecuteComplete(cnStatus As ADODB.EventStatusEnum, ResultRS As ADODB.Recordset, ResultRecordsAffected As Long, cnError As ADODB.Error) If cnStatus = adStatusOK Then 'ここでいろいろセッティング Else OpenCancel = True cnErrMsg = "Execute Error:" & cnError.Description End If cnCls1.ConnectionClose End Sub Private Sub cnCls1_DisConnected() Set cnCls1 = Nothing cnCondition = True End Sub Private Sub Form_Open(Cancel As Integer) On Error GoTo Errhnd cnCondition = False OpenCancel = False SetInit While cnCondition = False'ここでLoopさせて待機 DoEvents Sleep 100 Wend If Not cnErrMsg = "" Then MsgBox cnErrMsg Cancel = OpenCancel Exit Sub Errhnd: Cancel = True End Sub Private Sub Form_Close() On Error Resume Next Set cnCls1 = Nothing End Sub
ラベル:
access 2010,
ADO,
VBA
2010/05/20
access2010 Form.Errorイベント メモ
2010に限ることではない
エラーコード失念して毎回確かめてる
エラーコード失念して毎回確かめてる
Private Sub Form_Error(DataErr As Integer, Response As Integer) Select Case DataErr Case 2113 '書式に適さなかった Response = acDataErrContinue '既定アラート抑止 Case 2279 'InputMaskに違反 Response = 0 '0でもいい ActiveControl.Undo Case 2107 '入力規則に違反 Response = 0 MsgBox ActiveControl.Name & "は、○○です。", vbInformation, "入力規則違反" Case Else Response = acDataErrDisplay End Select End Sub
ラベル:
access 2010,
MS-Access,
VBA
access2010 不具合解消の件
OSからインストールしなおして、不具合が見られない
2007アンインストール環境だったからなのか、使用経過によるものなのか、それは不明
2007アンインストール環境だったからなのか、使用経過によるものなのか、それは不明
ラベル:
access 2010
2010/05/19
access2010 IMEModeプロパティ
64bitで使用していると、IMEModeプロパティが効かない
1.Win7/64+office2010/64がだめ
2.Win7/32+office2010/32は大丈夫
3.XpSp3+runtime2010は大丈夫
64/32ともsample作って試したが、64上での動作だけがだめだ
Win7/64+office2007は無事に動いてたから、IME含めoffice2010/64が原因だろうな。
次回メンテでoffice2010/32にすることも検討しよう
1.Win7/64+office2010/64がだめ
2.Win7/32+office2010/32は大丈夫
3.XpSp3+runtime2010は大丈夫
64/32ともsample作って試したが、64上での動作だけがだめだ
Win7/64+office2007は無事に動いてたから、IME含めoffice2010/64が原因だろうな。
次回メンテでoffice2010/32にすることも検討しよう
ラベル:
access 2010
access2010 FileSystemObject その2
もういい。めんどうだ
きちんと動く気がしない
きちんと動く気がしない
Option Compare Database Option Explicit Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private objFileSys As Object Private objShell As Object Private Sub Class_Initialize() Set objFileSys = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("Shell.Application") End Sub Private Sub Class_Terminate() Set objFileSys = Nothing Set objShell = Nothing End Sub Public Function CreateZipFile(ZipFilePathString As Variant, _ ParamArray TargetFilesPathString()) As Variant 'Booleanにしてたけどなんか変 '基本的には上書き仕様。アーカイブに追加は無し。 On Error GoTo ErrHnd Dim n As Integer Dim strZipData As String Dim objFolder As Object Dim objFolderItem As Object Dim objDestination As Object CreateZipFile = True strZipData = "PK" & Chr(5) & Chr(6) & String(18, 0) If UCase(objFileSys.GetExtensionName(ZipFilePathString)) <> "ZIP" Then Debug.Print "拡張子が違います。" CreateZipFile = False Exit Function End If 'zip存在してたら削除して作り直し If objFileSys.FileExists(ZipFilePathString) Then objFileSys.DeleteFile ZipFilePathString End If objFileSys.CreateTextFile(ZipFilePathString, False).Write strZipData Set objDestination = objShell.NameSpace(ZipFilePathString) For n = 0 To UBound(TargetFilesPathString) Set objFolder = objShell.NameSpace(objFileSys.GetParentFolderName(TargetFilesPathString(n))) Set objFolderItem = objFolder.ParseName(objFileSys.GetFileName(TargetFilesPathString(n))) If objFolderItem Is Nothing Then Debug.Print "ファイルがありません。:" & TargetFilesPathString(n) objFileSys.DeleteFile ZipFilePathString CreateZipFile = False Exit Function End If objDestination.CopyHere objFolderItem, 20 'ここが効かない '追加ファイルごとにループで待機することで、でかファイルでもエラーでなーす。 'だけど経過ダイアログが消せてないからキャンセル押下で無限ループ Do Until objDestination.Items().Count = n + 1 DoEvents Sleep 1000 Loop Next Exit Function ErrHnd: CreateZipFile = False Debug.Print Err.Number, Err.Description End Function Public Function ExtractZipFile(TargetZipFilePath As Variant, DestinationFolderPath As Variant) As Boolean On Error GoTo ErrHnd Dim objFile As Object Dim objDestination As Object ExtractZipFile = True If UCase(objFileSys.GetExtensionName(TargetZipFilePath)) <> "ZIP" Then Debug.Print "拡張子が違います。" ExtractZipFile = False Exit Function End If If Not objFileSys.FolderExists(DestinationFolderPath) Then objFileSys.CreateFolder DestinationFolderPath End If Set objFile = objShell.NameSpace(TargetZipFilePath) Set objDestination = objShell.NameSpace(DestinationFolderPath) objDestination.CopyHere objFile.Items, 16 '同一ファイル名は上書き Exit Function ErrHnd: ExtractZipFile = False Debug.Print Err.Number, Err.Description End Function Public Function FolderExists(PathStrings As Variant) As Boolean FolderExists = objFileSys.FolderExists(PathStrings) End Function Public Function FileExists(PathStrings As Variant) As Boolean FileExists = objFileSys.FileExists(PathStrings) End Function Public Function GetFileName(PathStrings As Variant) As String GetFileName = objFileSys.GetFileName(PathStrings) End Function ' Public Function BuildPath(FolderPathString As Variant, FileNameString As String) As Variant BuildPath = objFileSys.BuildPath(FolderPathString, FileNameString) End Function Public Function GetAbsolutePathName(FilePathString As Variant) As Variant GetAbsolutePathName = objFileSys.GetAbsolutePathName(FilePathString) End Function Public Function GetBaseName(FilePathString As Variant) As String GetBaseName = objFileSys.GetBaseName(FilePathString) End Function Public Function GetExtensionName(FilePathString As Variant) As Variant GetExtensionName = objFileSys.GetExtensionName(FilePathString) End Function Public Function GetParentFolderName(FilePathString As Variant) As String GetParentFolderName = objFileSys.GetParentFolderName(FilePathString) End Function Public Function CopyFile(TargetFilePath As Variant, DestinationFilePath As Variant) As Boolean On Error GoTo ErrHnd CopyFile = True objFileSys.CopyFile TargetFilePath, DestinationFilePath Exit Function ErrHnd: CopyFile = False Debug.Print Err.Number, Err.Description End Function Public Function CopyFolder(TargetFolderPath As Variant, DestinationFolderPath As Variant) As Boolean On Error GoTo ErrHnd CopyFolder = True objFileSys.CopyFolder TargetFolderPath, DestinationFolderPath Exit Function ErrHnd: CopyFolder = False Debug.Print Err.Number, Err.Description End Function Public Function MoveFile(TargetFilePath As Variant, DestinationFolderPath As Variant) As Boolean On Error GoTo ErrHnd MoveFile = True objFileSys.MoveFile TargetFilePath, DestinationFolderPath Exit Function ErrHnd: MoveFile = False Debug.Print Err.Number, Err.Description End Function Public Function MoveFolder(TargetFolderPath As Variant, DestinationFolderPath As Variant) As Boolean On Error GoTo ErrHnd MoveFolder = True objFileSys.MoveFolder TargetFolderPath, DestinationFolderPath Exit Function ErrHnd: MoveFolder = False Debug.Print Err.Number, Err.Description End Function Public Function DeleteFile(TargetFilePath As Variant) As Boolean On Error GoTo ErrHnd DeleteFile = True objFileSys.DeleteFile TargetFilePath Exit Function ErrHnd: DeleteFile = False Debug.Print Err.Number, Err.Description End Function Public Function DeleteFolder(TargetFolderPath As Variant) As Boolean On Error GoTo ErrHnd DeleteFolder = True objFileSys.DeleteFolder TargetFolderPath Exit Function ErrHnd: DeleteFolder = False Debug.Print Err.Number, Err.Description End Function Public Function CreateFolder(TargetFolderPath As Variant) As Boolean On Error GoTo ErrHnd CreateFolder = True objFileSys.CreateFolder TargetFolderPath Exit Function ErrHnd: CreateFolder = False Debug.Print Err.Number, Err.Description End Function
ラベル:
access 2010,
MS-Access,
VBA
2010/05/18
access2010 FileSystemObject
別にaccessに限ってのことではないんだけど。苦手だから使ってなかったけど使いそうな気配
育てていこうかな。クラスにする必要あったのかなぁ
あー、よくかんがえたらzipアーカイブ処理は非同期だなぁ
育てていこうかな。クラスにする必要あったのかなぁ
あー、よくかんがえたらzipアーカイブ処理は非同期だなぁ
Option Compare Database Option Explicit Private objFileSys As Object Private objShell As Object Private Sub Class_Initialize() Set objFileSys = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("Shell.Application") End Sub Private Sub Class_Terminate() Set objFileSys = Nothing Set objShell = Nothing End Sub Public Function CreateZipFile(ZipFilePathString As Variant, ParamArray TargetFilesPathString()) As Boolean On Error GoTo ErrHnd 'http://blog.livedoor.jp/humanfrog/archives/27718638.htmlから勝手に引用参考にさせていただいた。いい世の中だなぁ Dim n As Integer Dim strZipData As String Dim strFile As String Dim objFolder As Object Dim objFolderItem As Object Dim objDestination As Object CreateZipFile = True strZipData = "PK" & Chr(5) & Chr(6) & String(18, 0) If UCase(objFileSys.GetExtensionName(ZipFilePathString)) <> "ZIP" Then Debug.Print "拡張子が違います。" CreateZipFile = False Exit Function End If If Not objFileSys.FileExists(ZipFilePathString) Then objFileSys.CreateTextFile(ZipFilePathString, False).Write strZipData End If Set objDestination = objShell.NameSpace(ZipFilePathString) For n = 0 To UBound(TargetFilesPathString) Set objFolder = objShell.NameSpace(objFileSys.GetParentFolderName(TargetFilesPathString(n))) Set objFolderItem = objFolder.ParseName(objFileSys.GetFileName(TargetFilesPathString(n))) If objFolderItem Is Nothing Then Debug.Print "ファイルがありません。:" & TargetFilesPathString(n) objFileSys.DeleteFile ZipFilePathString CreateZipFile = False Exit Function End If objDestination.CopyHere objFolderItem, 16 Next Exit Function ErrHnd: CreateZipFile = False Debug.Print Err.Number, Err.Description End Function Public Function ExtractZipFile(TargetZipFilePath As Variant, DestinationFolderPath As Variant) As Boolean On Error GoTo ErrHnd Dim objFile As Object Dim objDestination As Object ExtractZipFile = True If UCase(objFileSys.GetExtensionName(TargetZipFilePath)) <> "ZIP" Then Debug.Print "拡張子が違います。" ExtractZipFile = False Exit Function End If If Not objFileSys.FolderExists(DestinationFolderPath) Then objFileSys.CreateFolder DestinationFolderPath End If Set objFile = objShell.NameSpace(TargetZipFilePath) Set objDestination = objShell.NameSpace(DestinationFolderPath) objDestination.CopyHere objFile.Items, 16 '同一ファイル名は上書き Exit Function ErrHnd: ExtractZipFile = False Debug.Print Err.Number, Err.Description End Function Public Function FolderExists(PathStrings As Variant) As Boolean FolderExists = objFileSys.FolderExists(PathStrings) End Function Public Function FileExists(PathStrings As Variant) As Boolean FileExists = objFileSys.FileExists(PathStrings) End Function Public Function GetFileName(PathStrings As Variant) As String GetFileName = objFileSys.GetFileName(PathStrings) End Function ' Public Function BuildPath(FolderPathString As Variant, FileNameString As String) As Variant BuildPath = objFileSys.BuildPath(FolderPathString, FileNameString) End Function Public Function GetAbsolutePathName(FilePathString As Variant) As Variant GetAbsolutePathName = objFileSys.GetAbsolutePathName(FilePathString) End Function Public Function GetBaseName(FilePathString As Variant) As String GetBaseName = objFileSys.GetBaseName(FilePathString) End Function Public Function GetExtensionName(FilePathString As Variant) As Variant GetExtensionName = objFileSys.GetExtensionName(FilePathString) End Function Public Function GetParentFolderName(FilePathString As Variant) As String GetParentFolderName = objFileSys.GetParentFolderName(FilePathString) End Function Public Function CopyFile(TargetFilePath As Variant, DestinationFilePath As Variant) As Boolean On Error GoTo ErrHnd CopyFile = True objFileSys.CopyFile TargetFilePath, DestinationFilePath Exit Function ErrHnd: CopyFile = False Debug.Print Err.Number, Err.Description End Function Public Function CopyFolder(TargetFolderPath As Variant, DestinationFolderPath As Variant) As Boolean On Error GoTo ErrHnd CopyFolder = True objFileSys.CopyFolder TargetFolderPath, DestinationFolderPath Exit Function ErrHnd: CopyFolder = False Debug.Print Err.Number, Err.Description End Function Public Function MoveFile(TargetFilePath As Variant, DestinationFolderPath As Variant) As Boolean On Error GoTo ErrHnd MoveFile = True objFileSys.MoveFile TargetFilePath, DestinationFolderPath Exit Function ErrHnd: MoveFile = False Debug.Print Err.Number, Err.Description End Function Public Function MoveFolder(TargetFolderPath As Variant, DestinationFolderPath As Variant) As Boolean On Error GoTo ErrHnd MoveFolder = True objFileSys.MoveFolder TargetFolderPath, DestinationFolderPath Exit Function ErrHnd: MoveFolder = False Debug.Print Err.Number, Err.Description End Function Public Function DeleteFile(TargetFilePath As Variant) As Boolean On Error GoTo ErrHnd DeleteFile = True objFileSys.DeleteFile TargetFilePath Exit Function ErrHnd: DeleteFile = False Debug.Print Err.Number, Err.Description End Function Public Function DeleteFolder(TargetFolderPath As Variant) As Boolean On Error GoTo ErrHnd DeleteFolder = True objFileSys.DeleteFolder TargetFolderPath Exit Function ErrHnd: DeleteFolder = False Debug.Print Err.Number, Err.Description End Function Public Function CreateFolder(TargetFolderPath As Variant) As Boolean On Error GoTo ErrHnd CreateFolder = True objFileSys.CreateFolder TargetFolderPath Exit Function ErrHnd: CreateFolder = False Debug.Print Err.Number, Err.Description End Function
ラベル:
access 2010,
MS-Access,
VBA
2010/05/17
コピペできるか
程よく改行入れとけばいけるな
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application">
<DataMacro Event="BeforeChange">
<Statements>
<Comment>できるかな</Comment>
</Statements>
</DataMacro>
</DataMacros>
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<UserInterfaceMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application">
<UserInterfaceMacro MinimumClientDesignVersion="14.0.0000.0000">
<Statements>
<Action Name="RunCode">
<Argument Name="FunctionName">test()</Argument>
</Action>
</Statements>
</UserInterfaceMacro>
</UserInterfaceMacros>
これはだめだな
test()
ラベル:
access 2010
access2010 Sharepoint2010動作環境作った時のメモ
WindowsServer2008R2
SQLServer2008R2(reporting service)
SharepointServer2010Ent
AD環境(SQLServer用ドメインアカウント)
SQLServerインストール、ReportServerのモードはSharepoint統合
SharepointSeverインストール、サーバファーム(スタンドアローンじゃないほう)
インストール後、取り急ぎWebデータベース(access service)は使用可能だが、レポート機能が未構成
SharepointServer
・サーバの全体設定からSQLServerReportingServices統合設定
SQLServer
・http://technet.microsoft.com/ja-jp/library/ee662542.aspx の
”接続モードで Reporting Services アドインをインストールするには ”の項番3/4a/4bの通り、設定ファイルの編集
SQLServer2008R2(reporting service)
SharepointServer2010Ent
AD環境(SQLServer用ドメインアカウント)
SQLServerインストール、ReportServerのモードはSharepoint統合
SharepointSeverインストール、サーバファーム(スタンドアローンじゃないほう)
インストール後、取り急ぎWebデータベース(access service)は使用可能だが、レポート機能が未構成
SharepointServer
・サーバの全体設定からSQLServerReportingServices統合設定
SQLServer
・http://technet.microsoft.com/ja-jp/library/ee662542.aspx の
”接続モードで Reporting Services アドインをインストールするには ”の項番3/4a/4bの通り、設定ファイルの編集
ラベル:
access 2010,
SharePoint 2010,
Webデータベース
2010/05/16
access2010 暗号化がさらに...だそうです
これはなんだ?ということで確認。
どこで出てくるかというと、ここ
行レベルのロックが無視されるらしいです。なので、バックエンドにする場合、2007以前に対応する場合には、以前の暗号化を使用するということになるっぽい。デフォルト設定で既定の暗号化になっていたから、フロントエンドはそのままでいいかもとして使ってみる。
ラベル:
access 2010
access2010 フィールドの入力規則
2010から入力規則が改良されたので整理。
フィールドの入力規則はフィールドのbeforeupdate、レコードの入力規則はレコードのbeforeupdateと把握しておく。なので、フィールドの入力規則は今までのものと同じ。レコードの入力規則が追加されたということ。
使い方としては、フィールドの入力規則はフィールドで完結する条件式、レコードの入力規則は複数フィールドを参照した条件式を使うことが多いかと。
複雑な状況になるのであれば、BeforeChangeデータマクロでよいかと。
例として、日付フィールドを持つテーブルに入力規則 [Fdate1]>Date() を設定
フィールドの入力規則の場合、フィールドに本日以前の日付入力ができない。
レコードの入力規則の場合、日付フィールドが本日以前であるレコードのinsert/updateもできない。
こんな使い方もできる。本来の用途とは違うかもだが。これだったらデータマクロの方がいいかな。
リンクテーブルで
ADO接続で、といってもOLEだけど
外部からOLEDBで
外部からODBCで
更新クエリだけメッセージでねぇ
フィールドの入力規則はフィールドのbeforeupdate、レコードの入力規則はレコードのbeforeupdateと把握しておく。なので、フィールドの入力規則は今までのものと同じ。レコードの入力規則が追加されたということ。
使い方としては、フィールドの入力規則はフィールドで完結する条件式、レコードの入力規則は複数フィールドを参照した条件式を使うことが多いかと。
複雑な状況になるのであれば、BeforeChangeデータマクロでよいかと。
例として、日付フィールドを持つテーブルに入力規則 [Fdate1]>Date() を設定
フィールドの入力規則の場合、フィールドに本日以前の日付入力ができない。
レコードの入力規則の場合、日付フィールドが本日以前であるレコードのinsert/updateもできない。
こんな使い方もできる。本来の用途とは違うかもだが。これだったらデータマクロの方がいいかな。
リンクテーブルで
ADO接続で、といってもOLEだけど
外部からOLEDBで
外部からODBCで
更新クエリだけメッセージでねぇ
ラベル:
access 2010
2010/05/15
access2010 SharedResources
Sub addImage() CurrentProject.AddSharedImage imgnamestring, fullpathstring End Sub Sub listResources() Dim Srs As SharedResources Dim Sr As SharedResource Set Srs = CurrentProject.Resources For Each Sr In Srs Debug.Print Sr.Name, Sr.Type Next End Sub Sub delResource() Dim Srs As SharedResources Dim Sr As SharedResource Set Srs = CurrentProject.Resources For Each Sr In Srs If Sr.Name = resourcenamestring Then Sr.Delete Next End Sub
ラベル:
access 2010
access2010 BrowseTo
2010から使用できるBrowseToのメモ
サブフォームをネストしてあって、メインフォームからサブフォームの画面遷移するコマンド。
Where条件式/データモードは、OpenFormメソッドのオプションと同じだろうから放置。
ページはWeb専用だから使うときに調べる。
サブフォームコントロールへのパスの書き方は、サブフォームコントロールを”>”で繋ぐ。
サブフォームをネストしてあって、メインフォームからサブフォームの画面遷移するコマンド。
Where条件式/データモードは、OpenFormメソッドのオプションと同じだろうから放置。
ページはWeb専用だから使うときに調べる。
サブフォームコントロールへのパスの書き方は、サブフォームコントロールを”>”で繋ぐ。
Option Compare Database Option Explicit '遷移だけならSubFormコントロール/Formプロパティで繋ぐのと変わらん Private Sub cmd00_Click() Me.subForm00.Form.subForm01.Form.subForm02.Form.subForm03.SourceObject = "F01" End Sub Private Sub cmd01_Click() 'ここが実行されSourceObjectが変更されてしまうと、cmd00_Clickは実行時エラー Me.subForm00.SourceObject = "F07" End Sub Private Sub cmd02_Click() 'cmd01_Click実行後であっても意図したとおり遷移する 'フォームイベントは、サブフォーム同様ネストの深い順で発生 DoCmd.BrowseTo acBrowseToForm, "F05", "F_00.subForm00>F_01.subForm01>F_02.subForm02>F_03.subForm03" End Sub Private Sub cmd03_Click() '見た目上ではあるが、ネスト中間のフォームだけを変更できる。 '実際には、変更されない親フォーム以外はOpenし直している。 DoCmd.BrowseTo acBrowseToForm, "F05", "F_00.subForm00>F_01.subForm01>F_02_1.subForm02>F_03.subForm03" End Sub
ラベル:
access 2010
2010/05/14
access2010 ランタイム その2
ランタイム環境での表示系を見ます。
BackStageViewの項目を表示しない。既定で印刷タブ/プライバシーオプション/終了のみ。
なので、
<backstage>
<tab idMso="TabPrint" visible="false" />
<button idMso="ApplicationOptionsDialog" visible="false" />
<button idMso="FileExit" visible="false" />
</backstage>
で、表示がなくなる。これを見る限り、オプションボタンがプライバシーオプションに置き換わっている感じする。ランタイム環境でセキュリティセンターが開かないことに連結する内容かもしれない。
データシートビューで contextualTabの表示もない。
BackStageViewの項目を表示しない。既定で印刷タブ/プライバシーオプション/終了のみ。
なので、
<backstage>
<tab idMso="TabPrint" visible="false" />
<button idMso="ApplicationOptionsDialog" visible="false" />
<button idMso="FileExit" visible="false" />
</backstage>
で、表示がなくなる。これを見る限り、オプションボタンがプライバシーオプションに置き換わっている感じする。ランタイム環境でセキュリティセンターが開かないことに連結する内容かもしれない。
データシートビューで contextualTabの表示もない。
ラベル:
access 2010,
Runtime
access2010 ランタイム
ランタイム配布ファイルを開くとビルトインらしきリボンを見ることができます。これはなんだろか
で、バックステージ
セキュリティセンターの設定ボタンがありません
仕様が変わったのかもしれません。
2007ランタイムのときはセキュリティセンターを開くことができて、かつセキュリティセンターの設定ボタンが存在していた。
ちなみに、
2010作成したソースなしのファイルaccdeを2007ランタイムで開くと、
ソースあり(accdb/accdr)は開く。コンパイル結果が違うんでしょうな。2007配布には2007でpackageする必要があるということ。
64/32の間についても同様
で、バックステージ
セキュリティセンターの設定ボタンがありません
仕様が変わったのかもしれません。
2007ランタイムのときはセキュリティセンターを開くことができて、かつセキュリティセンターの設定ボタンが存在していた。
ちなみに、
2010作成したソースなしのファイルaccdeを2007ランタイムで開くと、
ソースあり(accdb/accdr)は開く。コンパイル結果が違うんでしょうな。2007配布には2007でpackageする必要があるということ。
64/32の間についても同様
ラベル:
access 2010,
Runtime
access2010 オプションダイアログ/セキュリティセンター
ついでに、気になってなので確認。ぐぬぬぬな感じ。
runtime modeもしくはruntimeでセキュリティセンター開かない仕様になったんだろうか。
2007のおぼえてねぇ
それはそれでいいんだけど、セキュリティセンターがruntime modeで強制終了ってよ
コードが悪いんかな。
オプションダイアログを開く
Win7+製品32bitでaccdb ダイアログ開く
Win7+製品32bitでaccdr 実行時エラー
Win7+製品32bitでaccde ダイアログ開く
Win7+製品64bitでaccdb ダイアログ開く
Win7+製品64bitでaccdr 実行時エラー
Win7+製品64bitでaccde ダイアログ開く
Win7+Runt64bitでaccdb 実行時エラー/ダイアログ開かない/終了する
Win7+Runt64bitでaccdr 実行時エラー/ダイアログ開かない/終了する
Win7+Runt64bitでaccde イベント時エラー発生/ダイアログ開かない/終了しない
XPSP3+Runtimeでaccdb 実行時エラー/ダイアログ開かない/終了する
XPSP3+Runtimeでaccdr 実行時エラー/ダイアログ開かない/終了する
XPSP3+Runtimeでaccde イベント時エラー発生/ダイアログ開かない/終了しない
<<追試>>
XPSP3+Runtime+2010std 2010stdなしと同じ
XPSP3+Runtime+Office2007 上に同じ
セキュリティセンターを開く
Win7+製品32bitでaccdb ダイアログ開く
Win7+製品32bitでaccdr 動作停止で異常
Win7+製品32bitでaccde ダイアログ開く
Win7+製品64bitでaccdb ダイアログ開く
Win7+製品64bitでaccdr 動作停止で異常
Win7+製品64bitでaccde ダイアログ開く
Win7+Runt64bitでaccdb ダイアログ開かない
Win7+Runt64bitでaccdr ダイアログ開かない
Win7+Runt64bitでaccde ダイアログ開かない
XPSP3+Runtimeでaccdb ダイアログ開かない
XPSP3+Runtimeでaccdr ダイアログ開かない
XPSP3+Runtimeでaccde ダイアログ開かない
<<追試>>
XPSP3+Runtime+Office2010stdで3つ拡張子とも終了してしまう
XPSP3+Runtime+Office2007では、ダイアログは開かないだけ、終了はしない。
よく考えてみれば、2010で作成したファイルを使用しているので、ライブラリ参照に原因があるのかもしれん。
幾分かは不具合っぽく思えるけど、いずれにせよセキュリティセンターとオプションは、ランタイム環境で開くことができない状況ということ。
最新取りまとめメモ
runtime modeもしくはruntimeでセキュリティセンター開かない仕様になったんだろうか。
2007のおぼえてねぇ
それはそれでいいんだけど、セキュリティセンターがruntime modeで強制終了ってよ
コードが悪いんかな。
オプションダイアログを開く
Win7+製品32bitでaccdb ダイアログ開く
Win7+製品32bitでaccdr 実行時エラー
Win7+製品32bitでaccde ダイアログ開く
Win7+製品64bitでaccdb ダイアログ開く
Win7+製品64bitでaccdr 実行時エラー
Win7+製品64bitでaccde ダイアログ開く
Win7+Runt64bitでaccdb 実行時エラー/ダイアログ開かない/終了する
Win7+Runt64bitでaccdr 実行時エラー/ダイアログ開かない/終了する
Win7+Runt64bitでaccde イベント時エラー発生/ダイアログ開かない/終了しない
XPSP3+Runtimeでaccdb 実行時エラー/ダイアログ開かない/終了する
XPSP3+Runtimeでaccdr 実行時エラー/ダイアログ開かない/終了する
XPSP3+Runtimeでaccde イベント時エラー発生/ダイアログ開かない/終了しない
<<追試>>
XPSP3+Runtime+2010std 2010stdなしと同じ
XPSP3+Runtime+Office2007 上に同じ
'参照設定:Microsoft Office 14.0 Library Sub OpenApplicationOptionsDialog() CommandBars.ExecuteMso ("ApplicationOptionsDialog") End Sub
セキュリティセンターを開く
Win7+製品32bitでaccdb ダイアログ開く
Win7+製品32bitでaccdr 動作停止で異常
Win7+製品32bitでaccde ダイアログ開く
Win7+製品64bitでaccdb ダイアログ開く
Win7+製品64bitでaccdr 動作停止で異常
Win7+製品64bitでaccde ダイアログ開く
Win7+Runt64bitでaccdb ダイアログ開かない
Win7+Runt64bitでaccdr ダイアログ開かない
Win7+Runt64bitでaccde ダイアログ開かない
XPSP3+Runtimeでaccdb ダイアログ開かない
XPSP3+Runtimeでaccdr ダイアログ開かない
XPSP3+Runtimeでaccde ダイアログ開かない
'参照設定:Microsoft Office 14.0 Library Sub OpenSecurityCenterDialog() CommandBars.FindControl(msoControlButton, 3627).Execute End Sub
<<追試>>
XPSP3+Runtime+Office2010stdで3つ拡張子とも終了してしまう
XPSP3+Runtime+Office2007では、ダイアログは開かないだけ、終了はしない。
よく考えてみれば、2010で作成したファイルを使用しているので、ライブラリ参照に原因があるのかもしれん。
幾分かは不具合っぽく思えるけど、いずれにせよセキュリティセンターとオプションは、ランタイム環境で開くことができない状況ということ。
最新取りまとめメモ
ラベル:
access 2010,
Runtime
2010/05/13
access2010 データマクロ BeforeChange時検証
フィールドの入力規則→検証で、以前より便利にはなってはいるけれども、どうせならデータマクロでやってみるかと。
式ビルダとかにでてこないからデータマクロで使えなさそうな関数があるんだけど、実際のところ認識し使用はできる。Webに対応してないってことが要因と思われ、クライアントアプリとしては稼働する状態 |
Sub test() On Error GoTo ErrLbl Dim cn As New ADODB.Connection Set cn = Application.CurrentProject.Connection cn.Execute "insert into t_02 (F_txt,F_num,F_datetime) values ('',null,#2009/12/31#)" Done: cn.Close Set cn = Nothing Exit Sub ErrLbl: MsgBox "ADOでInsert" & vbCrLf & Err.Description, vbExclamation Resume Done End SubADOで操作してメッセージだせなくはない。
ラベル:
access 2010,
データマクロ
登録:
投稿 (Atom)