Excelの名刺でデータをAccessに写し、これをアカサタナ順で抽出できるように
します。
以前作ったフリガナ検索のフォームを流用します。
エクスポートを使ってフォームを名刺データのあるAccessファイルに移します。
続きを読む
ある特定の文字を含むデータだけ抽出する方法です。
下の図のように簡単なフォームを作ります。フォームデザインでフォームを
作り、テキストボックスとコマンドボタンを配置するだけです。
コマンドボタンに次のVBAコードを入力します。
Private Sub コマンド2_Click()
DoCmd.OpenForm “車一覧”, , , “車名 Like ‘*” & Me!テキスト0 & “*'”
End Sub
続きを読む
クエリ、フォーム、レポートを更新した場合、そもそもAccessデータベースのファイルが一つで
完結している場合は、そのままでいいのですが、
例えば他社がAccessデータベースを製作し、違うPCで違う人が使う場合、
どこかを直したり、新規にフォーム等を作った場合は、その修正等した部分を
実際に使っているAccessデータベースに反映させる必要があります。
その方法を解説します。
最初に更新した元のデータベースを開きます。
更新等をしたクエリ等(今回はフォーム)を右クリックし、
エクスポート→Accessを選択します。
続きを読む
片方のフォームをテキストボックスに変えることで競合を回避できましたが、
もう一つの方法を解説します。
それは一覧フォームから詳細フォームを開いたときに、一覧フォームを閉じる、
詳細フォームを閉じたときは一覧フォームを開くことで、両方変更できる状態を
回避することができます。
一覧フォームのコマンドボタンのプロパティのイベントタブのクリック時に
次のVBAコード入力します。
Private Sub コマンド5_Click()
DoCmd.OpenForm “車詳細2”, , , “車両NO=” & Me!車両NO & “”
DoCmd.Close acForm, “車一覧2”
End Sub
続きを読む
同じレコードの同じフィールドのデータを異なるフォームで同時に操作すると
データの競合が起こります。
同じデータを二つのフォームで編集可能な状態にしておくことに問題があるので、
解決策の一つとして、片方をテーブルのデータではなく、テキストボックスにして
しまいます。
車詳細フォームの車名のプロパティで、コントロールソースを空白にします。
コントロールソースを空白にすると、テキストボックスが非連結となります。
続きを読む
クエリで実行した内容をADOで実行します。
コードは以下の通りです。
Private Sub コマンド13_Click()
Dim a As Integer
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open “納品書サブ”, cnn, adOpenKeyset, adLockOptimistic
rs.MoveFirst
Do Until rs.EOF
rs!順番2 = DCount(“*”, “納品書サブ”, “納品書NO=” & Forms!納品書メイン!納品書NO & “” & ” and ” & “順番<=" & rs!順番 & "")
rs.Update
→順番2に正しい順番に変更します。
rs.MoveNext
Loop
続きを読む
明細行を挿入した場合の処理を解説してきましたが、今回は削除した場合の処理です。
削除すると当然削除した明細番号が抜けてしまうので、再度番号を振り直す必要があります。
最初に納品書サブテーブルに「順番2」というフィールドを追加します。
このフィールドに正しい明細番号を振り直します。
続きを読む
Excelでは明細行を挿入しようとするときは、右クリックですぐに挿入できますが
Accessでは残念ながらそんな簡単な動作さえ、プログラムを使わないとできません。
簡単な例で解説します。
簡単なメインサブフォームを作るので、テーブルを二つ作ります。
メインフォーム用のテーブル。
続きを読む