Modules & VBA :: Using FSO To Write To Text File - Avoiding Conflicts
May 21, 2015
I have a function to write some data to a text file (as an activity log, separate to the live data contained in the DB)
It uses the FileSystemObject.OpenTextFile method and works fine
However, I'm conscious that, although perhaps unlikely, there is the possibility (which is enough for me to worry about it) that multiple users could trigger the function simultaneously, which could cause a conflict when multiple FE's try to write to the same log file at the same time.
So I'm trying to add some code to prevent this from happening, by checking if write-access is available before proceeding.
Below is the piece of code I've added. Was considering, as an alternative, looping until the objFile is no longer Nothing, rather than depending on the Err.Number?
Code:
Dim objFSO As Object
Dim objFile As Object
On Error GoTo ErrorHandler
...
Set objFSO = CreateObject("Scripting.FileSystemObject")
I have header table and a distribution table that both need to be written to a txt file. They need to be written in a certain order Header. Distribution. Header. Distribution. etc. There can be multiple distribution lines for the header line.
So far this is what I'm trying and its not working right. ~Legend~ hrst = header record set drst = distribution record set tblHeaderExp = header table exporting from tblDistExp = distribution table exporting from ~End of Legend~
I have the requirement to write EACH record from a table to its own CSV file with name of the file being combination of 2 fields
So let's say I have Table1 with 3 columns (Field1, Field2, Field3) with following content :
Field1 Field2 Field3 AA 1 ABC AA 2 DEF AA 3 GHI
I should get 3 files with names AA1.CSV, AA2.CSV and AA3.CSV and each file contains its respective row from the table.
I tried to do it with DAO Recordset, but I do not find a way to write only the current record from recordset while looping.
See below the code I was using, but issue is that code does succesfull creates the 3 CSV files as per above example, but in each file it writes ALL 3 ROWS instead only the respective ROW.
Code: Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim strFilename As String
I'm trying to figure out at what point an error message occurs while a database is closing. This problem only occurs if someone clicks on the red close button on the top right of the screen when there are several forms open. If the user exists normally there is NO problem.
I am attempting to use the print statement to write to a text file to track what is happening as the database shuts down. Unfortunately, the open (print) statement, when issued, zaps any prior contents which precludes having a full printed record. I am hoping for a print syntax that would allow appending.
Code: Open "ErrorReport.txt" for Output as #1 Appended text to the file to show what is happening in that event. Close #1
The program, in closing, does stop with an error message that a certain file can't be found. But when I click on debug, the program simply closes. I have also commented out VBA references to the file that can't be found, but the error still persists .
I open my database when I click on the link in a pdf file! I created a database and if I look in the properties every domain user has full control to my database. When I open the database it creates a .ldb file, but in the ldb every user has only a read admission. I can change the admission to write, but it only stays in the lbd file until I close the database again!
ohhh I hope I can fix it soon, waiting of your help!!!! Thank you:rolleyes:
I'm currently creating an interface program for a MS Access database. I've only used Access once in the past but used other DB's a handful of times so I didn't have any trouble getting the general program created. My issue arose when I tried to make it so that the users needing to use the program can just copy the .exe and the .mdb files and use it.
The program doesn't require users to share the database but to store their OWN programs information in their OWN database, so basically each needs to have their own database with the exact same design (but different data). The original plan was to just get them to copy over a near empty .mdb with the design set up and have them slowly create their own dataset with it. However, upon copying these files between my computer and others it ends up allowing my interface program to retrieve data from the DB but not write any new entries to it. All security permission on the file itself are set to allow read/write to everyone so I'm not sure what's causing this. Is there any other security settings I should worry about? Everything I could find within access seemed to be set so that it could be used freely so I'm not sure what the problem is. Any help would be greatly appreciated.
P.S. - I apologize if there is already a related topic in existence, I am new to these boards and tried to search beforehand for any information on this topic but came up empty handed so decided to start my own topic about this problem.
I have a linked *.txt file and a qwery that returns the top 1 record from it. (The ideea is to check a value from one column of the file).Both the linked file/table and the query run corectly,I have a vba code on the on open of a form that is checking the query above mentioned (the form is on the Startup option of the database) and when I need to use the Dcount of the Query "
Code:
DCnt = DCount("Den_Fis", "Data_R_Mod_U$G9707014")
I get the "Runtime error 3625: the text file specification..." doesn't exist etc.I pres debug and test the query, I get the "Unknown Jet Error".I press Stop in the VBA and open the Qry - it shows what is was ment to show.I know the workaround is to make a maketable with the needed info and the Dcount on the local table, but it would add one query and one table to the database.
I have a text file that cannot be imported and turned into a table because it has no line feed characters and is therefore well over 255 columns. The fields are delimited by commas, however.
How can I search this file for all instances of "{id" and then grab the next 10 characters to the right and store them somewhere?
Header as this fields: Num; CompanyCode; InvoiceNumber; Date; Total; Taxes; Subtotal
Detail as this fields linked with Header by InvoiceNumber: InvoiceNumber; CardNumber; Date; ClosureDate; Qt; Price; Tax; Subtotal
And i've got to export to a text file as follows:
first line with a header then the other lines with the details, and if it has another header it continuous with first a header and then details again...
I have a text file that I am using VBA to read and print 2 pieces of data to another text file.The code works to a point, in some instances it does not appear to find the end of file but captures and writes all the data. Or, after printing 36 lines correctly, it then stops writing.
I have stepped through the code and it appears to be capturing the data up past this issue but for what ever reason it does not print it to my text file.
PHP Code:
Option Compare DatabaseOption Explicit Public Mode As String Public FUNDREF As String Public rst As String Function DAILYAUDITTRAIL() Close #1 Close #2 Open "C:UsersTEST IN.TXT" For Input As #1 Open "C:UsersTEST OUT.txt" For Output As # 2 Do While Not EOF(1) Line Input #1, rst If rst Like "KM56Aasdf*" Then FUNDFINDER End If Loop End FunctionFunction FUNDFINDER()
I am currently using Access 2010, and have successfully split a database, using the Access wizard.However, whenever a second or third user opens the database - with their front-end database file - they encounter the following message;The Microsoft Access Database engine cannot open or write to the file ". It is already opened exclusively by another user, or you need permission to view and write its data.
I have researched the internet and see that it has something to do with network permissions. I have worked with my IT department and this appears to be resolved!
Is there a setting I need to check in the front-end and/or back-end copies of the databases?Why is there no file name in the error message?
They are receiving e-mail with some data that they want to transfer to access database to track. The one think they can do is copy past, copy paste. That is a lot of data to copy and paste. The date looks like this format
Field1 Text1
Field2 Text2 (text2 can be more than 255 char)
Field3 Text3 (text3 can be more than 255 char)
Field4 Text4
Field1 Text1
Field2 Text2 (text2 can be more than 255 char)
Field3 Text3 (text3 can be more than 255 char)
Field4 Text4
and so on.. It can be 50 records
I am thinking they can copy this to the text file. Then the code form Access grabs the text file and imports to access table with format below.
Where the word Author= appears to extract the data between the double quotes, so in the above case I want to extract "All Saints" excluding the double quotes.And then where Title= appears extract "On & On", again excluding the double quotes.So I would end up with data in my table looking something like this
strArtist [Author] strSong [Title] strGenre [Genre] strYear [Year] All Saints On & On Pop America Venture Highway Rock 1972 Amillionsons Misty Blue Pop 2002
I have created a form to send emails with attachments. The attachment path is specified in an unbound field which I have called [ToAttach] Rather than typing in the path, I want to use the browse function. I have inserted a browse button and can browse for the required file using following, but can't figure out how to place the file name in the unbound field as a string.
Code: Dim f As Object Set f = Application.FileDialog(3) f.AllowMultiSelect = False f.Show
I have a function which takes a recordset and writes the contents to a text file. One of the fields in the recordset is a free format text field, the contents of which originate from a text box on a form. Occasionally, a user can hit the 'Enter' key to add a new line (carriage return) to the note within the text box.
The problem is, when the output text file is subsequently imported to Excel, the carriage returns within that text field serve to move the next piece of data to the next row (even though the CR is within the double-quote text-qualifier in the text file)I want line breaks within the text field to be retained within the cell.
One option would very simply be to replace the carriage returns with simple spaces in the write function. I could do that quite easily. However, I would prefer to retain whatever the user has entered into the text box, including line breaks, if at all possible?So if the user broke his free format 'note' into multiple lines (for whatever reason), it would similarly appear as multiple lines in the same cell (and in the same row / record) in the Excel worksheet.
I could replace the carriage return with some obscure character during the write, then switch it back during the Excel import, but that seems a little clunky (plus Murphy's Law dictates that no matter how obscure a character I choose, somebody, at some point, will genuinely use it, and it will get switched out. Which means I'd have to use a non-printing character?could I simply replace the carriage return with a line feed? (Or is it the other way around? I always get carriage returns and line feeds mixed up!)there's a simple way around this but I always get confused as to precisely which ASCII character the 'Enter' key produces when keying into a text box.
I have a table. Also i have a text file which some of the fields are matching with my table fields ( lets say field A and B ). Now, i need to do compare of these A & B of my table against A & B of the text file and give a result as follows;
1. "Field A" not in the table but in the text file (un-matching data to be shown ) 2. "Field A" not in the text file but in the table (un-matching data to be shown ) 3. "field B" mismatches
Does a (the) .ldb file have to be closed for another user on a network (separate FE linked to network drive BE) to read/write info to a table? Or even select info from a table?
I'm trying to import a pipe delimited text file into a table. I can import the entire table using the following code, but I only get one column of data (the entire data set in one column). If possible I would like to import with the columns defined or if not possible use some code for a function similar to text to columns.
I have 3 queries that provide the same printer information. Each one is queried by a different field: IP address, asset tag, and serial number. This may not mean anything in the long run, though I figured it is worth mentioning.
The users need to be able to quickly query a printer utilizing one of those criteria and then copy and paste it into our ticketing system. Is there a way to automatically export the record from the query to a text file? I have extensively searched online and have tried to come up with something but I have found that I don't know where to start. This is the code for the query:
Code: Dim intCount As Integer intCount = 0 If DCount("Location", "Phone numbers Query") > 0 Then intCount = intCount + 1 DoCmd.OpenQuery "", acViewNormal, acReadOnly
We have a function that will allow a user to navigate to a text file and import it to a database. I've been asked to make it import ALL the text files from all sub-directories in the directory IF they've never been imported before (based on FileName and LastModifiedDate). I've set up a table to track what's getting imported (tbl_ImportHistory). I'm thinking what I need to do is use the previous coder's GetFileName function in a recursive loop removing the navigation request and adding the comparison and then, if it imports the file, the name and date need to be added to the tbl_ImportHistory table. But I'm completely unsure of how to do it.
I'm posting the GetFileName function below. I believe once I've got it modified the rest of the code can be left intact as it just parse's and loads whatever file is selected in the GetFileName function.
<code> Function GetFileName() As String Dim fd As FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker) fd.AllowMultiSelect = False Dim vrtSelectedItem As Variant
Hello. I have a replicated database, and I synchronise with other members of the replica set using Access's own synchronisation tool.
Everything was fine until recently, but now it keeps telling me that there is a conflict bur when I click to resolve the conflict it tells me that there are no conflict tables.
What is causing the database to think there is a conflict? If there is a conflict then why is it not showing me where it is when I click to resolve it?
How can I resolve the conflict if I can't see what it is?
I a trying to search some product from a search button and two combo boxes text values ,and on serch the vba code is :
Code:
Private Sub Command4_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim varRecords As Variant
[code]...
I just dont know,the fuile is created on click of button but with headers only,dtaa is not coming but wheni debug ,in immediate window,data is oming but just not coming in excel file.