Yahoo!ショッピング

2019年12月02日

Access 添付ファイル型フィールドの操作

ACCESSの添付ファイル型フィールドは便利だが癖がある。
VBAを使って添付ファイルの削除や追加をするサンプルをメモしておく。
Public Sub 添付ファイル型フィールド更新テスト()
Dim intField As Integer

Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset

Dim fileFrom As DAO.Recordset2
Dim fileTo As DAO.Recordset2

Dim result As Boolean

Set rs1 = CurrentDb.OpenRecordset("select * from テーブル1 where ID=1")
Set fileFrom = rs1!フィールド1.Value

Set rs2 = CurrentDb.OpenRecordset("select * from テーブル2 where ID=1")
Set fileTo = rs2!フィールド2.Value

rem 受け側の添付ファイルをいったんクリアする
With fileTo
Do Until .EOF
.Delete
.MoveNext
Loop
.Close
End With

Set rs2 = CurrentDb.OpenRecordset("select * from テーブル2 where ID=1")
Set fileTo = rs2!フィールド2.Value

rs2.Edit

rem レコード終了まで処理
Do Until fileFrom.EOF
rem 追加する
fileTo.AddNew
For intField = 0 To fileFrom.Fields.Count - 1

Debug.Print fileFrom.Fields("FileName")
Debug.Print fileFrom.Fields("FileType")

rem フィールドが更新可能な場合
If fileFrom.Fields(intField).DataUpdatable Then
rem データがNullではない場合
If Not IsNull(fileFrom.Fields(intField).Value) Then
fileTo.Fields(intField).Value = fileFrom.Fields(intField).Value
End If
End If

Next
fileTo.Update
fileFrom.MoveNext
Loop

fileTo.Close
fileFrom.Close

rs2.Update

rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing

End Sub


Access と SharePoint の添付ファイル型をDAOで相互に更新する場合は書き方を少し変える。

rem フィールドが更新可能な場合
rem If fileFrom.Fields(intField).DataUpdatable Then
rem データがNullではない場合
If Not IsNull(fileFrom.Fields(intField).Value) Then
Debug.Print fileFrom.Fields(intField).Name
If fileFrom.Fields(intField).Name <> "FileURL" And fileFrom.Fields(intField).Name <> "FileFlags" And fileFrom.Fields(intField).Name <> "FileTimeStamp" And fileFrom.Fields(intField).Name <> "FileType" Then
fileTo.Fields(intField).Value = fileFrom.Fields(intField).Value
End If
End If
rem End If
posted by 秘構竜 at 23:21 | Comment(0) | Office365

2019年11月26日

動的にSQLを書き換える

自分用メモ
Function domainKensaku()
Dim strsql As String
Dim dda As Date, ddb As Date
dda = #1/1/2016#
Do While dda < #11/1/2019#
ddb = DateAdd("m", 1, dda) - 1
strsql = "select * from テーブル1 where 更新日 between #" & dda & "# and #" & ddb & "#"
Debug.Print strsql
dda = DateAdd("m", 1, dda)
Loop
End Function

posted by 秘構竜 at 23:01 | Comment(0) | 技術系

2019年11月07日

Accessのテキストボックスの内容をテキストファイルに書き出す

テキストボックスの内容をテキストファイルに書き出すサンプルです。
FileSystemObjectとかを使わなくても簡単にできますね。

Sub SampleMakeText()
Dim datFile As String
datFile = CurrentProject.Path & "\data.txt"
Open datFile For Output As #1
Print #1, Me.テキスト0.Value
Close #1
End Sub


以下はテキストファイルを読み込んでテキストボックスに格納する
Sub SampleOpenTxt()
Dim strPath As String
strPath = CurrentProject.Path & "\data.txt"
Dim strText As String
Open strPath For Input As #1
Dim i As Long
Dim strLine As String
Do Until EOF(1)
Line Input #1, strLine
strText = strText & strLine
Loop
Close #1
Me.テキスト0.Value = strText
End Sub
posted by 秘構竜 at 21:48 | Comment(0) | Office365

【温泉】ホテル・旅館ランキング(全国)
秘構竜の日記」の先頭へ