Solved

How to check if a file is in use?

Posted on 2009-06-30
2
272 Views
Last Modified: 2013-11-27
Hi.  I have a form in MS Access that writes strings to a text file.  This text file is actually a macro script for a different application.  So, with a click of a button, here's what the form does:
1. Creates the script using the "Print" command to put lines of text in a text file.
2. opens up the application.
3. Using Sendkeys, send the command to that application to run the macro script.
This all works, but here's my problem:  I also need the text file that is created to be deleted right away.  Problem with the execution is it won't because the file is in use at that point by the other application.  I had thought the solution would be to create a while loop to try and delete the file while the file exists.  This does not work.  I am thinking that if there is a way to check if the file was in use instead in the while loop would work, but i'm not sure.  Anybody know of a way for me to code it to delete the file once it is not in use anymore?  Don't want to use a timer because i want to make sure the file is deleted as soon as it can be deleted.
Private Sub Command10_Click()

If IsNull(Me.JDA) = True Then GoTo Fieldsempty

If IsNull(Me.sku) = True Then GoTo Fieldsempty

If IsNull(Me.qty) = True Then GoTo Fieldsempty

If IsNull(Me.customer) = True Then GoTo Fieldsempty

If IsNull(Me.warehouse) = True Then GoTo Fieldsempty

'Define all the variables that are going to be used

Dim strInputVal As String

Dim strOutputVal As String

Dim strChar As String

Dim strMocha As String

Dim fso As Object, fsoFile As Object

'Check to see if there already is a macro present

If FileExists("C:\mochasoft\mtn5250.8") = True Then

'Delete the previous jda macro

Set fso = CreateObject("Scripting.FileSystemObject")

  Set fsoFile = fso.GetFile("c:\mochasoft\mtn5250.8")

  fsoFile.Delete

   End If

 'Open the macro to write to

 Open "c:\mochasoft\mtn5250.8" For Output As #1

 'write the inital line to the jda macro file

Print #1, "# Script file for Mocha W32 TN5250"

olwritejda Me.jdauser

Print #1, "9 0 0 f 1"

olwritejda Me.jdapass

Print #1, "d 0 0 1c 1"

Print #1, "d 0 0 1c 1"

Print #1, "31 0 0 0 0"

Print #1, "38 0 0 0 0"

Print #1, "31 0 0 0 0"

Print #1, "d 0 0 1c 1"

olwritejda Me.JDA

Print #1, "71 0 0 3c 1"

Print #1, "71 0 0 3c 1"

olwritejda Me.sku

Print #1, "9 0 0 f 1"

Print #1, "27000 0 0 14d 1"

Print #1, "27000 0 0 14d 1"

Print #1, "27000 0 0 14d 1"

Print #1, "27000 0 0 14d 1"

Print #1, "27000 0 0 14d 1"

Print #1, "2e 0 0 153 1"

Print #1, "2e 0 0 153 1"

Print #1, "2e 0 0 153 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

olwritejda Me.qty

Print #1, "76 0 0 41 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

olwritejda Me.warehouse

Print #1, "28000 0 0 150 1"

Print #1, "39 0 0 0 0"

Print #1, "39 0 0 0 0"

Print #1, "39 0 0 0 0"

Print #1, "39 0 0 0 0"

Print #1, "39 0 0 0 0"

Print #1, "28000 0 0 150 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

olwritejda Me.customer

Print #1, "76 0 0 41 1"

Print #1, "76 0 0 41 1"

Print #1, "72 0 0 3d 1"

Print #1, "70 0 0 3b 1"

Print #1, "70 0 0 3b 1"

Print #1, "31 0 0 0 0"

Print #1, "33 0 0 0 0"

olwritejda Me.JDA

Print #1, "d 0 0 1c 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "28000 0 0 150 1"

Print #1, "26000 0 0 148 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "25000 0 0 14b 1"

Print #1, "36 0 0 0 0"

Print #1, "d 0 0 1c 1"

Print #1, "75 0 0 40 1"

Print #1, "63 0 0 0 0"

Print #1, "72 0 0 0 0"

Print #1, "65 0 0 0 0"

Print #1, "64 0 0 0 0"

Print #1, "69 0 0 0 0"

Print #1, "74 0 0 0 0"

Print #1, "20 0 0 0 0"

Print #1, "69 0 0 0 0"

Print #1, "73 0 0 0 0"

Print #1, "73 0 0 0 0"

Print #1, "75 0 0 0 0"

Print #1, "65 0 0 0 0"

Print #1, "64 0 0 0 0"

Print #1, "9 0 0 f 1"

Print #1, "9 0 0 f 1"

Print #1, "9 0 0 f 1"

Print #1, "53 0 0 0 0"

Print #1, "4b 0 0 0 0"

Print #1, "55 0 0 0 0"

Print #1, "3a 0 0 0 0"

'Print #1, "41 0 0 0 0"

'Print #1, "6d 0 0 0 0"

'Print #1, "6f 0 0 0 0"

'Print #1, "75 0 0 0 0"

'Print #1, "6e 0 0 0 0"

'Print #1, "74 0 0 0 0"

'Print #1, "3a 0 0 0 0"

olwritejda Me.sku

Print #1, "9 0 0 f 1"

Print #1, "52 0 0 0 0"

Print #1, "65 0 0 0 0"

Print #1, "61 0 0 0 0"

Print #1, "73 0 0 0 0"

Print #1, "6f 0 0 0 0"

Print #1, "6e 0 0 0 0"

Print #1, "3a 0 0 0 0"

olwritejda DLookup("[Field2]", "customer", "[Field1] = '" & Me.customer & "'")

Print #1, "70 0 0 3b 1"

Print #1, "70 0 0 3b 1"

Print #1, "70 0 0 3b 1"

Print #1, "70 0 0 3b 1"

Close #1

Shell "c:\Mochasoft\mtn5250.exe"

SendKeys "%8", True

Do While FileExists("C:\mochasoft\mtn5250.8") = True

fsoFile.Delete

Loop

'Me.JDA = Null

'Me.sku = Null

'Me.qty = Null

'Me.warehouse = Null

'Me.customer = Null

Exit Sub

Fieldsempty:

MsgBox "All fields are required."

Exit Sub

End Sub

Open in new window

0
Comment
Question by:liebs
2 Comments
 
LVL 2

Accepted Solution

by:
JohnBobH earned 500 total points
ID: 24750639
0
 
LVL 16

Expert Comment

by:Chuck Wood
ID: 24754354
Try this:
Public Function WaitForFile()

    '================================

    '  requires a reference to:

    '    Microsoft Scripting Runtime

    '================================

    Dim fso As New Scripting.FileSystemObject

    '

    ' ...

    '

    ' turn off error handling

    On Error Resume Next

    ' try to delete the file while it exists

    Do While fso.FileExists("C:\mochasoft\mtn5250.8")

        fso.DeleteFile "C:\mochasoft\mtn5250.8", True

    Loop

    ' turn error handling back on

    On Error GoTo 0

End Function

Open in new window

0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Run-time 91 error, not sure why 3 26
Recording mileage on a form 2 11
DSum between dates 5 0
Access checkbox 2 0
QuickBooks® has a great invoice interface that we were happy with for a while but that changed in 2001 through no fault of Intuit®. Our industry's unit names are dictated by RUS: the Rural Utilities Services division of USDA. Contracts contain un…
Overview: This article:       (a) explains one principle method to cross-reference invoice items in Quickbooks®       (b) explores the reasons one might need to cross-reference invoice items       (c) provides a sample process for creating a M…
Basics of query design. Shows you how to construct a simple query by adding tables, perform joins, defining output columns, perform sorting, and apply criteria.
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now