<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Deleting Duplicate Records in FileMaker</title>
	<atom:link href="http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/feed/" rel="self" type="application/rss+xml" />
	<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/</link>
	<description>smart business solutions</description>
	<lastBuildDate>Sun, 29 Jan 2012 19:10:42 -0600</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Goetch</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-2085</link>
		<dc:creator>Goetch</dc:creator>
		<pubDate>Fri, 14 Oct 2011 16:04:21 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-2085</guid>
		<description>One tip for large databases is to insert a freeze window before you loop.  This drastically reduced the time it took for this simple solution to work.  My database of 25000 records originally took about 20 minutes to run, after the freeze window it only took 1 to 2 minutes to run.</description>
		<content:encoded><![CDATA[<p>One tip for large databases is to insert a freeze window before you loop.  This drastically reduced the time it took for this simple solution to work.  My database of 25000 records originally took about 20 minutes to run, after the freeze window it only took 1 to 2 minutes to run.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fay</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-2067</link>
		<dc:creator>Fay</dc:creator>
		<pubDate>Wed, 10 Aug 2011 09:59:39 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-2067</guid>
		<description>worked a CHARM, thanks!</description>
		<content:encoded><![CDATA[<p>worked a CHARM, thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gerardo Verrone</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-2032</link>
		<dc:creator>Gerardo Verrone</dc:creator>
		<pubDate>Fri, 21 Jan 2011 06:40:20 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-2032</guid>
		<description>Finally Guys I&#039;ve tested the Filemaker Suggested Method of two related tables, counter, calculation fields, etc and the result shoked me.

Import Time From Excel 18 Sec.
Amount of Start Records to Clean: 16592
Cleaning of Duplicated Records 6 Sec.
Amount of records Unique: 2387

With a couple of test, imagination and the amazing suggested FM instructions I have decreased a 27 min duplicated search to just 6 sec.

All the instructions are posted here: by the user: &quot;bodhibrian&quot;

http://forums.filemaker.com/posts/690cd1e356

Cheers bodhibrian to give all of us a great and fresh idea to speed up the process.

Gerardo Verrone.
animatorstudio@hotmail.com</description>
		<content:encoded><![CDATA[<p>Finally Guys I&#8217;ve tested the Filemaker Suggested Method of two related tables, counter, calculation fields, etc and the result shoked me.</p>
<p>Import Time From Excel 18 Sec.<br />
Amount of Start Records to Clean: 16592<br />
Cleaning of Duplicated Records 6 Sec.<br />
Amount of records Unique: 2387</p>
<p>With a couple of test, imagination and the amazing suggested FM instructions I have decreased a 27 min duplicated search to just 6 sec.</p>
<p>All the instructions are posted here: by the user: &#8220;bodhibrian&#8221;</p>
<p><a href="http://forums.filemaker.com/posts/690cd1e356" rel="nofollow">http://forums.filemaker.com/posts/690cd1e356</a></p>
<p>Cheers bodhibrian to give all of us a great and fresh idea to speed up the process.</p>
<p>Gerardo Verrone.<br />
<a href="mailto:animatorstudio@hotmail.com">animatorstudio@hotmail.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gerardo Verrone</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-2031</link>
		<dc:creator>Gerardo Verrone</dc:creator>
		<pubDate>Fri, 21 Jan 2011 05:54:08 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-2031</guid>
		<description>It&#039;s Me again and with good news !!!
Mi first idea works pretty quick with a big table.

I will explain my fields and type including the full script as with this I can handle a clean process in just .17 seconds compared to 27 minutes using the record by record way.

Table name: People

Record_ID (Serial)
Full Name (Text)
Soc_Security_Number (Number)
FCount (calculation with the formula Get ( FoundCount ) and the tick Do not evaluate if all... at the bottom uncheked)

Start_Time (Time) Global
End_Time (Time) Global
Total_Time (Time) Global



The table has 16.000 records and most of them have the social number and the Full name repeated several times but.

Inside the table is arranged with all the repetitive Full Names twogether one after the other like This:

Id     F. Name      Social Number

1      Jhon Smith      232323
2      Jhon Smith      232323
3      Maxwell Hunt    122343
4      Maxwell Hunt    122343
5      Maxwell Hunt    122343
6      Maxwell Hunt    122343
7      Karen Wright    698956
8      Karen Wright    698956

and so on until 16.000


The Script

Set Error Capture [on]

#Set the Time when the script start in a global (Time type) field. Use time not time stamp as with time stamp is not possible to substract time values.

Set Field [Start_Time; Get(CurrentHostTimeStamp)]
Show all records
Sort Records [by Record_ID] Just in case when you come to this layout or table it is unsorted.
Go to record/Request/Page [First]

Loop
	Set Variable [$Social; Value:Soc_Security_Number]
	Set Variable [$Record_Num; Value:Record_ID]
	Perform Find [looking for the equivalence Table:Soc_Security_Number = $Social. With this all the other records are omited]
	#If More than one record found, delete but omiting the first one.
	If [People:FCount &gt; 1]  #Meaning you have more than one record in the last found set
		Go to Record/Request/Page[First]
		Omit Record     #This will keep the first one
		Delete all Records [No Dialog]      # This delete all duplicated
	End if

	# Return to the position of the Record omited to jump to the next one and continue cleaning.

	Perform Find[$Record_Num]
	Show All Records
	Go to Record/Request/Page [Next; Exit after last]
End Loop

Set Field [End_Time; Get(CurrentHostTimeStamp)]
Set Field [Total_Time ; Start_Time - End_Time]

# Show a Message stating when the scipt has finished comparing actual time and start time from a global fields.

Show Custom Dialog [&quot;Process Finished&quot;  &amp; &quot;Start Time: &quot; &amp; Start_Time &amp; &quot;End Time: &quot; &amp; End_Time &amp; &quot;Total Time: &quot; &amp; Total_Time</description>
		<content:encoded><![CDATA[<p>It&#8217;s Me again and with good news !!!<br />
Mi first idea works pretty quick with a big table.</p>
<p>I will explain my fields and type including the full script as with this I can handle a clean process in just .17 seconds compared to 27 minutes using the record by record way.</p>
<p>Table name: People</p>
<p>Record_ID (Serial)<br />
Full Name (Text)<br />
Soc_Security_Number (Number)<br />
FCount (calculation with the formula Get ( FoundCount ) and the tick Do not evaluate if all&#8230; at the bottom uncheked)</p>
<p>Start_Time (Time) Global<br />
End_Time (Time) Global<br />
Total_Time (Time) Global</p>
<p>The table has 16.000 records and most of them have the social number and the Full name repeated several times but.</p>
<p>Inside the table is arranged with all the repetitive Full Names twogether one after the other like This:</p>
<p>Id     F. Name      Social Number</p>
<p>1      Jhon Smith      232323<br />
2      Jhon Smith      232323<br />
3      Maxwell Hunt    122343<br />
4      Maxwell Hunt    122343<br />
5      Maxwell Hunt    122343<br />
6      Maxwell Hunt    122343<br />
7      Karen Wright    698956<br />
8      Karen Wright    698956</p>
<p>and so on until 16.000</p>
<p>The Script</p>
<p>Set Error Capture [on]</p>
<p>#Set the Time when the script start in a global (Time type) field. Use time not time stamp as with time stamp is not possible to substract time values.</p>
<p>Set Field [Start_Time; Get(CurrentHostTimeStamp)]<br />
Show all records<br />
Sort Records [by Record_ID] Just in case when you come to this layout or table it is unsorted.<br />
Go to record/Request/Page [First]</p>
<p>Loop<br />
	Set Variable [$Social; Value:Soc_Security_Number]<br />
	Set Variable [$Record_Num; Value:Record_ID]<br />
	Perform Find [looking for the equivalence Table:Soc_Security_Number = $Social. With this all the other records are omited]<br />
	#If More than one record found, delete but omiting the first one.<br />
	If [People:FCount &gt; 1]  #Meaning you have more than one record in the last found set<br />
		Go to Record/Request/Page[First]<br />
		Omit Record     #This will keep the first one<br />
		Delete all Records [No Dialog]      # This delete all duplicated<br />
	End if</p>
<p>	# Return to the position of the Record omited to jump to the next one and continue cleaning.</p>
<p>	Perform Find[$Record_Num]<br />
	Show All Records<br />
	Go to Record/Request/Page [Next; Exit after last]<br />
End Loop</p>
<p>Set Field [End_Time; Get(CurrentHostTimeStamp)]<br />
Set Field [Total_Time ; Start_Time - End_Time]</p>
<p># Show a Message stating when the scipt has finished comparing actual time and start time from a global fields.</p>
<p>Show Custom Dialog [&#8221;Process Finished&#8221;  &amp; &#8220;Start Time: &#8221; &amp; Start_Time &amp; &#8220;End Time: &#8221; &amp; End_Time &amp; &#8220;Total Time: &#8221; &amp; Total_Time</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gerardo Verrone</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-2030</link>
		<dc:creator>Gerardo Verrone</dc:creator>
		<pubDate>Fri, 21 Jan 2011 04:54:38 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-2030</guid>
		<description>Hi Atif Khan,
Yesterday and without looking here I&#039;ve performed the same script as you. The reasson why I&#039;ve started to research for other way was because if we do it like you mentioned in a big table it takes so long.
For example I want to filter duplicated records in a table with more than 16.000 records and the result was 27 minutes to clean it in a Dual Xeon brand new computer.
I imagine two possible ways to sort this but I did not tried yet any of this scenarios.
First Case
1) Sort the table by the desired field I want to filter duplicates.
2) Introduce later a Field called something like Id_Number as serial non repetitive value so each record has a different number.
3) Inside a Loop structure grab the first record and store his Id_Number in one variable and the field you want to clean in other variable.
4) Perform a find looking for records equal to the one you want to delete and loop while you delete but bypassing the first one. This can be achieved by ommiting the first from the found set or simple jumping two records in this internal loop only the first time.
5) Delete all the found set.
6) Show all records
6) Perform a search to return to your record_id stored at 3, so the pointer will jump to that record
7) No you only need to go to next record (until last) and repeat alll the steps from 3 in advance.

Basically this structure ios the same as yours but istead of looking with each record for a repetition along all your table in a looping way you are grabing apart all the repetitive stuffs to delete it in just one step. I think this will be quicker.

The second method I have found is the one ilustrated in the help of filemaker using twice the same table in a relationship. Look in the help of FM11 for something like &quot;duplicate&quot; or look at here http://forums.filemaker.com/posts/690cd1e356

Good Luck
G.</description>
		<content:encoded><![CDATA[<p>Hi Atif Khan,<br />
Yesterday and without looking here I&#8217;ve performed the same script as you. The reasson why I&#8217;ve started to research for other way was because if we do it like you mentioned in a big table it takes so long.<br />
For example I want to filter duplicated records in a table with more than 16.000 records and the result was 27 minutes to clean it in a Dual Xeon brand new computer.<br />
I imagine two possible ways to sort this but I did not tried yet any of this scenarios.<br />
First Case<br />
1) Sort the table by the desired field I want to filter duplicates.<br />
2) Introduce later a Field called something like Id_Number as serial non repetitive value so each record has a different number.<br />
3) Inside a Loop structure grab the first record and store his Id_Number in one variable and the field you want to clean in other variable.<br />
4) Perform a find looking for records equal to the one you want to delete and loop while you delete but bypassing the first one. This can be achieved by ommiting the first from the found set or simple jumping two records in this internal loop only the first time.<br />
5) Delete all the found set.<br />
6) Show all records<br />
6) Perform a search to return to your record_id stored at 3, so the pointer will jump to that record<br />
7) No you only need to go to next record (until last) and repeat alll the steps from 3 in advance.</p>
<p>Basically this structure ios the same as yours but istead of looking with each record for a repetition along all your table in a looping way you are grabing apart all the repetitive stuffs to delete it in just one step. I think this will be quicker.</p>
<p>The second method I have found is the one ilustrated in the help of filemaker using twice the same table in a relationship. Look in the help of FM11 for something like &#8220;duplicate&#8221; or look at here <a href="http://forums.filemaker.com/posts/690cd1e356" rel="nofollow">http://forums.filemaker.com/posts/690cd1e356</a></p>
<p>Good Luck<br />
G.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Emma</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-2020</link>
		<dc:creator>Emma</dc:creator>
		<pubDate>Wed, 29 Dec 2010 21:05:09 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-2020</guid>
		<description>Many thanks indeed, that saved a good few hours for me!</description>
		<content:encoded><![CDATA[<p>Many thanks indeed, that saved a good few hours for me!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nunz</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-2010</link>
		<dc:creator>Nunz</dc:creator>
		<pubDate>Wed, 01 Dec 2010 03:20:36 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-2010</guid>
		<description>thnx Jesse and Geoff

As always, invaluable tips and tricks. FYI, i am using this technique in place of the &#039;validation&#039; rules in the field definitions. So I am allowing a user to create a record and enter all the details (in the case a &#039;company record&#039;). Then, before the record becomes &#039;active&#039;, i use this tip as part of the &#039;error check routine&#039; to ensure they haven&#039;t created a duplicate name or company code. 

The reason i&#039;m doing this is so that they can fill in a record (and leave it in complete if they need to...while they hunt down phone numbers and stuff we REQUIRE to setup an account). Once they have all the info in it, they &#039;activate&#039; the record (meaning work can be done with that record) and then i use this as part of the error checking step...to ensure we don&#039;t GET duplicates!

So with a bit of luck, using this tip HERE, will stop the duplicates occurring...which was the reason for the article in the first place!

Once again. Thnx</description>
		<content:encoded><![CDATA[<p>thnx Jesse and Geoff</p>
<p>As always, invaluable tips and tricks. FYI, i am using this technique in place of the &#8216;validation&#8217; rules in the field definitions. So I am allowing a user to create a record and enter all the details (in the case a &#8216;company record&#8217;). Then, before the record becomes &#8216;active&#8217;, i use this tip as part of the &#8216;error check routine&#8217; to ensure they haven&#8217;t created a duplicate name or company code. </p>
<p>The reason i&#8217;m doing this is so that they can fill in a record (and leave it in complete if they need to&#8230;while they hunt down phone numbers and stuff we REQUIRE to setup an account). Once they have all the info in it, they &#8216;activate&#8217; the record (meaning work can be done with that record) and then i use this as part of the error checking step&#8230;to ensure we don&#8217;t GET duplicates!</p>
<p>So with a bit of luck, using this tip HERE, will stop the duplicates occurring&#8230;which was the reason for the article in the first place!</p>
<p>Once again. Thnx</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Don Walker</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-2003</link>
		<dc:creator>Don Walker</dc:creator>
		<pubDate>Wed, 17 Nov 2010 23:34:25 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-2003</guid>
		<description>I&#039;m trying to work a variation on this theme. I&#039;m working with a sports league which requires each player to be individually registered. I can&#039;t delete the &quot;duplicate&quot; records but want to create a mailing list that has each address once with the first names concatenated into a &quot;names&quot; field to go along with the last name and address fields.
thanks,
Don</description>
		<content:encoded><![CDATA[<p>I&#8217;m trying to work a variation on this theme. I&#8217;m working with a sports league which requires each player to be individually registered. I can&#8217;t delete the &#8220;duplicate&#8221; records but want to create a mailing list that has each address once with the first names concatenated into a &#8220;names&#8221; field to go along with the last name and address fields.<br />
thanks,<br />
Don</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Atif Khan</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-1922</link>
		<dc:creator>Atif Khan</dc:creator>
		<pubDate>Fri, 19 Mar 2010 19:37:54 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-1922</guid>
		<description>I created this script and it worked fine. $NAME will copy the value for which I am looking a duplicate record. Sort the records first and run this script.

I don’t know how to copy the script form FileMaker to here so this is just my typing here.

Show all records
Sort Records
Go to First Record
Set Variable $Name=cFirstNameLastName (assuming I am checking on this field)
Go to Next Record– to match the $name
Loop
IF( cFirstNameLastName=$NAME
DELETE RECORD — If it is same as previous record delete it
ELSE
Set Variable $Name=cFirstNameLastName –if not reset the variable to current records value
GO to Next Recrd (next, exit after last)
End if

END LOOP</description>
		<content:encoded><![CDATA[<p>I created this script and it worked fine. $NAME will copy the value for which I am looking a duplicate record. Sort the records first and run this script.</p>
<p>I don’t know how to copy the script form FileMaker to here so this is just my typing here.</p>
<p>Show all records<br />
Sort Records<br />
Go to First Record<br />
Set Variable $Name=cFirstNameLastName (assuming I am checking on this field)<br />
Go to Next Record– to match the $name<br />
Loop<br />
IF( cFirstNameLastName=$NAME<br />
DELETE RECORD — If it is same as previous record delete it<br />
ELSE<br />
Set Variable $Name=cFirstNameLastName –if not reset the variable to current records value<br />
GO to Next Recrd (next, exit after last)<br />
End if</p>
<p>END LOOP</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Atif Khan</title>
		<link>http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/comment-page-1/#comment-1921</link>
		<dc:creator>Atif Khan</dc:creator>
		<pubDate>Fri, 19 Mar 2010 19:35:54 +0000</pubDate>
		<guid isPermaLink="false">http://sixfriedrice.com/wp/deleting-duplicate-records-in-filemaker/#comment-1921</guid>
		<description>I created this script and it worked fine.  $ID will copy the value for which I am looking a duplicate record.  Sort the records first and run this script.

I don&#039;t know how to copy the script form FileMaker to here so this is just my typing here.

Show all records
Sort Records
Go to First Record
Set Variable $Name=cFirstNameLastName (assuming I am checking on this field)
Go to Next Record-- to match the $name 
Loop
  IF( cFirstNameLastName=$NAME
       DELETE RECORD  --- it is same as previous record delete it
  ELSE
       Set Variable $Name=$NAME --if not reset the variable to current records value
    GO to Next Recrd (next, exit after last)
End if

END LOOP</description>
		<content:encoded><![CDATA[<p>I created this script and it worked fine.  $ID will copy the value for which I am looking a duplicate record.  Sort the records first and run this script.</p>
<p>I don&#8217;t know how to copy the script form FileMaker to here so this is just my typing here.</p>
<p>Show all records<br />
Sort Records<br />
Go to First Record<br />
Set Variable $Name=cFirstNameLastName (assuming I am checking on this field)<br />
Go to Next Record&#8211; to match the $name<br />
Loop<br />
  IF( cFirstNameLastName=$NAME<br />
       DELETE RECORD  &#8212; it is same as previous record delete it<br />
  ELSE<br />
       Set Variable $Name=$NAME &#8211;if not reset the variable to current records value<br />
    GO to Next Recrd (next, exit after last)<br />
End if</p>
<p>END LOOP</p>
]]></content:encoded>
	</item>
</channel>
</rss>

