ACCESSからSQLServerに移行する際、テキスト型とメモ型について調査しました。
Microsoftサポートサイトより引用
テキストまたはテキストと数値の組み合わせによるデータを格納する場合は、テキスト型とメモ型の 2 種類のフィールドのデータ型 (フィールドのデータ型 : どのようなデータを格納できるかを決めるフィールドの特性。たとえば、テキスト型のフィールドには、テキストまたは数値で構成されるデータを格納できますが、数値型のフィールドには、数値データしか格納できません。)を使用できます。
テキスト型フィールドは、名前、住所などのデータ、および電話番号、パート番号、郵便番号などの計算する必要のない数字データを格納するために使用します。このフィールドには 255 文字までのデータを格納できますが、既定のフィールド サイズは 50 文字に設定されています。テキスト型フィールドに入力できる最大文字数は、”FieldSize/フィールドサイズ” プロパティで設定します。
メモ型フィールドは、255 文字を超えるデータを格納する場合に使用します。このフィールドには 65,536 文字までのデータを格納できます。書式が設定されたテキストや長い文書を格納する場合は、メモ型フィールドではなく OLE オブジェクト型フィールドを作成します。
テキスト型とメモ型のフィールドには、入力した文字だけが格納されます。通常以外の位置にあるスペースは格納されません。
テキスト型またはメモ型のフィールドでは、値を並べ替えたりグループ化したりできます。ただし、メモ型フィールドについては、最初の 255 文字だけを使用して、並べ替えまたはグループ化が行われます。
[2017.03.28追記]
ACCESSからSQLServerに移行した場合、メモ型フィールドはnvarchar(MAX)
で対応することになるかと思いますが、そうするとデータの編集ができなくなるようなのでご注意ください。
Private Sub リンク更新_Click() On Error GoTo Err_リンク更新 If MsgBox("リンクテーブルを更新します。よろしいですか?", vbYesNo + vbExclamation + vbDefaultButton2, "更新") = vbYes Then Dim db As Database, tdfLinked As TableDef Dim TableName As String, ErrName As String Set db = CurrentDb ErrName = "" TableName = "table1" 'テーブル名を指定する Set tdfLinked = db.TableDefs(TableName) tdfLinked.Connect = ";DATABASEdb1.mdb" tdfLinked.RefreshLink Set db = Nothing If Len(ErrName) > 0 Then MsgBox ErrName & "のテーブルは更新できませんでした。" Else MsgBox "終了しました。", , "確認" End If End If Exit Sub Err_リンク更新: ErrName = ErrName & " " & TableName Resume Next End Sub
Filter機能では条件の複数指定ができないようなので、代わりにApplyFilterを使用
構文 expression.ApplyFilter(FilterName, WhereCondition)
設定項目 | 内容 |
---|---|
expression | DoCmdオブジェクト[省略不可] |
FilterName | フィルタ名またはクエリ名を文字列式で指定[省略可能] |
WhereCondition | SQL文のWHERE句を文字列式で指定[省略可能] |
例)
'日付が2003年1月1日から2003年12月31日までのデータを抽出 DoCmd.ApplyFilter , "sales_date between #2003/01/01# and #2003/12/31#" フィルターを解除 Me.FilterOn = False
ACCESSのMDBファイルを使用していて、何らかのプロシージャを実行したとき、
未定義関数Dirがあります等のエラーが発生することがある。
【解決法】
レジストリのSandboxModeの値を2にする
【操作】
スタートからファイル名を指定して実行を選択し、
「regedit」と入力しEnter。
レジストリエディタが起動するので、検索で「SandBoxMode」を探すか
以下のパスを辿って見つけて値を変更してください。
\\HKEY_LOCAL_MACHINE\Software\Microsoft\Jet4.0\engines\SandboxMode
※これで解決しない場合、他に考えられる原因はOfficeのアップデートを
適用していない場合があります。
その場合、アップデートすると解決することがあります。
2019年9月2日追記
通常、レジストリを検索すれば「SandBoxMode」が見つかると思うのですが、特定のバージョンでは見つからない場合があるようです。
今回見つからなかったのはMicrosoft Office 2016の場合でした。
この場合、新たに値を作成すればうまくいきました。
Office 2016の場合は以下のようにパスを辿ってください。
\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Access Connectivity Engine\Engines
そしてEnginesの中に値を作成します。
レジストリエディタの右側のボックスを右クリックし、[新規]-[DWORD(32ビット)値]と選択します。
名前は「SandBoxMode」と入力し、値に2を設定します。
他のバージョンについては以下のURLを参考にしてください。
サンドボックス-モードのオン-オフを切り替えてマクロを無効にする