Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2159 / 2272 ツリー ←次へ | 前へ→

【3102】レポート印刷の怪 Homes 04/7/20(火) 15:26 質問[未読]
【3189】Re:レポート印刷の怪 こもれび 04/8/8(日) 13:35 回答[未読]
【3667】Re:レポート印刷の怪 Homes 04/10/9(土) 10:55 お礼[未読]

【3102】レポート印刷の怪
質問  Homes  - 04/7/20(火) 15:26 -

引用なし
パスワード
   あるフォームのボタンを押したらフォーム内のリストボックスの
選択されている明細が「印刷用テーブル」に書き込まれ、
直後にその印刷用テーブルを使ったレポートを印刷するプログラムを作成
しました。しかし、1回目は上手く動作するのですが、2回目以降に
フォーム内の明細を選択してボタンを押すと、前回印刷した明細が
出てきてしまいます。
「印刷用テーブル」はボタンを押した際にデータを全削除しているにも
かかわらず動作していないように見えます。
ソースを載せますのでご教授いただければ幸いです。

sub BtnClick()
  Dim varItm As Variant
  Dim CnAcc As New ADODB.Connection
  Dim RsAcc As New ADODB.Recordset
  Dim SQL As String
  Const D_SQL As String = "DELETE * FROM 印刷用テーブル"
  
  CnAcc.ConnectionString = CurrentProject.Connection
  
  '** 印刷用テーブル データ削除
  Set RsAcc = CnAcc.Execute(D_SQL, , adCmdText)

  RsAcc.Open "印刷用テーブル", CnAcc, adOpenKeyset, adLockOptimistic, adCmdTableDirect
  
  For Each varItm In Me.lstMain.ItemsSelected
    RsAcc.AddNew
    RsAcc("A").Value = Me.lstMain.Column(1, varItm)
    RsAcc("B").Value = Me.lstMain.Column(2, varItm)
    RsAcc("C").Value = Me.lstMain.Column(3, varItm)
    RsAcc("D").Value = Me.lstMain.Column(4, varItm)
    RsAcc.Update
    
    DoEvents
  Next varItm
  
  RsAcc.Close
  CnAcc.Close
  Set RsAcc = Nothing
  Set CnAcc = Nothing

  DoCmd.Requery "lstmain"
  DoCmd.OpenReport "データ発行", acViewNormal

end sub

【3189】Re:レポート印刷の怪
回答  こもれび  - 04/8/8(日) 13:35 -

引用なし
パスワード
   >「印刷用テーブル」はボタンを押した際にデータを全削除しているにも
>かかわらず動作していないように見えます。
>ソースを載せますのでご教授いただければ幸いです。

次の記述ではいかがでしょうか。
(変数宣言等は省略しています)


  CnAcc.ConnectionString = CurrentProject.Connection

  rsAcc.Open "印刷用テーブル", cn, adOpenKeyset, adLockOptimistic

  For Each varItm In Me.lstMain.ItemsSelected
    RsAcc.AddNew
    RsAcc("A").Value = Me.lstMain.Column(1, varItm)
    RsAcc("B").Value = Me.lstMain.Column(2, varItm)
    RsAcc("C").Value = Me.lstMain.Column(3, varItm)
    RsAcc("D").Value = Me.lstMain.Column(4, varItm)
    RsAcc.Update
    
    DoEvents
  Next varItm
  DoCmd.Requery "lstmain"

  RsAcc.Close:Set RsAcc = Nothing
  CnAcc.Close:Set CnAcc = Nothing

  DoCmd.OpenReport "データ発行", acViewNormal

   SQL01 = "DELETE * FROM 印刷用テーブル"
   CnAcc.Execute SQL01

【3667】Re:レポート印刷の怪
お礼  Homes  - 04/10/9(土) 10:55 -

引用なし
パスワード
   ▼こもれび さん:
返信遅くなってすみません。
まさかレスが付いているとは思いませんでした。

こもれびさんの手法も試してみたのですが、
結局だめで、msgboxでジョブを一時止めてから
印刷させると問題なく動作するようになりました。
重ね重ね返信が遅くなり申し訳ありませんでした。

2159 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078299
(SS)C-BOARD v3.8 is Free