I have a search form that returns records to another form, rather than a table. Here are my questions:
1) Is it possible to export the form results (as opposed to query results) to CSV? I've been successful at exporting a table of results before, but not a form.
2) If so, can this be done via macro?
3) If a macro is possible, can the macro further allow the user to choose location and filename when exporting?
I've tried a straightforward approach of pointing the macro to the form, but it appears that the macro only wants a table or query. My guess is that I will have to build a further query 'behind the scenes' in order to export...
Thanks,
-Scott
13 6260 ADezii 8,834
Recognized Expert Expert
I have a search form that returns records to another form, rather than a table. Here are my questions:
1) Is it possible to export the form results (as opposed to query results) to CSV? I've been successful at exporting a table of results before, but not a form.
2) If so, can this be done via macro?
3) If a macro is possible, can the macro further allow the user to choose location and filename when exporting?
I've tried a straightforward approach of pointing the macro to the form, but it appears that the macro only wants a table or query. My guess is that I will have to build a further query 'behind the scenes' in order to export...
Thanks,
-Scott
1. Form results cannot be transfered to a CSV File. In order to Export data to a CSV File, you use the TransferText() Method and this Method requires either a Table or Query Argument, not an SQL Statement. You must first create a query and then specify the name of the query in the Table Name argument. All is not lost however, because if your Form results are generated by changing the RecordSource of the Form, you can programmatically create the CSV File by the following code which creates a Recordset based on the Form's RecordSource and writes selected Fields in a CSV Format to CSV.txt in the Test Directory. Field names are my own for testing purposes. - Dim MySQL As String, MyDB As Database, MyRS As Recordset
-
-
MySQL = Me.RecordSource
-
-
Open "C:\Test\CSV.txt" For Output As #1
-
-
Set MyDB = CurrentDb()
-
Set MyRS = MyDB.OpenRecordset(MySQL, dbOpenDynaset)
-
Do While Not MyRS.EOF
-
Write #1, MyRS![EmployeeID], MyRS![FirstName], MyRS![LastName]
-
MyRS.MoveNext
-
Loop
-
MsgBox MyRS.RecordCount
-
-
Close #1
-
MyRS.Close
If you are further interested, please let me know. I'm sure the other Experts/ Moderators will come up with other solutions, probably better. Good Luck!
MMcCarthy 14,534
Recognized Expert Moderator MVP
Actually, that is an excellent solution, one variation I would try (borrowing ADezii's code) is ... -
Dim MyRS As Recordset
-
-
Open "C:\Test\CSV.txt" For Output As #1
-
-
Set MyRS = Me.RecordsetClone
-
MyRS.MoveFirst
-
Do While Not MyRS.EOF
-
Write #1, MyRS![EmployeeID], MyRS![FirstName], MyRS![LastName]
-
MyRS.MoveNext
-
Loop
-
MsgBox MyRS.RecordCount
-
-
Close #1
-
MyRS.Close
I'm not sure if RecordsetClone will return the filtered records but I think it will.
Mary
ADezii 8,834
Recognized Expert Expert
Actually, that is an excellent solution, one variation I would try (borrowing ADezii's code) is ... -
MyRS As Recordset
-
-
Open "C:\Test\CSV.txt" For Output As #1
-
-
Set MyRS = Me.RecordsetClone
-
MyRS.MoveFirst
-
Do While Not MyRS.EOF
-
Write #1, MyRS![EmployeeID], MyRS![FirstName], MyRS![LastName]
-
MyRS.MoveNext
-
Loop
-
MsgBox MyRS.RecordCount
-
-
Close #1
-
MyRS.Close
I'm not sure if RecordsetClone will return the filtered records but I think it will.
Mary
You were right on with the RecordsetClone approach, thanks. No sense playing around with the original, when you can use a copy!
MMcCarthy 14,534
Recognized Expert Moderator MVP
You were right on with the RecordsetClone approach, thanks. No sense playing around with the original, when you can use a copy!
LOL - My thoughts exactly.
Trying Mary's mods, I am getting an error: File Already Open. The code is attached to a button on the results form.
I've checked to see if the CSV file actually is open, but it ain't. This happens even after closing and reopening the db. I've also tried changing the location and just deleting the file, but that results in an Object Required notice as expected.
I also have a problem with the As Database declaration throwing another error about invalid user-defined type. Commenting it out yields the above results. Did I misunderstand how to declare that variable?
MMcCarthy 14,534
Recognized Expert Moderator MVP
Trying Mary's mods, I am getting an error: File Already Open. The code is attached to a button on the results form.
I've checked to see if the CSV file actually is open, but it ain't. This happens even after closing and reopening the db. I've also tried changing the location and just deleting the file, but that results in an Object Required notice as expected.
I also have a problem with the As Database declaration throwing another error about invalid user-defined type. Commenting it out yields the above results. Did I misunderstand how to declare that variable?
It's not included in my mods
try adding this line of code to the beginning of the code before the 'Open' statement.
Sorry Mary - my response implied incorrectly that it was part of your example. I discovered it wasn't appropriate to the code, so have since removed it.
I've also tried using Close in the beginning of the code, but that now gives a Type Mismatch error. I guess that means there's something wrong with the variable declaration, but I don't see how using RecordsetClone would violate strict typing. Here's my current code: -
Private Sub cmdPrintToCSV_Click()
-
On Error GoTo Err_cmdPrintToCSV_Click
-
-
Dim MyRS As Recordset
-
-
Close #1
-
-
Open "e:\Documents and Settings\profile\Desktop\CSV.txt" For Output As #1
-
-
Set MyRS = Me.RecordsetClone
-
MyRS.MoveFirst
-
Do While Not MyRS.EOF
-
Write #1, MyRS![cardTitle]
-
MyRS.MoveNext
-
Loop
-
MsgBox MyRS.RecordCount
-
-
Close #1
-
MyRS.Close
-
-
Exit_cmdPrintToCSV_Click:
-
Exit Sub
-
-
Err_cmdPrintToCSV_Click:
-
MsgBox Err.Description
-
Resume Exit_cmdPrintToCSV_Click
-
-
End Sub
-
Note that I am currently only trying to record one element from the form, [cardTitle]. Eventually, there will be about 10 elements.
MMcCarthy 14,534
Recognized Expert Moderator MVP
Sorry Mary - my response implied incorrectly that it was part of your example. I discovered it wasn't appropriate to the code, so have since removed it.
I've also tried using Close in the beginning of the code, but that now gives a Type Mismatch error. I guess that means there's something wrong with the variable declaration, but I don't see how using RecordsetClone would violate strict typing. Here's my current code: -
Private Sub cmdPrintToCSV_Click()
-
On Error GoTo Err_cmdPrintToCSV_Click
-
-
Dim MyRS As Recordset
-
-
Close #1
-
-
Open "e:\Documents and Settings\profile\Desktop\CSV.txt" For Output As #1
-
-
Set MyRS = Me.RecordsetClone
-
MyRS.MoveFirst
-
Do While Not MyRS.EOF
-
Write #1, MyRS![cardTitle]
-
MyRS.MoveNext
-
Loop
-
MsgBox MyRS.RecordCount
-
-
Close #1
-
MyRS.Close
-
-
Exit_cmdPrintToCSV_Click:
-
Exit Sub
-
-
Err_cmdPrintToCSV_Click:
-
MsgBox Err.Description
-
Resume Exit_cmdPrintToCSV_Click
-
-
End Sub
-
Note that I am currently only trying to record one element from the form, [cardTitle]. Eventually, there will be about 10 elements.
The code is fine. At a guess I would say you have no DAO library ticked. In the VBA Editor window go to Tools - References and make sure there is a Microsoft DAO Library ticked on the list.
Mary
Thanks again, Mary, but still getting the type mismatch error. I did not have a DAO reference, so I tried each of the 3 available in turn. None gave me a different result. In desperation, I closed everything and recompiled, but of course that did nothing.
Could the error have something to do with my form or tables? Or is it most likely something in the VBA script?
MMcCarthy 14,534
Recognized Expert Moderator MVP
Thanks again, Mary, but still getting the type mismatch error. I did not have a DAO reference, so I tried each of the 3 available in turn. None gave me a different result. In desperation, I closed everything and recompiled, but of course that did nothing.
Could the error have something to do with my form or tables? Or is it most likely something in the VBA script?
Tick the DAO reference with the highest version number and then use the up arrow to move it to the highest point on the list it will go. This will probably be around position 3. Then try again ...
Mary
ADezii 8,834
Recognized Expert Expert
Thanks again, Mary, but still getting the type mismatch error. I did not have a DAO reference, so I tried each of the 3 available in turn. None gave me a different result. In desperation, I closed everything and recompiled, but of course that did nothing.
Could the error have something to do with my form or tables? Or is it most likely something in the VBA script?
You may have References set to both DAO and ADO Libraries. In that case you may to to explicitly Declare the Object Variables as in: - Dim MyDB As DAO.Database, MyRS As DAO.Recordset
Hmm... that worked on my desktop, but not on my laptop. Both are running the same install, afaik.
No biggie. As long as one of them works, I can get what I need.
I've changed from Write # to Print # to get tab-delimited instead. Other than that, I think this part is good to go!
Thanks very much =)
**edit**
I hadn't seen ADezii's post when I wrote this. I'll try the explicit declarations on my laptop in a bit. Again, I really appreciate the help.
MMcCarthy 14,534
Recognized Expert Moderator MVP
Hmm... that worked on my desktop, but not on my laptop. Both are running the same install, afaik.
No biggie. As long as one of them works, I can get what I need.
I've changed from Write # to Print # to get tab-delimited instead. Other than that, I think this part is good to go!
Thanks very much =)
You're welcome.
BTW, did you catch ADezii's post as you both posted very close together. It might solve the laptop issue.
Mary
Sign in to post your reply or Sign up for a free account.
Similar topics |
by: Tim Eliot |
last post by:
Just wondering if anyone has hit the following issue and how you might
have sorted it out.
I am using the command:
DoCmd.TransferText acExportMerge, , stDataSource, stFileName, True
after...
|
by: Makuhari1998 |
last post by:
Is it possible to create a macro that will open 7 reports at once and
automatically export the results of each report into Excel? Can the
results be exported into the same Excel workbook, or will...
|
by: Jean |
last post by:
Hello,
I have a form that performs a search, according to criteria that a
user enters into the text boxes.
When the user clicks on „Search", a SQL string (say strSQL) is built
up with the...
|
by: Steph |
last post by:
Hi.
I'm very new to MS Access and have been presented with an Access database
of contacts by my employer.
I am trying to redesign the main form of the database so that a button
entitled...
|
by: Not Me |
last post by:
Hi,
I'm trying to export from a gridview control, to an excel file using
code intended for a datagrid control (it's all over the web, can post if
requested)
I get the error.
Control...
| |
by: cassey14 |
last post by:
Hi everyone!
I really need your help..
I have a search form..And in that search form I have a subform..When they search, the results will display in the subform..I want to export to excel the...
|
by: robertoathome |
last post by:
Hello, I successully adapted a search form from a microsoft example into my own db.
MS Example
I type search parameters in 2 boxes and the results are returned in a new, basic query window.
...
|
by: Marisol2 |
last post by:
I have some queries in Access 2003 db that I have setup to display as pivots. I can go into design pivot table view and click on and then click on Export to Office MicroSoft Excel. The problem is I...
|
by: ollyb303 |
last post by:
Hi,
I am having a bit of a problem with TransferText macro.
I am using TransferText, Export Delimited (no field names) to export the results of a query as a .csv file.
The query is based on...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
| |
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The...
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...
| |