"part / --asprimary --bytes-per-inode=4096 --fstype=""ext3"" --ondisk=sda --size=2048",,,,,,,,,,,,
"part /boot --asprimary --bytes-per-inode=4096 --fstype=""ext3"" --ondisk=sda --size=512",,,,,,,,,,,,
"part /opt --bytes-per-inode=4096 --fstype=""ext3"" --ondisk=sda --size=1025",,,,,,,,,,,,
"part /var --bytes-per-inode=4096 --fstype=""ext3"" --ondisk=sda --size=1026",,,,,,,,,,,,
"#part /etc --bytes-per-inode=4096 --fstype=""ext3"" --ondisk=sda --size=1027",,,,,,,,,,,,
"#part /home --bytes-per-inode=4096 --fstype=""ext3"" --ondisk=sda --size=1028",,,,,,,,,,,,
"part swap --bytes-per-inode=4096 --fstype=""swap"" --ondisk=sda --size=1000",,,,,,,,,,,,
,,,,,,,,,,,,type
,/,1024,2048,2097152,,2048,,2030768,,1,250,83
,/boot,1024,512,524288,,512,,505604,,251,313,83
,/opt,1024,1025,1049600,,1024,,1019208,,314,438,83
,,,,,,,,,,439,2610,5
,/var,1024,1026,1050624,,1536,,1524940,,439,626,83
,/etc,1024,1027,1051648,,2560,,,,627,938,83
,/home,1024,1028,1052672,,3072,,3050092,,939,1312,83
,swap,1024,1000,1024000,,1000,,,,1313,1435,82

,,,512,,,,,,,1024
sda1,boot,522081,1019.689453,,1024,,boot,522081,,509.8447266
sda2,/,2096482,4094.691406,,1,1536,/,2096482,,2047.345703
sda3,var,1052257,2055.189453,,2,2048,home,3148740,,3074.941406
sda4,,17293972,33777.28906,,3,2560,,,,0
sda5,opt,1052226,2055.128906,,4,3072,var,1574338,,1537.439453
sda6,swap,1020096,1992.375,,5,3584,opt,1052226,,1027.564453
,,,,,6,4096,swap,1020096,,996.1875
,,,,,7,4608,,,,
,,,,,8,5120,,,,
 ks3.cfg
---------------------------------------------
#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Use graphical install
graphical
# Firewall configuration
firewall --enabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Installation logging level
logging --level=info
# Use CDROM installation media
cdrom
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
#Root password
rootpw --iscrypted $1$AcBq0OyQ$gZm05wEaZx7hWCVG.37HP1

# SELinux configuration
selinux --enforcing
# System timezone
timezone  America/New_York
# Install OS instead of upgrade
install
# X Window System configuration information
xconfig  --defaultdesktop=GNOME --depth=8 --resolution=640x480
# Disk partitioning information
part / --asprimary  --fstype="ext3" --ondisk=sda --size=2048
part /boot --asprimary  --fstype="ext3" --ondisk=sda --size=512
part /opt --fstype="ext3" --ondisk=sda --size=1024
part /var --fstype="ext3" --ondisk=sda --size=1536
#part /etc --fstype="ext3" --ondisk=sda --size=2560
# Disk partitioning information
part / --asprimary  --fstype="ext3" --ondisk=sda --start=1 --end=250
part /boot --asprimary  --fstype="ext3" --ondisk=sda --start=251 --end=313
part /opt --fstype="ext3" --ondisk=sda --start=314 --end=438
#part --ondisk=sda --type=5 --start=439 --end=2610
part /var --fstype="ext3" --ondisk=sda --start=439 --end=626
#part /etc --fstype="ext3" --ondisk=sda --start=627 --end=938
part /home --fstype="ext3" --ondisk=sda --start=939 --end=1312
part swap --fstype="swap" --ondisk=sda --start=1313 --end=1435
# Disk partitioning information
part / --asprimary  --fstype="ext3" --ondisk=sda --start=1 --end=250 --label=/
part /boot --asprimary  --fstype="ext3" --ondisk=sda --start=251 --end=313 --label=/boot
part /opt --fstype="ext3" --ondisk=sda --start=314 --end=438 --label=/opt
#part --ondisk=sda --type=5 --start=439 --end=2610
part /var --fstype="ext3" --ondisk=sda --start=439 --end=626 --label=/var
part /tmp --fstype="ext3" --ondisk=sda --start=627 --end=938 --label=/tmp
part /home --fstype="ext3" --ondisk=sda --start=939 --end=1312 --label=/home
part swap --fstype="swap" --ondisk=sda --start=1313 --end=1435
[root@localhost ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              1945132   1090744    753984  60% /
/dev/sda7              2909956     70028   2689724   3% /home
/dev/sda6              2427580     69300   2232976   4% /tmp
/dev/sda5              1462700     57580   1329620   5% /var
/dev/sda3               972564     17656    904708   2% /opt
/dev/sda1               490020     16480    448238   4% /boot
tmpfs                   517352         0    517352   0% /dev/shm
[root@localhost ~]# fdisk /dev/sda
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *         251         313      506047+  83  Linux
/dev/sda2               1         250     2008093+  83  Linux
/dev/sda3             314         438     1004062+  83  Linux
/dev/sda4             439        2610    17446590    5  Extended
/dev/sda5             439         626     1510078+  83  Linux
/dev/sda6             627         938     2506108+  83  Linux
/dev/sda7             939        1312     3004123+  83  Linux
/dev/sda8            1313        1435      987966   82  Linux swap / Solaris

Partition table entries are not in disk order
sda1	boot	251	313
sda2	/	1	250
sda3	opt	314	438
sda4			
sda5	var	439	626
sda6	tmp	627	938
sda7	home	939	1312
sda8	swap	1313	1435

日付の入力チェック

テキストボックスで年月日で日付を入力する時、月まで入れて日を入力せずに
Format(文字列,"yyyyy/mm/dd")でフォーマットすると、勝手に1日が設定されてしまいます。
そこで、日が入力されていない事をチェックする必要があります。
で、splitで文字列を分割して、配列のサイズを確認する方法を考えました。
肝はuBound関数です。

Dim str() As String
Dim cnt As Integer
str = Split(Me.txt振替日, "/", , vbBinaryCompare)
cnt = UBound(str)
MsgBox (cnt)
If cnt < 2 Then
MsgBox "error 2"
Else
If str(2) = "" Then
MsgBox "error 1 "
End If
End If
End Sub

アクセスのフォームエラー

Accessのフォームエラー一覧

http://dbhikaku.web.fc2.com/jet_error.html

フォームエラーの回避は

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    Select Case DataErr
        Case 3163
            MsgBox "入力文字数が長すぎます。"
            Response = acDataErrContinue 'Accessエラーダイアログを表示しない
        Case 3341
            MsgBox "個人コードが一致しませんよぉ。"
            Response = acDataErrContinue 'Accessエラーダイアログを表示しない
        Case 2116
            Response = acDataErrContinue 'Accessエラーダイアログを表示しない
        Case Else
            Response = acDataErrDisplay 'Accessエラーダイアログ表示
    End Select
End Sub

Access2007 Runtimeで、セキュリティの問題が発生したら
http://macoto.blog.so-net.ne.jp/2009-03-21

サンプルコード

サブフォー

Option Compare Database

Private Sub Form_AfterUpdate()
'    Set rs = Me.Recordset.Clone
'    rs.Edit
'    rs.振替日 = Form_フォーム1.txt振替日
'    If IsNull(rs.登録日時) Then
'        rs.登録日時 = Now()
'    End If
'    rs.更新日時 = Now()
'    rs.Update
'    Set rs = Nothing
'    Me.Recalc
End Sub


Private Sub 金額_BeforeUpdate(Cancel As Integer)
 MsgBox "befor金額"
 Dim cr As Integer
 cr = Me.CurrentRecord
 Me.振替日 = Form_フォーム1.txt振替日
 If IsNull(Me.登録日時) Then
        Me.登録日時 = Now()
 End If
 Me.更新日時 = Now()
' Me.Recalc

End Sub

フォーム

Option Compare Database

Private Sub btn検索_Click()
On Error GoTo Err_btn検索_Click
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim sql As String

    Set db = CurrentDb
    Set rs = db.OpenRecordset("T_ヘッダー", dbOpenDynaset)
    
    rs.Filter = "委託者コード='" & txt委託者コード & "'"
    Set rs = rs.OpenRecordset()
    
    If rs.RecordCount = 0 Then
        If MsgBox("該当レコードはありません。追加しますか?", vbOKCancel) Then
            If DCount("委託者コード", "自動集金先", "委託者コード='" & txt委託者コード & "'") = 0 Then
                MsgBox ("自動集金先にありません")
                GoTo Exit_btn検索_Click
            Else
                sql = ""
                sql = "INSERT INTO T_ヘッダー (委託者コード,振替日,入力件数,入力金額) values ('" & txt委託者コード & "','" & txt振替日 & "','" & txt入力件数 & "','" & txt入力金額 & "');"
                db.Execute (sql)
                txt入力件数 = 0
                txt入力金額 = 0
                sql = ""
                sql = "select * from Q_結合テーブル where 委託者コード = '" & txt委託者コード & "';"
                Form_クエリ1のサブフォーム.RecordSource = sql
            End If
        End If
    Else
        txt振替日 = rs!振替日
        txt入力金額 = rs!入力金額
        txt入力件数 = rs!入力件数
        sql = ""
        sql = "select * from Q_結合テーブル where 委託者コード = '" & txt委託者コード & "';"
        Form_クエリ1のサブフォーム.RecordSource = sql
        
    End If
    
'    DoCmd.GoToRecord , , acFirst

    
    
'    Screen.PreviousControl.SetFocus
'    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

Exit_btn検索_Click:
    Set rs = Nothing
    Set db = Nothing
    Exit Sub

Err_btn検索_Click:
    MsgBox Err.Description
    Resume Exit_btn検索_Click
    
End Sub


Private Sub txt委託者コード_AfterUpdate()
'    Dim rs2 As DAO.Recordset
'
'    Set rs2 = Form_フォーム1.Recordset.Clone
'    Do Until rs2.EOF
'        If Me.txt委託者コード = rs2![委託者コード] Then
'            Me.txt登録金額 = Me.CurrentRecord
'            GoTo exit_loop
'        Else
'            rs2.MoveNext
'        End If
'    Loop
'exit_loop:
'    Me.Recalc
'    Me.クエリ1のサブフォーム.Requery

End Sub

http://www.accessclub.jp/dao/16.html
http://www.sanryu.net/acc/tips/tips97.htm
http://www.accessclub.jp/samplefile/samplefile_185.htm
http://ww3.tiki.ne.jp/~kaya/Ac_tips.html#Tips8_001
http://www.accessclub.jp/bbs3/0261/superbeg81198.html
http://www.geocities.jp/cbc_vbnet/kisuhen/docmd.html
http://www.geocities.jp/cbc_vbnet/DAO/database.html#form

合計金額
サブフォーム(クエリ1のサブフォーム)のフッターに
テキスト22
=sum([金額])

メインフォームの金額欄に
=[クエリ1のサブフォーム].[Form].[テキスト22]

VBAだとこんな感じ。固定長に切る

秀丸で頑張るのもなんなので、VBAで考えてみた。

    Const ForAppending = 8
    
    Dim myFileSystem As New Scripting.FileSystemObject
    Dim mytextFileIn As Scripting.TextStream
    Dim mytextFileOut As Scripting.TextStream
    Dim buf As String
    buf = ""
    Set mytextFileOut = myFileSystem.OpenTextFile("c:\temp\sample.txt", ForAppending, TristateFalse)
    Set mytextFileIn = myFileSystem.OpenTextFile("c:\temp\FMKGNK01-01.txt", ForReading, TristateFalse)

    Do While mytextFileIn.AtEndOfStream <> True
        buf = buf + mytextFileIn.Read(1)
    'ここで固定長分になるまで、1文字ずつ格納する。ああ、泥臭
        If LenBA(buf) = 577 Then
            mytextFileOut.WriteLine (buf)
            buf = ""
        End If
    Loop

    mytextFileIn.Close
    mytextFileOut.Close

もう少し簡単な構文でと思ったが、この書き方だとデータが””で括られてしまうので没
あと、データの先頭が空文字だと無視しちゃうorz

    Dim fileno As Integer
    Dim buf As String
    Dim buf2 As String
    Dim ii As Long


    Open "c:\temp\銀行テストデータ-本番抽出改行なし.txt" For Input As #1
    Open "c:\temp\sample2.txt" For Output As #2
    Do Until EOF(1)
        Input #1, buf
        For ii = 1 To Len(buf)
            buf2 = buf2 + Mid(buf, ii, 1)
            If LenBA(buf2) = 575 Then
                Write #2, buf2 + x0d
                buf2 = ""
            End If
        Next
    Loop

ここで、文字数ではなくて文字のバイト長を求める関数。
出典はここ

Public Function LenBA(ByVal strX As String) As Long
'ANSI 文字列でのバイト長を求める
    Dim strBA As String
    strBA = StrConv(strX, vbFromUnicode)
    LenBA = LenB(strBA)
End Function

秀丸マクロ 事始め

改行の入っていないファイルを固定長で改行を入れる為の秀丸マクロ

setcompatiblemode 0x0F;
#a = 100;
while( #a > 0 ){
right 100;
insertreturn;
#a = #a - 1;
}

でも、この方法では、全角半角が混在すると、想定外の箇所で切れてしまう。だめじゃん

dynabook AZのアップデート

イギリス旅行では大活躍してくれたdynabookAZ君だけれど、ここの所あまり触っていなかった。
やっぱり無線LANの接続が出来ないのが痛い。

で、ふと思ってググってみたら、dynabookAZ用のandroid2.2が出ているじゃないですか。
これで対応できるソフトも増えてくれれば、別にubuntuじゃなくても良いし、androidなら無線LANは問題なく使える。
よっしゃぁ!と思って、アップデートを開始。
アップデート用のパッケージをダウンロードして、インストールを開始。
で、一旦再起動してきたのだけれど、何気にubuntuが起動してくる。
ああ、そうなんだぁorz

ubuntuは、リカバリー用の起動イメージを書き換えて、SDカードから読み込むように変更しているから、OSのアップデート時にリカバリー用の起動イメージから起動しようとすれば、こうなってしまうんだ。

さて、どうしたものか?
これでリカバリー用の起動イメージを元に戻して、androidが起動できるだろうか?と言うかそうしないと、二度とandroidの画面を見る事は出来なくなってしまいそうだ。

という事で、ubuntuを導入した手順を再確認。