[field_list]

Description

Link: [field_list]
Author: Ke Carlton
Category: Database
Version: 8.x
License: Public Domain
Posted: Feb. 08, 2007
Updated: Oct. 03, 2008
More by this author...

Compare action_params with the datasource. Useful to track down missing fields on layouts, unsed fields or the difference between fields supplied and the datasource.

Useful when Filemaker systems fail to report problematic fields.

Parameters

-params array, required An array of pairs (typically action_params)
-mode string, optional Determines returned result set

Sample Usage

[inline:-database='mysql',-table='db','missing field' = 123,-search]
   [field_list(-params=action_params,-mode='missing')]
[/inline]
						

Source Code

Click the "Download" button below to retrieve a copy of this tag, including the complete documentation and sample usage shown on this page. Place the downloaded ".inc" file in your LassoStartup folder, restart Lasso, and you can begin using this tag immediately.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
[define_tag( 'list',
			-namespace	= 'field',
			-optional	= 'params',-copy,
			-optional	= 'mode',
			-description= '[field_list] - Compare action_params with the datasource'
			);

			//	returns: set
			//	-params: An array of pairs (typically action_params)
			//	-mode == 'missing'		=	returns set - missing fields 
			//	-mode == 'unused'		=	returns set - unused fields (not updated/searched on etc)
			//	-mode == 'difference'	=	returns set - difference between source and target field sets
			//	-mode else				=	returns set - target's fields
			
	fail_if: (local:'params')->type != 'array',-2, #_ref': Requires an array of pairs (action_params)';
	
	!(local_defined:'mode')	? local:'mode'='default';
	
	local:'_copyParams'	= '-Database,-Table,-Layout'->split(',');
	local:'_actionFields'	= set;
	local:'_inline'			= array;
	local:'_ref'			= 'field_'+tag_name;
	
	//	Seperate fields from "-params"
	iterate:#params,(local:'pair');
		local:'_param'	= string(#pair->get(1));
		local:'_value'	= string(#pair->get(2));
		
		#_param->beginsWith('-')=='false'?
			#_actionFields->insert(#_param)
				| (#_copyParams >> #_param ? #_inline->insert(#_param = #_value));				
	/iterate;
	
	fail_if: #_inline->size == 0		, -2, #_ref': Missing schema params';
	fail_if: #_inline !>> '-Database'	, -2, #_ref': database param';
	fail_if: #_inline !>> '-Layout' && #_inline !>> '-Table' , -2, #_ref': Missing -table or -layout param';
	
	//	Pull true field names
	inline:#_inline,-show;
		local:'_tableFields' = set;
		#_tableFields->insertFrom(field_names->iterator);
	/inline;
	
	if:#mode == 'missing';
		local:'_missing'=set;
		iterate:#_actionFields,(local:'_param');
			#_tablefields !>> #_param ? #_missing->insert(#_param);
		/iterate;				
		return:#_missing;
		
	else:#mode == 'unused';
		local:'_unused'=set;
		iterate:#_tablefields,(local:'_param');
			#_actionFields !>> #_param ? #_unused->insert(#_param);
		/iterate;
		return:#_unused;	
				
	else:#mode == 'difference';			
		return:#_tableFields->difference(#_actionFields);

	else;
		fail:-2,Namespace_Current #_ref': Unknown mode: '#mode;
	/if;
	
/define_tag]

 

Comments

none

Email:


Password:



Newest

Most Popular

Support tagSwap.net