2015年3月28日土曜日

Access のVBAのサンプル

以下は、カンマ区切りのテキストファイル(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月23日月曜日

加齢黄斑変性について(NHKチョイスより)

たしか3月14日(土)だったと思いますが、NHKのチョイスというような名前の番組で、加齢黄斑変性について放送されていました。


原因は、黄斑の部分に弱い血管ができてしまう、(弱い血管がはえやすくなる)、その部分から水がもれたり出血をおこしたりすることのようです。

タバコや食べ物の影響があります。

加齢黄斑変性は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

2015年3月13日金曜日

ucanaccess を Android アプリ開発で使用

Javaでマイクロソフト社のAccessにアクセスするライブラリとしてucanaccessというライブラリがあります。このucanaccess を Android アプリ開発で使用しています。

Android上からAccessのmdbファイルやaccdbファイルの内容を見たり編集したりできるアプリの開発をしているのです。


ucanaccessを使ってレコードを追加するサンプル

しかしながら、java でプログラムを作ってPC上でできる操作が、Androidアプリ上でやろうとするとうまくいかないことがあることがわかりました。


ucanacess を使って、レコードの削除や編集をしようとしても、そのテーブルに日付時刻型のフィールドがある場合にエラーとなってしまうようです。理由はわかりません。


このことから、日付時刻型のフィールドを含むテーブルのレコードを削除や更新をするためには、ucanaccess ではなくて jackcess というライブラリを使用するしかないのだと考えています。








100円ショップで LANケーブルを購入

100円ショップで、またLANケーブルを購入してしまいました。