Hi Isomorphic,
please see this SNAPSHOT_v10.1d_2015-10-13/PowerEdition BuiltInDS based testcase.
I wanted to show something else and needed a textfield-join, which I was not able to produce with this setup:
supplyItem.ds.xml:
BuiltInDS.java:
The resulting SQL is:
The framework does not try to access the animals table here. I tried also on Oracle, but got the same result.
I'm not sure where the error is here, but I assume that a join on text fields should be possible as well.
Best regards
Blama
please see this SNAPSHOT_v10.1d_2015-10-13/PowerEdition BuiltInDS based testcase.
I wanted to show something else and needed a textfield-join, which I was not able to produce with this setup:
supplyItem.ds.xml:
Code:
<DataSource
ID="supplyItem"
serverType="sql"
tableName="supplyItem"
titleField="itemName"
>
<fields>
<field name="itemID" type="sequence" hidden="true" primaryKey="true"/>
<field name="itemName" type="text" title="Item" length="128" required="true"/>
<field name="SKU" type="text" title="SKU" length="10" required="true"/>
<field name="description" type="text" title="Description" length="2000"/>
<field name="category" type="text" title="Category" required="true" foreignKey="animals.scientificName" />
<field name="animalsCommonName" includeFrom="animals.CommonName" type="text" title="Animals Commonname"/>
<field name="units" type="enum" title="Units" length="5">
<valueMap>
<value>Roll</value>
<value>Ea</value>
<value>Pkt</value>
<value>Set</value>
<value>Tube</value>
<value>Pad</value>
<value>Ream</value>
<value>Tin</value>
<value>Bag</value>
<value>Ctn</value>
<value>Box</value>
</valueMap>
</field>
<field name="unitCost" type="float" title="Unit Cost" required="true">
<validators>
<validator type="floatRange" min="0" errorMessage="Please enter a valid (positive) cost"/>
<validator type="floatPrecision" precision="2" errorMessage="The maximum allowed precision is 2"/>
</validators>
</field>
<field name="inStock" type="boolean" title="In Stock"/>
<field name="nextShipment" type="date" title="Next Shipment"/>
</fields>
</DataSource>
Code:
package com.smartgwt.sample.client;
import com.google.gwt.core.client.EntryPoint;
import com.smartgwt.client.core.KeyIdentifier;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.SortDirection;
import com.smartgwt.client.util.Page;
import com.smartgwt.client.util.PageKeyHandler;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
public class BuiltInDS implements EntryPoint {
private IButton recreateBtn;
private DataSource supplyItemDS = DataSource.get("supplyItem");
public void onModuleLoad() {
KeyIdentifier debugKey = new KeyIdentifier();
debugKey.setCtrlKey(true);
debugKey.setKeyName("D");
Page.registerKey(debugKey, new PageKeyHandler() {
public void execute(String keyName) {
SC.showConsole();
}
});
recreateBtn = new IButton("Recreate");
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
recreate();
}
});
recreate();
recreateBtn.draw();
}
private void recreate() {
Window w = new Window();
w.setWidth("95%");
w.setHeight("95%");
w.setMembersMargin(0);
w.setModalMaskOpacity(70);
w.setTitle("Grouping test");
w.setShowMinimizeButton(false);
w.setIsModal(true);
w.setShowModalMask(true);
w.centerInPage();
final ListGrid lg = new ListGrid(supplyItemDS);
lg.setCanEdit(true);
lg.setAutoFetchData(false);
ListGridField itemIdLGF = new ListGridField("itemID");
ListGridField itemNameLGF = new ListGridField("itemName");
ListGridField skuLGF = new ListGridField("SKU");
ListGridField descriptionLGF = new ListGridField("description");
ListGridField categoryLGF = new ListGridField("category");
ListGridField dummyLGF = new ListGridField("animalsCommonName");
ListGridField unitsLGF = new ListGridField("units");
lg.setFields(itemIdLGF, itemNameLGF, skuLGF, descriptionLGF, categoryLGF, unitsLGF, dummyLGF);
lg.setSort(new SortSpecifier[] { new SortSpecifier(itemIdLGF.getName(), SortDirection.ASCENDING),
new SortSpecifier(itemNameLGF.getName(), SortDirection.ASCENDING) });
lg.fetchData();
IButton addNewBtn = new IButton("Add new row");
addNewBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
lg.startEditingNew();
}
});
w.addItem(lg);
w.addItem(addNewBtn);
w.show();
}
}
The resulting SQL is:
Code:
SELECT LIMIT 0 75 supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.animalsCommonName, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE ('1'='1') ORDER BY supplyItem.itemID, supplyItem.itemName
...
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: SUPPLYITEM.ANIMALSCOMMONNAME
Code:
SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.animalsCommonName, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE ('1'='1') ORDER BY supplyItem.itemID, supplyItem.itemName
...
java.sql.SQLSyntaxErrorException: ORA-00904: "SUPPLYITEM"."ANIMALSCOMMONNAME": invalid identifier
I'm not sure where the error is here, but I assume that a join on text fields should be possible as well.
Best regards
Blama
Comment