Database Events (2)

前回、データベースを作成し、保存しました。今度は、データを追加していきます。データは、record と field で表現します。record が 行になり、field が列になります。最初に record を追加し、その record に field を作成し、データを追加していくという形になります。

Script Editor で開く

set theFolder to path to documents folder as Unicode text
set databaseFile to POSIX path of (theFolder & "データベース:MyDatabase.dbev")

tell application "Database Events"
    tell database databaseFile
        set newRecord to make new record with properties {name:"1"}
        save
    end tell
end tell

make で新しくオブジェクトを作成するとき、Database Events では at オプションが(なぜか)利用できません。ですので、データベースに tell して、その中で新しい record を作成します。record には、name 属性と id 属性があります。id 属性は、一意のもので Database Events が自動的に付加します。変更はできません。name 属性は、行の名前に当たるものですが、これは field "name" と同じものです。

分かりにくいですね。record を新しく作成したとき、既にひとつだけ field が追加された状態で作成されます。それが field "name" です。name という列がひとつだけある表と考えるといいでしょうか。record を作成し、name 属性を設定しているのですが、実際は field "name" に値を設定しているのです。この辺りが少し分かりにくいかもしれません。

field を作成するのも database や record を作成するときと同じ感じです。では、次のようなデータ(都道府県の県庁所在地と人口)をデータベースに追加してみます。

Script Editor で開く

set theData to {{|name|:"北海道", capital:"札幌", population:5691737}, {|name|:"青森県", capital:"青森", population:1504358}, {|name|:"岩手県", capital:"盛岡", population:1427987}, {|name|:"宮城県", capital:"仙台", population:2340145}, {|name|:"秋田県", capital:"秋田", population:1209196}, {|name|:"山形県", capital:"山形", population:1249165}, {|name|:"福島県", capital:"福島", population:2138605}, {|name|:"茨城県", capital:"水戸", population:2990472}, {|name|:"栃木県", capital:"宇都宮", population:1998186}, {|name|:"群馬県", capital:"前橋", population:2013753}, {|name|:"埼玉県", capital:"浦和", population:6838164}, {|name|:"千葉県", capital:"千葉", population:5863182}, {|name|:"東京都", capital:"東京", population:11680490}, {|name|:"神奈川県", capital:"横浜", population:8324355}, {|name|:"新潟県", capital:"新潟", population:2487980}, {|name|:"富山県", capital:"富山", population:1126782}, {|name|:"石川県", capital:"金沢", population:1175511}, {|name|:"福井県", capital:"福井", population:828087}, {|name|:"山梨県", capital:"甲府", population:883847}, {|name|:"長野県", capital:"長野", population:2299468}, {|name|:"岐阜県", capital:"岐阜", population:2108530}, {|name|:"静岡県", capital:"静岡", population:3754758}, {|name|:"愛知県", capital:"名古屋", population:6875723}, {|name|:"三重県", capital:"津", population:1855860}, {|name|:"滋賀県", capital:"大津", population:1316331}, {|name|:"奈良県", capital:"奈良", population:1447496}, {|name|:"和歌山県", capital:"和歌山", population:1094120}, {|name|:"京都府", capital:"京都", population:2561860}, {|name|:"大阪府", capital:"大阪", population:8624045}, {|name|:"兵庫県", capital:"神戸", population:5500842}, {|name|:"岡山県", capital:"岡山", population:1958385}, {|name|:"鳥取県", capital:"鳥取", population:618868}, {|name|:"島根県", capital:"松江", population:765980}, {|name|:"広島県", capital:"広島", population:2876405}, {|name|:"山口県", capital:"山口", population:1540354}, {|name|:"徳島県", capital:"徳島", population:835781}, {|name|:"香川県", capital:"高松", population:1035579}, {|name|:"愛媛県", capital:"松山", population:1517190}, {|name|:"高知県", capital:"高知", population:821199}, {|name|:"福岡県", capital:"福岡", population:4955439}, {|name|:"佐賀県", capital:"佐賀", population:883960}, {|name|:"長崎県", capital:"長崎", population:1537280}, {|name|:"大分県", capital:"大分", population:1238496}, {|name|:"熊本県", capital:"熊本", population:1870473}, {|name|:"宮崎県", capital:"宮崎", population:1188341}, {|name|:"鹿児島県", capital:"鹿児島", population:1790437}, {|name|:"沖縄県", capital:"那覇", population:1313804}}

tell application "Database Events"
    make new database with properties {name:"MyDatabase"}
    tell database "MyDatabase"
        repeat with thisItem in theData
            set thisItem to contents of thisItem
            set theRecord to make new record with properties {name:|name| of thisItem}
            tell theRecord
                make new field with properties {name:"capital", value:capital of thisItem}
                make new field with properties {name:"population", value:population of thisItem}
            end tell
        end repeat
        save
    end tell
end tell

やはり、保存はきちんと行っておきます。ここでは record の name 属性に県名を指定しています。

0 件のコメント :

コメントを投稿