Page 601 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼選択した宛名ラベルだけを印刷したい 水無月 04/4/20(火) 13:58 ┗Re:選択した宛名ラベルだけを印刷したい クロ 04/4/21(水) 16:07 ─────────────────────────────────────── ■題名 : 選択した宛名ラベルだけを印刷したい ■名前 : 水無月 ■日付 : 04/4/20(火) 13:58 -------------------------------------------------------------------------
こんにちは。 またまた困っています。どなたか教えてください。 一枚が3×8で計24片ある宛名ラベルに、客先の住所を印刷したいのです。でも住所録全部を印刷するのではなくて、選択した客先を必要な枚数だけ、指定した場所に印刷したいのです。 現在の状況を説明をします。 住所を選択する方法として、まずフォームを作成しました。そのフォームには非連結のテキストボックスを24個(横3、縦8)作って、そこに住所の主キーであるコードを入力するようにし、更にその24個のテキストボックスそれぞれの下に一つづつテキストボックスを作成し、そこには会社名を表示するようにしました。そしてコードを入力するテキストボックス24個すべてのイベントに下記のような構文を作りました。 Private Sub コード01_Exit(Cancel As Integer) Dim db As Database Dim rs As Recordset Dim strSQL As String Set db = CurrentDb strSQL = "SELECT * FROM 住所録 WHERE コード = '" & Me![コード01] & "'" Set rs = db.OpenRecordset(strSQL, dbOpenDynaset) If rs.EOF = False Then Me![会社名01] = rs![会社名] Else Me![会社名01] = Null End If End Sub これで、現在はフォームにコードを入力するとその下にコードと同じレコードの会社名が表示されます。 これならば、会社1が3枚必要ならば、3回コードを入力し、会社2は1枚ならば、その次にコードを1回入力し・・・とすれば必要なだけ選ぶことができます。 それでこれを印刷するのに、入力した場所と同じ箇所に印刷を行いたいのです。 つまり、フォーム上で左から3列目の上から2番目の位置にコードを入力したとしたら、宛名ラベルの同じ位置に印刷したいのです。 でも、どうすればいいのか分かりません。 どうかご教授宜しくお願いいたします。 |
ワークテーブルを作成して、追加クエリ(SQL)で[コード00]で抽出 したデータを24回 For...Next で繰り返して作成したワークテーブルに 送りそれをレコードソースとしたレポート(宛名ラベル)を作成しては 如何でしょうか? ADOは不得手なのでDAOで...参考にしてみてください。 ・参照設定でDAO 3.* Object Libraryチェックを入れてください。 ・コード入力用のテキストボックス名は [コード1]のように0は抜く ・[会社名00]というテキストボックスは使用しません。 ・ワークテーブル名:T_Work_Report ・元テーブル名:T_住所録 ・元テーブルのコードのデータ型:テキスト型 適当なコマンドボタン(仮称:cmdBuild)に Private Sub cmdBuild_Click() Dim dbs As DAO.Database Dim strSQL As String, strSQLDel Dim i As Integer Dim N As String 'ワークテーブルをリセット strSQLDel = "DELETE T_Work_Report.* FROM T_Work_Report;" Set dbs = CurrentDb dbs.Execute strSQLDel dbs.Close For i = 1 To 24 'テキストボックス名に変数を付ける N = "コード" & i 'テキストボックスの空欄判定 ※空欄になったら抜ける If Len(Nz(Me.Controls(N), "")) = 0 Then MsgBox i - 1 & "件のデータをワークテーブルにデータ転送しました。", vbInformation, "結果" Exit Sub Else '追加クエリ(SQL) strSQL = "INSERT INTO T_Work_Report" & _ " SELECT T_住所録.*" & _ " FROM T_住所録" & _ " WHERE T_住所録.コード='" & Me.Controls(N) & "';" 'コードが数値型なら... " WHERE T_住所録.コード=" & Me.Controls(N) & ";" Set dbs = CurrentDb dbs.Execute strSQL dbs.Close End If Next i MsgBox "24件のデータをワークテーブルにデータ転送しました。", vbInformation, "結果" End Sub 後はワークテーブル(T_Work_Report)を利用してレポートを宛名ラベルウィザードで 作成すればいいかと思います。 |