I developed a module that creates a songbook on-the-fly. Based on the song_id it loads the verses of that song in the next many2many field. Sometimes, a song does not have verses and in that case the field is not visible.
<page string="Liturgy Morning">
<field name="liturgy_morning_line">
<form string="Liturgy Morning Lines">
<group>
<group>
<field name="song_id"/>
</group>
</group>
</form>
<tree string="Liturgy Morning Lines" editable="bottom">
<field name="sequence" widget="handle"/>
<field name="song_id" options="{'no_quick_create':True,'no_create_edit':True}"/>
<field name="has_songverses" invisible="1"/>
<field name="songverse_ids" widget="many2many_tags" options="{'no_quick_create':True, 'no_create_edit': True}" domain="[('song_id', '=', song_id)]" attrs="{'invisible':[('has_songverses','=',False)]}"/>
</tree>
</field>
</page>
Note the "attrs="{'invisible':[('has_songverses','=',False)]}"" in the code. The model has a field 'has_songverses' which checkes if a song has verses or not. In case the song has no verses the field is invisible.
My issue is as follows: in case a song has verses the many2many field with song verses is loaded outside the form (see attached screenshot). IMAGE:
many2many field with song verses is loaded outside the form
If I click again in the form the field is correctly rendered inside the form.
Does anyone have a solution for this issue?
Thanks in advance!
I am a Solr noob and am trying to get it to index a mysql database. I have it installed and running with the example docs that come with the distro. When I try to create a new core, I get an error
Error CREATEing SolrCore 'mailstore': Unable to create core [mailstore] Caused by:
_version_ field must exist in schema and be searchable (indexed or docValues) and
retrievable(stored or docValues) and not multiValued (_version_ does not exist)
Here is my schema.xml, adapted from the example in Github:
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="mailschema" version="1.6">
<field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>
<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="SentOn" type="date" indexed="true" stored="true"/>
<field name="Body" type="text_general" indexed="true" stored="true"/>
<field name="ConversationTopic" type="text_general" indexed="true" stored="true"/>
<uniqueKey>id</uniqueKey>
<!-- Dynamic field definitions allow using convention over configuration
for fields via the specification of patterns to match field names.
EXAMPLE: name="*_i" will match any field ending in _i (like myid_i, z_i)
RESTRICTION: the glob-like pattern in the name attribute must have
a "*" only at the start or the end. -->
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true" />
<dynamicField name="*_ss" type="string" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>
<dynamicField name="*_ls" type="long" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
<dynamicField name="*_txt" type="text_general" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_en" type="text_en" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
<dynamicField name="*_bs" type="boolean" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_f" type="float" indexed="true" stored="true"/>
<dynamicField name="*_fs" type="float" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_d" type="double" indexed="true" stored="true"/>
<dynamicField name="*_ds" type="double" indexed="true" stored="true" multiValued="true"/>
<!-- Type used to index the lat and lon components for the "location" FieldType -->
<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" useDocValuesAsStored="false" />
<dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
<dynamicField name="*_dts" type="date" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_p" type="location" indexed="true" stored="true"/>
<!-- some trie-coded dynamic fields for faster range queries -->
<dynamicField name="*_ti" type="tint" indexed="true" stored="true"/>
<dynamicField name="*_tl" type="tlong" indexed="true" stored="true"/>
<dynamicField name="*_tf" type="tfloat" indexed="true" stored="true"/>
<dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/>
<dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
<dynamicField name="*_c" type="currency" indexed="true" stored="true"/>
<dynamicField name="ignored_*" type="ignored" multiValued="true"/>
<dynamicField name="attr_*" type="text_general" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="random_*" type="random" />
<!-- uncomment the following to ignore any fields that don't already match an existing
field name or dynamic field, rather than reporting them as an error.
alternately, change the type="ignored" to some other type e.g. "text" if you want
unknown fields indexed and/or stored by default -->
<!--dynamicField name="*" type="ignored" multiValued="true" /-->
<!-- Field to use to determine and enforce document uniqueness.
Unless this field is marked with required="false", it will be a required field
-->
<uniqueKey>id</uniqueKey>
<!-- copyField commands copy one field to another at the time a document
is added to the index. It's used either to index the same field differently,
or to add multiple fields to the same field for easier/faster searching. -->
<!--
<copyField source="title" dest="text"/>
<copyField source="body" dest="text"/>
-->
<!-- field type definitions. The "name" attribute is
just a label to be used by field definitions. The "class"
attribute and any other attributes determine the real
behavior of the fieldType.
Class names starting with "solr" refer to java classes in a
standard package such as org.apache.solr.analysis
-->
<!-- The StrField type is not analyzed, but indexed/stored verbatim.
It supports doc values but in that case the field needs to be
single-valued and either required or have a default value.
-->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true" />
<!-- boolean type: "true" or "false" -->
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<!-- sortMissingLast and sortMissingFirst attributes are optional attributes are
currently supported on types that are sorted internally as strings
and on numeric types.
This includes "string","boolean", and, as of 3.5 (and 4.x),
int, float, long, date, double, including the "Trie" variants.
- If sortMissingLast="true", then a sort on this field will cause documents
without the field to come after documents with the field,
regardless of the requested sort order (asc or desc).
- If sortMissingFirst="true", then a sort on this field will cause documents
without the field to come before documents with the field,
regardless of the requested sort order.
- If sortMissingLast="false" and sortMissingFirst="false" (the default),
then default lucene sorting will be used which places docs without the
field first in an ascending sort and last in a descending sort.
-->
<!--
Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
These fields support doc values, but they require the field to be
single-valued and either be required or have a default value.
-->
<fieldType name="int" class="solr.TrieIntField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="float" class="solr.TrieFloatField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="long" class="solr.TrieLongField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="double" class="solr.TrieDoubleField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
<!--
Numeric field types that index each value at various levels of precision
to accelerate range queries when the number of values between the range
endpoints is large. See the javadoc for NumericRangeQuery for internal
implementation details.
Smaller precisionStep values (specified in bits) will lead to more tokens
indexed per value, slightly larger index size, and faster range queries.
A precisionStep of 0 disables indexing at different precision levels.
-->
<fieldType name="tint" class="solr.TrieIntField" docValues="true" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="tfloat" class="solr.TrieFloatField" docValues="true" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="tlong" class="solr.TrieLongField" docValues="true" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="tdouble" class="solr.TrieDoubleField" docValues="true" precisionStep="8" positionIncrementGap="0"/>
<!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
is a more restricted form of the canonical representation of dateTime
http://www.w3.org/TR/xmlschema-2/#dateTime
The trailing "Z" designates UTC time and is mandatory.
Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
All other components are mandatory.
Expressions can also be used to denote calculations that should be
performed relative to "NOW" to determine the value, ie...
NOW/HOUR
... Round to the start of the current hour
NOW-1DAY
... Exactly 1 day prior to now
NOW/DAY+6MONTHS+3DAYS
... 6 months and 3 days in the future from the start of
the current day
Consult the TrieDateField javadocs for more information.
Note: For faster range queries, consider the tdate type
-->
<fieldType name="date" class="solr.TrieDateField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
<!-- A Trie based date field for faster date range queries and date faceting. -->
<fieldType name="tdate" class="solr.TrieDateField" docValues="true" precisionStep="6" positionIncrementGap="0"/>
<!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
<fieldType name="binary" class="solr.BinaryField"/>
<!-- The "RandomSortField" is not used to store or search any
data. You can declare fields of this type it in your schema
to generate pseudo-random orderings of your docs for sorting
or function purposes. The ordering is generated based on the field
name and the version of the index. As long as the index version
remains unchanged, and the same field name is reused,
the ordering of the docs will be consistent.
If you want different psuedo-random orderings of documents,
for the same version of the index, use a dynamicField and
change the field name in the request.
-->
<fieldType name="random" class="solr.RandomSortField" indexed="true" />
<!-- solr.TextField allows the specification of custom text analyzers
specified as a tokenizer and a list of token filters. Different
analyzers may be specified for indexing and querying.
The optional positionIncrementGap puts space between multiple fields of
this type on the same document, with the purpose of preventing false phrase
matching across fields.
For more info on customizing your analyzer chain, please see
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
-->
<!-- One can also specify an existing Analyzer class that has a
default constructor via the class attribute on the analyzer element.
Example:
<fieldType name="text_greek" class="solr.TextField">
<analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
</fieldType>
-->
<!-- A text field that only splits on whitespace for exact matching of words -->
<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldType>
<!-- A general text field that has reasonable, generic
cross-language defaults: it tokenizes with StandardTokenizer,
removes stop words from case-insensitive "stopwords.txt"
(empty by default), and down cases. At query time only, it
also applies synonyms. -->
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- A text field with defaults appropriate for English: it
tokenizes with StandardTokenizer, removes English stop words
(lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
finally applies Porter's stemming. The query time analyzer
also applies synonyms from synonyms.txt. -->
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<!-- Case insensitive stop word removal.
-->
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
<filter class="solr.EnglishMinimalStemFilterFactory"/>
-->
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
<filter class="solr.EnglishMinimalStemFilterFactory"/>
-->
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<!-- A text field with defaults appropriate for English, plus
aggressive word-splitting and autophrase features enabled.
This field is just like text_en, except it adds
WordDelimiterFilter to enable splitting and matching of
words on case-change, alpha numeric boundaries, and
non-alphanumeric chars. This means certain compound word
cases will work, for example query "wi fi" will match
document "WiFi" or "wi-fi".
-->
<fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<!-- Case insensitive stop word removal.
-->
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<!-- Less flexible matching, but less false matches. Probably not ideal for product names,
but may be good for SKUs. Can insert dashes in the wrong place and still match. -->
<fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.EnglishMinimalStemFilterFactory"/>
<!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
possible with WordDelimiterFilter in conjuncton with stemming. -->
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
<!-- Just like text_general except it reverses the characters of
each token, to enable more efficient leading wildcard queries. -->
<fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- This is an example of using the KeywordTokenizer along
With various TokenFilterFactories to produce a sortable field
that does not include some properties of the source text
-->
<fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<!-- KeywordTokenizer does no actual tokenizing, so the entire
input string is preserved as a single token
-->
<tokenizer class="solr.KeywordTokenizerFactory"/>
<!-- The LowerCase TokenFilter does what you expect, which can be
when you want your sorting to be case insensitive
-->
<filter class="solr.LowerCaseFilterFactory" />
<!-- The TrimFilter removes any leading or trailing whitespace -->
<filter class="solr.TrimFilterFactory" />
<!-- The PatternReplaceFilter gives you the flexibility to use
Java Regular expression to replace any sequence of characters
matching a pattern with an arbitrary replacement string,
which may include back references to portions of the original
string matched by the pattern.
See the Java Regular Expression documentation for more
information on pattern and replacement string syntax.
http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
-->
<filter class="solr.PatternReplaceFilterFactory"
pattern="([^a-z])" replacement="" replace="all"
/>
</analyzer>
</fieldType>
<!-- lowercases the entire field value, keeping it as a single token. -->
<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
<!-- since fields of this type are by default not stored or indexed,
any data added to them will be ignored outright. -->
<fieldType name="ignored" stored="false" indexed="false" docValues="false" multiValued="true" class="solr.StrField" />
<!-- This point type indexes the coordinates as separate fields (subFields)
If subFieldType is defined, it references a type, and a dynamic field
definition is created matching *___<typename>. Alternately, if
subFieldSuffix is defined, that is used to create the subFields.
Example: if subFieldType="double", then the coordinates would be
indexed in fields myloc_0___double,myloc_1___double.
Example: if subFieldSuffix="_d" then the coordinates would be indexed
in fields myloc_0_d,myloc_1_d
The subFields are an implementation detail of the fieldType, and end
users normally should not need to know about them.
-->
<fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
<!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
<!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
For more information about this and other Spatial fields new to Solr 4, see:
http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
-->
<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers" />
<!-- Spatial rectangle (bounding box) field. It supports most spatial predicates, and has
special relevancy modes: score=overlapRatio|area|area2D (local-param to the query). DocValues is recommended for
relevancy. -->
<fieldType name="bbox" class="solr.BBoxField"
geo="true" distanceUnits="kilometers" numberType="_bbox_coord" />
<fieldType name="_bbox_coord" class="solr.TrieDoubleField" precisionStep="8" docValues="true" useDocValuesAsStored="false" stored="false"/>
<!-- Money/currency field type. See http://wiki.apache.org/solr/MoneyFieldType
Parameters:
defaultCurrency: Specifies the default currency if none specified. Defaults to "USD"
precisionStep: Specifies the precisionStep for the TrieLong field used for the amount
providerClass: Lets you plug in other exchange provider backend:
solr.FileExchangeRateProvider is the default and takes one parameter:
currencyConfig: name of an xml file holding exchange rates
solr.OpenExchangeRatesOrgProvider uses rates from openexchangerates.org:
ratesFileLocation: URL or path to rates JSON file (default latest.json on the web)
refreshInterval: Number of minutes between each rates fetch (default: 1440, min: 60)
-->
<fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD" currencyConfig="currency.xml" />
</schema>
As you can see I have the field defined with the requested attributes, and I have fieldType long defined. What am I doing wrong?
I've tried to create a Solr core with your schema.xml and works pretty well.
I've created a github project, just try to clone it
git clone https://github.com/freedev/mailstore
and create a new core from this mailstore configuration.
bin/solr create -c mailstore -d /path/to/github/mailstore/conf
I'm using SSRS reports in SharePoint 2010. I need to get my report to generate information in between the StartDate and StopDate. Currently it only gives me what was entered on the exact stop date. Where do I put the >= and how? I've tried putting it in the filter, but I get an error that says I can't mix fields and parameters. I have parameters so the user can enter the dates and I have Start_Date and Stop_Date fields.
I apologize in advance. I'm a newbie to SSRS Reporting.
<FieldRef Name="Drug_x0020_Name" />
<FieldRef Name="Inmate_x0020_Last_x0020_Name" />
<FieldRef Name="Start_x0020_Date" />
<FieldRef Name="Stop_x0020_Date" />
<FieldRef Name="ID" />
<FieldRef Name="DiscontinuedDate" />
<FieldRef Name="Prescription_x0020_Type" />
<FieldRef Name="Created" />
<FieldRef Name="InmateID" />
<FieldRef Name="Inmate_x0020_First_x0020_Name" />
<FieldRef Name="Ordered_x0020_Date" />
<FieldRef Name="DrugClassification" />
Thanks in advance!
Tara
Here is what a filter should look like in the designer. I don't use Report Builder, but it should have something similar as far as a tablix properties dialog. Of course, the expression field and parameter names will be different for you. Usually a Between filter is inclusive of the beginning and end date, so this may give similar results to what you are getting now. You can always remove the second part of the filter if you want to get everything after the start date.
If you want to overwrite the Filter right in the RDL, here is what that looks like based on the image above. I have changed the names to match what you have posted in the comments.
<Filters>
<Filter>
<FilterExpression>=Fields!Start_Date.Value</FilterExpression>
<Operator>GreaterThanOrEqual</Operator>
<FilterValues>
<FilterValue>=Parameters!StartDate.Value</FilterValue>
</FilterValues>
</Filter>
<Filter>
<FilterExpression>=Fields!Start_Date.Value</FilterExpression>
<Operator>LessThanOrEqual</Operator>
<FilterValues>
<FilterValue>=Parameters!StopDate.Value</FilterValue>
</FilterValues>
</Filter>
</Filters>
Editing RDL directly is not the best way to go about this, but you can do it. Just be careful, is all.
Good luck!
I am familiar with SQL but pulling it from a SharePoint list has proved really frustrating. The syntax is completely different and I find myself stumped on doing what should be a simple.
What I'm wanting to do is pull records when one of several date fields are greater than today's date or less than a date 60 days in the future. Also the value of a field called ActiveStatus should not be Deactive. Currently I have an applied filter on the dataset query designer that limits it to where ActiveStatus is not Deactive. Then on the dataset properties, under Filters, I'm specifying that DEAExpiration <= #start_date and DEAExpiration >#Today. This works fine if I want to pull just where that one field (DEAExpiration) is within those 2 dates.
But what I'm wanting is to pull where any of about 10 fields fall between those dates. In SQL I know it would be a simple string of OR statements, but I can't figure it out with this syntax. Any help would be greatly appreciated. A few of the fields I would want it to look at are DEAExpiration, ACLSRenewal, LicenseExpiration. If someone could help me get it set up to look at all 3 fields, I think I can modify it to include the rest of my fields.
Here is the current query:
<RSSharePointList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ListName>ProviderList</ListName>
<ViewFields>
<FieldRef Name="FirstName" />
<FieldRef Name="MiddleInitial" />
<FieldRef Name="LastName" />
<FieldRef Name="Title2" />
<FieldRef Name="Company" />
<FieldRef Name="Address1" />
<FieldRef Name="Address2" />
<FieldRef Name="City" />
<FieldRef Name="State" />
<FieldRef Name="Zip" />
<FieldRef Name="ActiveStatus" />
<FieldRef Name="DEA_x0023_" />
<FieldRef Name="DEAExpiration" />
</ViewFields>
<Query>
<Where>
<Neq>
<FieldRef Name="ActiveStatus" />
<Value Type="Text">Deactive</Value>
</Neq>
</Where>
</Query>
</RSSharePointList>
The bad news is that since you're not using C# code or Client Object Model and javascript you can't use LINQ to make more straightforward queries of Sharepoint data, I think you're stuck writing CAML queries. However there area couple of ways to make it easier to write CAML queries.
The go-to method is to downlaod and install Caml Query Builder from U2U: http://www.u2u.be/Software
There's also a codeplex project you can use to do the same:
http://spcamlqueryhelper.codeplex.com/
The way you would write this particular query is (I just did the Where clause):
<Where>
<And>
<Neq>
<FieldRef Name="ActiveStatus" />
<Value Type="Text">Deactive</Value>
</Neq>
<Or>
<Geq>
<FieldRef Name="Date1"/>
<Value Type="DateTime">#Today</Value>
</Geq>
<Or>
<Lt>
<FieldRef Name="Date1"/>
<Value Type="DateTime">#FutureDate</Value>
</Lt>
<Or>
<Geq>
<FieldRef Name="Date2"/>
<Value Type="DateTime">#Today</Value>
</Geq>
<Or>
<Lt>
<FieldRef Name="Date2"/>
<Value Type="DateTime">#FutureDate</Value>
</Lt>
<Or>
<Geq>
<FieldRef Name="Date3"/>
<Value Type="DateTime">#Today</Value>
</Geq>
<Or>
<Lt>
<FieldRef Name="Date3"/>
<Value Type="DateTime">#FutureDate</Value>
</Lt>
<Or>
<Geq>
<FieldRef Name="FinalDate"/>
<Value Type="DateTime">#Today</Value>
</Geq>
<Lt>
<FieldRef Name="FinalDate"/>
<Value Type="DateTime">#FutureDate</Value>
<Lt>
</Or>
</Or>
</Or>
</Or>
</Or>
</Or>
</Or>
</And>
</Where>
I only did 4 date columns to show how the nesting structure works. On the final date you're nesting (FinalDate) you put the Lt and Geq clauses next to each other to terminate the nesting. To complete your query you just need to do 6 additional levels of nesting.
This is the kind of job where Caml Query Builder is a god send because it eliminates the time wasted trying to nest everything properly and the possibility of query breaking typos.
I created my own cockpit from the ycockpit template, called TestCockpit. When I log into this cockpit, a List of Orders is displayed on the browser area.
I've configured the listView and the editorArea, both using XML files according to convention. The files are named listViewContentBrowser_Order.xml and editorArea_Order.xml, and are both placed under the folder for the ordermanagergroup user group.
When I run an update running system, the listView is affected by my configuration but the editorArea not.
This is what my editorArea config file looks like:
<?xml version="1.0" encoding="UTF-8"?>
<editor>
<group qualifier="General" visible="true" initially-opened="true">
<label key="testcockpit.config.label.properties"/>
<property qualifier="Order.code"/>
<property qualifier="Order.user"/>
<property qualifier="Order.currency" visible="false"/>
<property qualifier="Order.date"/>
<property qualifier="Order.displayStatus"/>
</group>
<group qualifier="admin" visible="true" initially-opened="false">
<label key="cockpit.config.label.administration"/>
<property qualifier="Item.pk" />
<property qualifier="Item.creationTime" />
<property qualifier="Item.modifiedtime" />
</group>
<custom-group
class="de.hybris.platform.cockpit.services.config.impl.UnassignedEditorSectionConfiguration"
qualifier="unassigned"
initially-opened="false">
<label key="cockpit.config.label.other"/>
</custom-group>
</editor>
Any ideas why my configuration doesn't affect the cockpit? I do log in with a user from the ordermanagergroup, by the way.
Try clicking on "Menu" (top left in your cockpit), then selecting "User Settings" and "Reset Personalized Settings".