2008年3月9日日曜日

Ruby で行頭の空白文字を削除する

プログラムの途中の文をブログに貼り付けるとき、行頭の一定数の空白を削除したいことがある。

例えば、次のプログラムの先頭から 4 つの空白文字を取り除きたい。

    If (MsgBox("本当に削除してもよろしいですか?", vbOKCancel) = vbCancel) Then
       Exit Sub
   End If

以下のように、__END__ 以下に上記のプログラムを貼り付け、スクリプトを実行する。

DATA.each do |line|
 puts line.sub(/^\s{4}/,"")
end


__END__
   If (MsgBox("本当に削除してもよろしいですか?", vbOKCancel) = vbCancel) Then
       Exit Sub
   End If

参考サイト

Access でダイアログボックスを表示して、ユーザに Yes, No を選択させる

MsgBox 関数 を利用し、引数に vbOKCancel をとる。

MsgBox(prompt [, buttons ] [, title ] [, helpfile ] [, context ] )

prompt 必ず指定します。ダイアログ ボックス内にメッセージとして表示する文字列式を指定します。引数 prompt に指定できる最大文字数は、1 バイト文字で約 1,024 文字です。

vbOKCancel [OK] ボタンと [キャンセル] ボタンを表示します。

(MsgBox 関数 - Access - Microsoft Office Online より)

例. レコードを削除する前に、ユーザに確認をとるためのダイアログを表示する。

If (MsgBox("本当に削除してもよろしいですか?", vbOKCancel) = vbCancel) Then
   Exit Sub
End If

   ' 処理を続ける...

080309-001

関連サイト

2008年3月6日木曜日

Access で選択しているフィールドの色を変える

フォームを表示させ、メニューより、書式 > 条件付き書式...

ダイアログが表示されるので、「条件」のコンボボックスにおいて、「フォーカスのあるフィールド」を選択し、適当な色にする。

080306-001

2008年3月5日水曜日

Access で主キーに利用する id の数値を生成する

Access では、テーブルにおけるフィールドの型として、オートナンバー型がある。これを主キーの id フィールドでよく利用する。このオートナンバー型の挙動を見ると、同じテーブルの、別の列に対して連結しているフォームのフィールドに値が入力された後に生成され、オートナンバー型に対して連結しているフォームのフィールドに表示されるようである。

フォームが表示されたときに、 主キーとなる id フィールドに数値が既に入っていて欲しいときがある。サブフォームがあり、フォームとサブフォームを結ぶフィールドが id に依存している場合だ。このとき、親となるフォームのいずれかのフィールドに値を入力しないと、オートナンバーは生成されない。よって、フォームが表示されたときにすぐサブフォームの入力に移ることができない。

こういうときは、自分で DMax 関数を利用して、 id フィールドの値を生成すると楽。

フォームの「レコード移動時」のイベントを利用して...

Private Sub Form_Current()
    If Me.NewRecord Then
        Me.id = DMax("フィールド名", "テーブル名") + 1
    End If
End Sub

 

追記(2008.3.6): レコードが一件も存在しない場合の処理を追加した。また、親フォームに主キーのフィールドしかなく、子フォームの値を最初に入力することができるようにするために、主キーとなる値を生成したら、レコードを保存するようにした。

Private Sub Form_Current()
    Dim strTbl, strId As String
    
    strTbl = "テーブル名"
    strId = "フィールド名"
    
    ' 新規レコードであることを確認する
    If Me.NewRecord Then
        If IsNull(DMax(strId, strTbl)) Then
            Me.id = 0
        Else
            Me.id = DMax(strId, strTbl) + 1
        End If
    End If

    ' レコードを保存する
    DoCmd.RunCommand acCmdSaveRecord
End Sub

2008年3月4日火曜日

Access で リレーションシップ の設定

1. 親から子へと線を引く

Access でリレーションシップを設定するときは、参照される側から参照する側へ線を引く。別の言い方をするなら、親から子へと線を引く。

 

2. リレーションが 1 対 1 対応の場合

  • A テーブルが参照される側。
  • B テーブルが A テーブルを参照する

この場合、 A テーブルの id フィールドから、 B テーブルの id フィールドへ参照を表す線を引く。

080304-002

参照する側から、参照される側へ線を引く方が、直感的でわかりやすいのだけれど...

追記 (2010.1.18) : 久しぶりに Access をいじったら、この 1 対 1 対応でまた勘違いした。 (+_+)

 

関連記事