処理中メッセージの表示がされない

このQ&Aのポイント
  • CSVファイルへの書き込み前に、「只今作票中です。しばらくお待ち下さい。」のメッセージを編集して表示する処理が正常に動作しない事態が発生しました。
  • 回避策を教えてください。
  • プレビューして印字処理をする際には、正常に動作しています。
回答を見る
  • ベストアンサー

処理中メッセージの文字が表示されない

【処理概要】作表するダータをCSVファイルへ書き込み、後にEXECELファイルへ貼り付けし、印字する処理。 【事態】CSVファイルへの書き込み前に、「只今作票中です。しばらくお待ち下さい。」のメッセージをボックスに編集したが、IO処理にメモリが取られボックスだけが表示されメッセージ文字が編集されない事態が生じています。 回避策をお教え願います。 【スペック概要】 Frm_Msg.Lbl_ViewMsg.Caption = "只今作票中です。し              ばらくお待ち下さい。" Frm_Msg.Show Syorisw = 1 'CSVファイルオープン Call CSVout DB_Open 'DBオープン Call DB_Read 'DBを読みレコード出力 Call DB_Close 'DBクローズ Syorisw = 9 'CSVファイルクローズ Call CSVout Frm_Msg.Hide 以降 プレビューして印字処理する。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

DB_Read()中のループの中でDoEvetsを呼ぶ

関連するQ&A

  • メッセージボックスの表示

    エクセル2000のVBAでメッセージボックスを表示させたいのですが、OKボタンを押して閉じるのではなく、VBAの記述でメッセージをオープン、クローズがしたいのですが、方法がわかりません。 何がしたいかというと、 FOR~NEXTなどの処理で今何件処理しているかをリアルタイムで表示させたいのです。 どなたか知っている方がいれば教えてください。

  • Excelの表示について

    DBからデータをcsvに落とし、それをExcel表示させたいのですが、 Excel出力後、すぐに起動しようとすると、Excel自体は起動するのですが、 データが表示されません。 アプリケーション終了後にExcelを起動すれば問題なく開けます。 Excelまたはcsvの後処理の仕方が悪いのでしょうか? どなたかわかる人がいましたら教えてください。 'csvからExcelへ出力する処理が入る mxlBook.Save '変更を保存 mxlBook.Close mxlApp.Quit 'Excelから抜ける Set mxlBook = Nothing Set mxlApp = Nothing 'CSVファイルの読込み Set tsText = fsoFSO.OpenTextFile(strFileName, ForReading, False) varData = tsText.ReadAll 'DBへの格納 deTest.cnTest.BeginTrans strSQL = "SELECT * FROM CSV1" Set rsRS = New ADODB.Recordset rsRS.Open strSQL, deTest.cnTest, adOpenStatic, adLockPessimistic With rsRS .AddNew 'アップデートの処理が入る .Update End With rsRS.Close deTest.cnTest.CommitTrans tsText.Close 'CSVファイルをクライアントマシンから削除 fsoFSO.DeleteFile strFileName Set fsoFSO = Nothing Set rsRS = Nothing

  • エラー処理の方法と書き方

    csvファイルのデータをOracle 9i Databaseに格納する次のようなプログラムを作成しました。 開始 | ファイルのOPEN | DBへの接続 | 文字列から空白値の削除 | 繰り返しループ UNTIL:EOF | csvファイル中の顧客 コードがOracleテーブル 内に存在するか Yes----update No--------insert | 繰り返しループ終了 | ファイルのCLOSE | 終了 一応プログラムは正常に動作しているのを確認しました。あとはエラー処理を書いて完了だと考えています。プログラムを書いたのが初めてだったので、普通のエラー処理がどんなもんなのかちょっと想像がつかない状態です。 1.このプログラムにできるだけたくさんのケースを考えてエラー処理を書き込みたいのですが、どのようなエラーが考えられるでしょうか。 一応自分的に考えて見たのが、 (1)「開始」の前にcsvファイルがなかった場合 (2)「DB接続」の前にDB接続ができなかった場合 (3)「繰り返しループ」の前にファイルの中身が空だった場合 (4)「insert」「update」の後にSQL文の発行が全て正常に完了しなかった場合 普通はこれがいるとか、こんなのいらないとかありましたら教えてください。 2.エラーが発生した場合は、運用者にそれを伝えるために普通はコンソール上に表示させるのですか?もしそうだとしたらどのような形でそれを実現するのですか? MsgBox?メール?他には? よろしくお願いします。

  • ASPクライアント側処理時の変数使用

    ASPアプリケーションにて、登録情報の入力チェックを行うため、下記のようにしたところ、メッセージボックスが出てきません(テキストボックスに入力される初期値はnullになっています)。クライアント側で処理させるため、メッセージボックスを使用しています。内部変数を使用しても上手くできないため、外部変数を使用してみました。 <% Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.Open "database","","" Set ObjRS = Server.CreateObject("ADODB.Recordset") ObjRS.Open "master", ObjConn, 3, 3 Session.Contents.Item("test") = ObjRS.Fields("摂取量").Value %> <script language="VBScript"> <!-- msg = Session.Contents.Item("test") MsgBox "Null" & IsNull(msg) MsgBox "Empty" & IsEmpty(msg) MsgBox msg --> </script> <% ObjRS.Close ObjConn.Close %>

  • 並列処理させる方法を教えてください。

    VB6(SP3) OS:Windows200で並列処理させる方法を教えてください。 以下の並列処理を別画面で行いたいのですが、どうしたらよいでしょうか? 並列処理の内容 1.DBへデータのロード(親フォームのボタンで実行) 2.1の処理状況(ログ)を子画面で表示(親フォームのボタンが押されたら、子 フォームとして起動する) ログを表示する画面は、共通部品として使用したいため、 ログの出力を直に書きたくありません。 以下は、当然、動かないんですけど、動かしたいイメージです。 Fom1.frm、Module1.bas、Form2.frmは、同じプロジェクトに 存在します。 =============Form1.frm============= Private Sub Command1_Cpralick() call DataLoad() end sub Public Sub InsertData() Form2.LogOut("XX件目を書き込んでいます。") '・・・データをインサートする処理 end sub =============Module1.bas============= private sub DataLoad() Call Form2.Show(vbModal, Form1) '※1 'DB書込み Call Form1.InsertData() '書込み結果 Form2.LogOut("成功しました。") Form2.hide end sub =============Form2.frm=============== Public Sub LogOut(LogMsg As String) Form2.lbl_Log.Caption = LogMsg End Sub Module1.basの中の※1で処理がForm2に移ってしまい、 Module1.basの※1以下の処理が当然実行されません。 また、前述しました通り、Form2.frmは使いまわししたいので、 Form2.frmにはこれ以上コードを書きたくありません。 Form2は、一応モーダルで起動したいです。 ご教授よろい敷くお願いします。

  • CSVファイル読み込み

    VC++でCSVファイルの読み込みを作っています。 ファイル名「abc.csv」というファイルがあり CSVファイルの内容は、 "id","food" "1","バナナ" "2","オレンジ" となっています。 ソース上はファイルをオープンして 読み込むところまでは分かりましたが、 CSVファイルのコンマの分解とその後の処理が分かりません。読み込んだ後、コンボボックスで、CSVファイルのname一覧を表示する予定でいます。 例では、バナナ     オレンジ とコンボボックスで表示して選択できるようにします。 今のソースは以下の通りです。 CStdioFile file; CString name; int flag;  if(!file.Open("abc.csv",CFile::modeRead)){ AfxMessageBox("File Open failed"); } while(flag){ if(file.ReadString(name)==FALSE) //nameにデータ読み込み break; //CSVコンマを分解 //テキスファイルで読み込み?表示? } file.Close(); //file close 初心者なので間違いだらけかもしれませんが よろしくお願いしますm(__)m

  • VBでオープンしたファイルの制御をCのプログラムに渡す方法

    VBでファイルのオープンをしてそのファイルの制御を Cのプログラムに渡す方法ってありますか? やりたいことを具体的にいうと ファイルのオープン、クローズはVBでやって、 ループの中の変数の値を、Cのプログラムに渡して Cのプログラムの中で印字するって処理をやりたいのです。 Cのプログラムをコールする際の引数で VBで開いたファイルハンドル、出力したい変数の値を 渡してやれば良いのかなと思ったのですが、うまくいかないようです。 なにか方法があれば教えてください。 宜しくお願い致します。 Dim i as Integer Open "\test.txt" For Output As #1 for i=0 to 10 call Cのプログラム(#1、i) next i close #1

  • バッチ処理でAcess処理終了後にメッセージがでるのはなぜですか?

    バッチファイルで、Access2000のマクロ「AutoExec」を起動させて処理をおこないたいのですが、 「AutoExec」の処理が終了し、Accessが終了すると、以下のメッセージボックスが表示されてしまいます。 メッセージボックスの内容 「'C\xxx.mdb'がみつかりません。名前を正しく入力したかどうかを確認してから、やり直してください。 ファイルを検索するには、「スタート」ボタンをクリックしてから、[検索]をクリックしてください。」 Access2000は、該当のディレクトリに、置いていますし、 ちゃんとAccess2000のマクロ「AutoExec」の処理は実行されています。 Access2000の処理は、正常に終了しているのに、こんなメッセージが表示されては、 意味がありません。 このAccess2000の「AutoExec」のバッチ処理は、何十個もあるバッチ処理の一部です。 バッチ処理の途中でメッセージが出るとその後自働で、行われる予定のバッチ処理が、 行われないので非常に困ってます。 どうしたらよいですか? とにかく、バッチ処理で、Access2000を起動させ、マクロ「AutoExec」を使用して処理を行いたいのです。 その間、どんなことがあっても、メッセージボックスの表示などで、処理を止めてはならないのです。 お願いします。誰か教えてください。 バッチファイル名(このバッチファイルの次に、Access2000とは、無関係のバッチファイルの処理がたくさんあります) xxx.bat バッチファイルの内容 CALL c:\yyy.mdb(又は、startc:\yyy.mdb)

  • csvデータの開始行と最終行を全体の4分の1で区切り処理をしたい

    csvデータの開始行と最終行を全体の4分の1で区切り処理をしたい csvデータの開始行と最終行を全体の4分の1で区切り処理をしたいと思ってます。 csvファイルは20万件あります。4分の1なので1~50000件となります。 今回は50001~100000件までを行いたいのですが、先日教えていただいたwhile($lines = <IN>) ですと、最初から1件ずつ最終行まで処理をしてしまいます。 (ここから) open(OUT,">$csv"); open(IN,"$data") || &error(" $data を読み込みopen出来ません"); while($lines = <IN>) { ($seq1,$categ,$password,$imail,$cont) = split("\,", $lines); $cont .= " "; $data = "$seq1,$cont,1\n"; print OUT "$data"; $data = ""; } close IN; close OUT; (ここまで) 今回は20万件ですが、毎回このデータ量は月次ごとに変わります。 while周辺をいじるような気がしていますがどのようになるのかがわからなかったので質問いたしました。 お手数かけます。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • accessVBAで特定の文字列を削除

    以前頼んで作ってもらったVBAを少し改造しようと思っていますが、上手くいきませんので質問します。よろしくお願いします。 csvファイルを分割するVBAを作ってもらいました。 1001,a12345678 1001,b15467863546789 1001,b25463254875698 1001,c23564879 1005,a23456753 1005,b25647565823653 1005,c26546875 1007,a23456789 1007,b23659856325632 1007,b46785215468523 1007,c12546873 というcsvファイルを 1001.csvというファイルで中身は 1001,a12345678 1001,b15467863546789 1001,b25463254875698 1001,c23564879 と 1005.csvというファイルで中身は、 1005,a23456753 1005,b25647565823653 1005,c26546875 と 1007.csvというファイルで中身は、 1007,a23456789 1007,b23659856325632 1007,b46785215468523 1007,c12546873 の3つのcsvファイルに分けます。 今回は仕様変更で、 1001.csvというファイルで中身は a12345678 b15467863546789 b25463254875698 c23564879 と 1005.csvというファイルで中身は、 a23456753 b25647565823653 c26546875 と 1007.csvというファイルで中身は、 a23456789 b23659856325632 b46785215468523 c12546873 の3つに分けなくてはならなくなりました。 今使っているVBAは Private Sub DOQUERY_Click() Dim IN_FNO As Integer Dim OUT_FNO As Integer Dim BREAK_OLD As String Dim BREAK_NEW As String Dim HEADLINE As String Dim TEXTLINE As String Dim ARY() As String Dim OUTNAME As String Dim ARYNAME() As String Dim CNT As Integer Dim MSG As String '============================================ On Error GoTo err If IsNull(InputFile) Or IsNull(OutputFile) Then Exit Sub End If If InputFile = "" Or OutputFile = "" Then MsgBox "ファイル名が正しく指定されていません。", vbCritical Exit Sub End If ラベル5.Visible = True DoEvents '読込みCSV OPEN IN_FNO = FreeFile Open InputFile For Input As #IN_FNO '見出し読込み Line Input #IN_FNO, HEADLINE$ '1レコード目読込み Line Input #IN_FNO, TEXTLINE$ '発注番号 ARY() = Split(TEXTLINE$, ",") BREAK_NEW = Replace(ARY(0), """", "") BREAK_OLD = BREAK_NEW '出力CSVファイル名作成 OUTNAME = OutputFile & BREAK_NEW & ".csv" '出力CSVファイル名保存 CNT = 1 ReDim Preserve ARYNAME(CNT) ARYNAME(CNT) = OUTNAME '出力CSV OPEN OUT_FNO = FreeFile Open OUTNAME For Output As #OUT_FNO '見出し書込み Print #IN_FNO, HEADLINE$ '1レコード目書込み Print #IN_FNO, TEXTLINE$ Do While Not EOF(IN_FNO) '次レコード目読込み Line Input #IN_FNO, TEXTLINE$ '発注番号 ARY() = Split(TEXTLINE$, ",") BREAK_NEW = Replace(ARY(0), """", "") '発注番号が変わったとき新しいCSVを開く If BREAK_OLD <> BREAK_NEW Then CNT = CNT + 1 BREAK_OLD = BREAK_NEW '旧書込みCSVをクローズ Close #OUT_FNO '新出力CSVファイル名作成 OUTNAME = OutputFile & BREAK_NEW & ".csv" '新出力CSVファイル名保存 ReDim Preserve ARYNAME(CNT) ARYNAME(CNT) = OUTNAME '新出力CSV OPEN OUT_FNO = FreeFile Open OUTNAME For Output As #OUT_FNO End If '次レコード書込み Print #OUT_FNO, TEXTLINE$ Loop '出力CSVクローズ Close #OUT_FNO '入力CSVクローズ Close #IN_FNO '出力したCSV名称一覧 Dim I As Integer For I = 1 To UBound(ARYNAME()) MSG = MSG & ARYNAME(I) & vbCrLf Next MsgBox CNT & "個のファイルに分割しました。" & vbCrLf + vbCrLf & MSG, vbInformation, "CSV分割" ラベル5.Visible = False Exit Sub err: MsgBox err.Description, vbCritical, "エラー" ラベル5.Visible = False End Sub です。 ファイル名がBREAK_NEWでそれを消せればいいと思うのですが・・・ 以上長くなりましたが、よろしくお願いします。

専門家に質問してみよう