Hi there. I want to be able to find a set eg: 'USA buyers' and mark this set, so that next year, after the database has grown, when I want to repeat the mailing to USA buyers, I can easily find the ones I mailed this year again.
You would find them again by repeating the search for “USA buyers” – but that's probably not exactly what you meant …
I had thought about setting up a new field, but then couldn't work out how to enter data in it just for the found set
There's Replace Field Contents, which would allow you to do just that, or a looping script with Set Field and error capture for multi-user friendliness. So e.g. create a date field ”lastMailedOn“ and give all records in the found set the date of the mailing.
or is there a better way to do this??
That really depends on how many mailings you do, and how much info about mailing lists (and the actual mailings) you want to preserve. You could e.g.
1. use two tables MailingLists --< Customers|MailingLists
2. have one table in which you register when a customer has been actually mailed
Basically, this is simply the field lastMailedOn in it's own table related to Customers, but it allows you to keep a history of mailings, in total and per customer, while the simple approach will overwrite old data and e.g. cannot tell you how often one customer has been mailed.
Basic approach: after a successful Send Mail step, import the found set from Customers into this table and Replace Field Contents for the newly imported records.
3. combine both methods, so you not only know that/when a customer has been mailed, but also what the mailing was about
The fastest way to remember a found set of records is AFAIK to build a script :
- Go to a layout called "clip" which contains a global variable named for example gUserClipboard
- Store the current clipboard in it via paste
- Go to a layout where only the primary key is displayed
- Copy All Records
- Go to a new record in the mailing table
- Paste into a field called for example CustomerIDs
- go to Clip layout and copy the gUserClipboard
- go to the original layout.
You also need a relationship from Mailings::CustomerIDs to Clients::ID, call it RetrieveMailingClients.
Every time you're on a mailing and you Go to Related Records(RetrieveMailingClients, show only related, match current) you'll get your original found set.
Hi siplus (and newbie),
In FMP 13, you might consider the new "List of" summary field type as an alternative for gathering a list of IDs from a found set without messing with (and having to then restore) the user's clipboard. I'm not sure how its speed compares with Copy All Records, but in my testing it was a remarkably speedy way to gather IDs.
The fastest way […] :
Maybe it is, maybe not – since you have no idea how large the user's clipboard contents is at that moment, you can't really tell. (Maybe she just skipped over while editing a multilayered TIFF in Photoshop …?)
Why not use a looped GetNthRecord() instead? It's a bit slower than Copy All Records, but avoids the overhead of global field, otherwise useless layout and clipboard manipulation (and may all in all even be faster).
In FM13 you could get the list with the new summary type List of.
"List of" probably rules, you're right. It takes time to mentally update to FM's latest offerings...therefore I used "AFAIK" in my original message.
Thank you for all the suggestions. I will play around and see which method(s) I can get to work!
The other method is to use the Snapshot link.
Create a new Snapshot link and then save it in a container field in a utility table. You can save as many as you like and label then however you like and then recall it again next time you need it.
Hi there. I want to be able to find a set eg: 'USA buyers' and mark this set, so that next year, after the database has grown, when I want to repeat the mailing to USA buyers, I can easily find the ones I mailed this year again
Do you really want to find exactly the same set of records? What if there are more USA Buyers in the database? What if some are no longer “USA Buyers” but have become “EU Buyers”?
If you want to know exactly which records were used, keep a record of who you sent emails to. You can then search by date or subject or something and find all those records.
If you want to send an email to all the current “USA buyers” then you simply need to do a search on the field which is “USA Buyers”.
HI Malcolm. I think my question is much more basic than the responses suggest, and you seem to be getting me!! Yes, I want to be able to find who I mailed last year to see how effective the mailout (resulting in more sales). Then I will repeat the mailing this year and compare the effectiveness. That's the overall intention. When the database was small I would call up my records, create a new field labelled 'mailing 2012' for example, and put a y in the new field (by manually typing a y in the new field!!). I want to know how to add this y in the field automatically as now there are over 800 records to mark I can't possibly do this manually for each mailing. I have been trying to look in the help documentation but haven't solved it yet - probably not looking for the right words!!. If the table were a spreadsheet I would 'fill down'. (But all the other suggestions are useful too, as they illustrate to me how I should be thinking!!) Thanks again everyone for all the suggestions. T
Hyperlist describes a good overview of different ways of gathering IDs of a found set. I don't think they've included "ListOf" yet, but what they have shows the speeds for different found sets. So you can pick your method depending on what your current found set is:
Just started work on the DB again. Replace Field Contents does exactly what I want to do. This is great for now. I may try the more sophisticated solutions when my needs are more involved. Thanks everyone!! T