the general idea is like this:
If (False) //create sample data
ds.xFieldInfo.all().drop()
$exFieldInfo:=ds.xFieldInfo.new()
$exFieldInfo.TableIDRef:=Table(->[Table_1])
$exFieldInfo.FieldID:=Field(->[Table_1]Field_2)
$exFieldInfo.save()
$exFieldInfo:=ds.xFieldInfo.new()
$exFieldInfo.TableIDRef:=Table(->[Table_1])
$exFieldInfo.FieldID:=Field(->[Table_1]Field_3)
$exFieldInfo.save()
$exFieldInfo:=ds.xFieldInfo.new()
$exFieldInfo.TableIDRef:=Table(->[Table_1])
$exFieldInfo.FieldID:=Field(->[Table_1]Field_4)
$exFieldInfo.save()
End if
vtxtSearch1:="a"
vtxtSearch2:="b"
vtxtSearch3:="c"
$esxFieldInfo:=ds.xFieldInfo.all()
$count:=0
$criteria:=New collection
$params:=New object("attributes";New object;"parameters";New object)
For each ($exFieldInfo;$esxFieldInfo)
$count:=$count+1
$parameter:="vtxtSearch"+String($count)
$searchptr:=Get pointer($parameter)
If (Value type($searchptr->)=Is text)
If ($searchptr->#"")
$attribute:=Field name($exFieldInfo.TableIDRef;$exFieldInfo.FieldID)
$params.attributes[$attribute]:=$attribute
$params.parameters[$parameter]:=$searchptr->
$criterium:=":"+$attribute+" == :"+$parameter
$criteria.push($criterium)
End if
End if
End for each
vptrCurrentTable:=->[Table_1]
$es:=ds[Table name(vptrCurrentTable)].query($criteria.join(" and ");$params)
---
when you call query(),
$criteria would contain
[:Field_2 == :vtxtSearch1,:Field_3 == :vtxtSearch2,:Field_4 == :vtxtSearch3]
$params would contain
{attributes:{Field_2:Field_2,Field_3:Field_3,Field_4:Field_4},parameters:{vtxtSearch1:a,vtxtSearch2:b,vtxtSearch3:c}}
---
for more info see:
https://doc.4d.com/4Dv18/4D/18.4/dataClassquery.305-5233999.en.html
**********************************************************************
4D Internet Users Group (4D iNUG)
New Forum: https://discuss.4D.com
Archive: http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub: mailto:[email protected]
**********************************************************************