以下は、カンマ区切りのテキストファイル(CSVファイル)から、データを読み込んで、Accessデータベースのテーブルにレコードを追加するマクロ(VBA)のサンプルです。Access2003 で試しました。
------------------------------------
Sub read_csv_file()
Set Db = DBEngine.Workspaces(0).Databases(0)
Set Tbl = Db.OpenRecordset("価格リサーチ結果", DB_OPEN_TABLE)
strFileName = "c:\users\xxxxxx\dropbox\pl\nttx.csv"
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objfile = objFileSystem.OpentextFile(strFileName)
Do Until objfile.atendofstream
strRecBuff = objfile.readline
aaa = Split(strRecBuff, ",")
katakaku = aaa(0)
urine = aaa(2)
PRICE = aaa(3)
HREF = aaa(4)
hinmei = aaa(6)
Tbl.AddNew
Tbl.仕入れ値 = PRICE
Tbl.販売値 = urine
Tbl.品名 = hinmei
Tbl.型格 = katakaku
Tbl.購入URL = HREF
Tbl.日付 = Now()
Tbl.Update
Loop
objfile.Close
End Sub
2015年3月28日土曜日
2015年3月23日月曜日
加齢黄斑変性について(NHKチョイスより)
たしか3月14日(土)だったと思いますが、NHKのチョイスというような名前の番組で、加齢黄斑変性について放送されていました。
原因は、黄斑の部分に弱い血管ができてしまう、(弱い血管がはえやすくなる)、その部分から水がもれたり出血をおこしたりすることのようです。
タバコや食べ物の影響があります。
加齢黄斑変性は1998年には、37万人だったのが、2012年には89万人となっており増えています。初期であれば治療できます。
加齢黄斑変性は欧米では、中途失明理由の第一位となっています。
もっとも有効な治療法は、抗VEGF薬で、血管ができるのをふせいだりします。ただし脳こうそくの危険がある場合には使用できません。
目に注射を行なうもので、治療は続けないといけません。1回につき5万円かかります。
眼底カメラで前兆がわかります。
網膜の細胞が出すドルーゼンという物質が 目の奥にたまると新しい血管ができてくるので加齢黄斑変性になりやすくなります。
眼底検査は、3割負担で1,200円程度です。網膜の断面を見るOCT検査は600円です。造影は、1350円です。
食事とかタバコが影響します。
ドルーゼンがたまると見え方にゆがみがでてきます。
緑黄色野菜をバランスよくとることにより、ドルーゼンの発生をおさえることができます。
緑黄色野菜が持つ抗酸化作用によります。
サプリメント、ビタミンA、C、E、ルテイン、亜鉛などを摂取することも大事です。
食べるとよい野菜としては
ほうれん草
小松菜
ブロッコリー
にんじん
かぼちゃ
パブリカ
油と一緒にとるとルテインの吸収率が上がります。
肉をとると逆によくありません。
βカロチンの取りすぎはあまりよくない場合も
また禁煙が大事です。
視界がゆがむ、ぼやける、黒い点が見えるなどの場合には要注意です。
原因は、黄斑の部分に弱い血管ができてしまう、(弱い血管がはえやすくなる)、その部分から水がもれたり出血をおこしたりすることのようです。
タバコや食べ物の影響があります。
加齢黄斑変性は1998年には、37万人だったのが、2012年には89万人となっており増えています。初期であれば治療できます。
加齢黄斑変性は欧米では、中途失明理由の第一位となっています。
もっとも有効な治療法は、抗VEGF薬で、血管ができるのをふせいだりします。ただし脳こうそくの危険がある場合には使用できません。
目に注射を行なうもので、治療は続けないといけません。1回につき5万円かかります。
眼底カメラで前兆がわかります。
網膜の細胞が出すドルーゼンという物質が 目の奥にたまると新しい血管ができてくるので加齢黄斑変性になりやすくなります。
眼底検査は、3割負担で1,200円程度です。網膜の断面を見るOCT検査は600円です。造影は、1350円です。
食事とかタバコが影響します。
ドルーゼンがたまると見え方にゆがみがでてきます。
緑黄色野菜をバランスよくとることにより、ドルーゼンの発生をおさえることができます。
緑黄色野菜が持つ抗酸化作用によります。
サプリメント、ビタミンA、C、E、ルテイン、亜鉛などを摂取することも大事です。
食べるとよい野菜としては
ほうれん草
小松菜
ブロッコリー
にんじん
かぼちゃ
パブリカ
油と一緒にとるとルテインの吸収率が上がります。
肉をとると逆によくありません。
βカロチンの取りすぎはあまりよくない場合も
また禁煙が大事です。
視界がゆがむ、ぼやける、黒い点が見えるなどの場合には要注意です。
2015年3月21日土曜日
LibreOffice のマクロ
以下は、昨日に作成したLibreOffice用(Windows上で動作)のマクロです。
私は、Access2003 は持っていますが、Excel は持っておらず、Excel の代わりにLibreOffice やOpenOfficeの Calc を使用しています。LibreOffice の Calc のデータを、Access のデータベースにコピーするためのマクロです。 Calc ファイルの、2列目、3列目、4列目のデータを、サンプルデータベース.mdb というAccessデータベースのサンプルテーブルにコピーしています。入力するデータは、日付、JANコード、商品名です。同じJANコードのレコードがすでに、Accessデータベース側に存在する場合には、メッセージを出力し、コピーは行われません。
なお、以前にも LibreOffice のマクロでAccessデータベースにレコードを入力するサンプルを紹介させていただいたことはありました。
sub adodb_put_mdb2
Dim hiduke as String
Dim jancode as String
Dim shouhinmei as String
Dim j as Integer
Dim kison as Boolean
j = inputbox("行数を入れてください","はじめる行数","3")
j = j-1
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\Users\hiroshi\Dropbox\doc\mdb\サンプルデータベース.mdb"
rs.Open "select * from サンプルテーブル", conn ,3,3
'
do while j < 2000
hiduke= ThisComponent.Sheets.getByName("3月").getCellByPosition(1,j).string
jancode= ThisComponent.Sheets.getByName("3月").getCellByPosition(2,j).string
shouhinmei= ThisComponent.Sheets.getByName("3月").getCellByPosition(3,j).string
' msgbox jancode
if jancode = "" then
exit do
end if
rs.Movefirst()
kison = false
do until rs.EOF
'msgbox rs.Fields.Item("JANコード").value
if jancode = rs.Fields.Item("JANコード").Value then
msgbox "既にあります。" & jancode & rs.Fields.Item("商品名").value
kison = true
'& rs.Fields.Item("日付").value
end if
rs.Movenext()
loop
if kison = false then
rs.AddNew
rs.Fields.Item("日付").value=hiduke
rs.Fields.Item("JANコード").value=jancode
rs.Fields.Item("商品名").value=shouhinmei
rs.Update
end if
j = j+1
loop
rs.Close
conn.Close
msgbox "end"
end sub
私は、Access2003 は持っていますが、Excel は持っておらず、Excel の代わりにLibreOffice やOpenOfficeの Calc を使用しています。LibreOffice の Calc のデータを、Access のデータベースにコピーするためのマクロです。 Calc ファイルの、2列目、3列目、4列目のデータを、サンプルデータベース.mdb というAccessデータベースのサンプルテーブルにコピーしています。入力するデータは、日付、JANコード、商品名です。同じJANコードのレコードがすでに、Accessデータベース側に存在する場合には、メッセージを出力し、コピーは行われません。
なお、以前にも LibreOffice のマクロでAccessデータベースにレコードを入力するサンプルを紹介させていただいたことはありました。
sub adodb_put_mdb2
Dim hiduke as String
Dim jancode as String
Dim shouhinmei as String
Dim j as Integer
Dim kison as Boolean
j = inputbox("行数を入れてください","はじめる行数","3")
j = j-1
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\Users\hiroshi\Dropbox\doc\mdb\サンプルデータベース.mdb"
rs.Open "select * from サンプルテーブル", conn ,3,3
'
do while j < 2000
hiduke= ThisComponent.Sheets.getByName("3月").getCellByPosition(1,j).string
jancode= ThisComponent.Sheets.getByName("3月").getCellByPosition(2,j).string
shouhinmei= ThisComponent.Sheets.getByName("3月").getCellByPosition(3,j).string
' msgbox jancode
if jancode = "" then
exit do
end if
rs.Movefirst()
kison = false
do until rs.EOF
'msgbox rs.Fields.Item("JANコード").value
if jancode = rs.Fields.Item("JANコード").Value then
msgbox "既にあります。" & jancode & rs.Fields.Item("商品名").value
kison = true
'& rs.Fields.Item("日付").value
end if
rs.Movenext()
loop
if kison = false then
rs.AddNew
rs.Fields.Item("日付").value=hiduke
rs.Fields.Item("JANコード").value=jancode
rs.Fields.Item("商品名").value=shouhinmei
rs.Update
end if
j = j+1
loop
rs.Close
conn.Close
msgbox "end"
end sub
ラベル:
Access,
Excel,
LibreOffice,
Windows
2015年3月13日金曜日
ucanaccess を Android アプリ開発で使用
Javaでマイクロソフト社のAccessにアクセスするライブラリとしてucanaccessというライブラリがあります。このucanaccess を Android アプリ開発で使用しています。
Android上からAccessのmdbファイルやaccdbファイルの内容を見たり編集したりできるアプリの開発をしているのです。
ucanaccessを使ってレコードを追加するサンプル
しかしながら、java でプログラムを作ってPC上でできる操作が、Androidアプリ上でやろうとするとうまくいかないことがあることがわかりました。
ucanacess を使って、レコードの削除や編集をしようとしても、そのテーブルに日付時刻型のフィールドがある場合にエラーとなってしまうようです。理由はわかりません。
このことから、日付時刻型のフィールドを含むテーブルのレコードを削除や更新をするためには、ucanaccess ではなくて jackcess というライブラリを使用するしかないのだと考えています。
Android上からAccessのmdbファイルやaccdbファイルの内容を見たり編集したりできるアプリの開発をしているのです。
ucanaccessを使ってレコードを追加するサンプル
しかしながら、java でプログラムを作ってPC上でできる操作が、Androidアプリ上でやろうとするとうまくいかないことがあることがわかりました。
ucanacess を使って、レコードの削除や編集をしようとしても、そのテーブルに日付時刻型のフィールドがある場合にエラーとなってしまうようです。理由はわかりません。
このことから、日付時刻型のフィールドを含むテーブルのレコードを削除や更新をするためには、ucanaccess ではなくて jackcess というライブラリを使用するしかないのだと考えています。
登録:
投稿 (Atom)