カテゴリー別アーカイブ: AccessVBA

行間にレコードを追加するときの注意点

行間に追加したときは、次の注意点があります。

①レコードの並び方を指定しておきます。


折角順番を付けているので、並び替えは順番を選択します。

これでVBAでクエリを実行したときに、順番通りに並べ替えられます。
何も設定しないと、オートナンバーで表示されるので、順番通りになりません。
注意してください。

②絶対にレコードを入れなければいけないフィールドがある場合

クエリはリレーションシップで、商品明細の商品CDを商品テーブルの商品CDと関連付けをした場合、
商品CDにデータがない状態ではレコードの追加ができません。

そんなときは、VBAコードを次のように変更します。
rs.AddNew
rs!順番1 = a
rs!商品CD = 1
rs!納品書NO = Forms!納品書!納品書NO
rs.Update
仮の商品CDを入れる必要があります。

当然後から正しい商品CDをいれないといけません。
それ以外にテーブルの設定で「値要求」が「はい」になっているレコードについても
仮で何か値を入れる必要があります。

注意点はこれくらいです。

納品書等を作る場合、やはり行間にレコードを追加できるようにしておく必要があると
思います。こんな感じで参考にしてもらえればと思います。

サンプルファイルを上げておきますので、必要であればダウンロードしてください。

======================================
コロナワクチン1回目打ってきました。
1回目は特に副反応はありません。(今のところ)
問題は2回目だな。
家族に走ることを止められて、それがストレスです。。

本日も最後までお読みいただきありがとうございます。

レコードを行間に追加する

前回はレコードを削除した場合の行番号を整えました。

今回は、行と行の間にレコードを追加する場合のやり方です。

Accessを使っていてなんでこれが簡単にできないんだろうというものの一つが
行の挿入です。Excelでは簡単ですよね。右クリックで行の挿入、これで終わりです。

AccessではVBAを使わないとできません。

下の画面の1と2の間と2と3の間にレコードを挿入します。

コマンドボタンを作って、そこに以下のVBAコードを入れます。

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

a = Me!順番1

rs.MoveFirst

Do Until rs.EOF
If rs!納品書NO = Forms!納品書!納品書NO Then
If rs!順番1 >= a Then
rs!順番1 = rs!順番1 + 1
rs.Update
End If
End If
rs.MoveNext
Loop

rs.AddNew
rs!順番1 = a
rs!納品書NO = Forms!納品書!納品書NO

rs.Update

rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing

Forms!納品書!納品明細.Form.Requery
End Sub

このプログラムを実行すると、下記のようになります。

無事レコードを挿入して、番号もそろえることができました。
データベースの構造上、常に一番下にレコードが追加されていくので、これの入力順を
変更することは不可能です。ですので順番というフィールドを作って、これで操作して
いきます。

テーブルを見るとこんな感じですね。

ちなみにIDはオートナンバー型です。

Excelばかりつかっているとこの考え方を理解するのに手間取るかもしれませんが、
大事な考え方なので、是非分かってあげてください。

=======================================
9月になりました。
やっと明後日にワクチン1回目です。
いろいろ不安はありますし、打たなくてよければ打ちませんが、仕方がありません。
副反応が少なければいいなあ。。

本日も最後までお読みいただきありがとうございます。

軽減税率とそれ以外の売上の表記について①

軽減税率への対応②でクエリで消費税を集計し、DLookupで参照する流れを解説
しましたが、この方法は分かりやすいのですが、フォームを開いたときの動作が
遅いという欠点があります。それを解消する方法を解説します。

今回の解説は、
著書 経理業務のための Accessマクロで作るデータベース入門のサンプルデータを元に解説します。

納品書に、
・軽減税率の売上と消費税
・軽減税率適用外の売上と消費税
を集計するフィールドを作ります。
こんな感じです。

続きを読む

宛名ラベルの印刷② 宛名位置の指定

宛名ラベルを印刷すると、かなりの高い確率で余りが出てしまいます。
特に20枚印刷で21枚となると、1枚の宛名ラベルに宛名シートが1枚必要になってしまいます。
それで余ったシートが使えなくなるのはあまりにももったいないので、
続きから印刷できるよう、印刷位置を指定して印刷出来るようにします。

最初にこのような住所録を作ります。ラベル印刷にチェックがついている人だけ
ラベルが印刷されます。

続きを読む