jueves, 10 de enero de 2013

Utilizar SysTableBrowser para tablas temporales


Class SysTableBrowser
 
public void run(tableId tableId,common tmpBuffer = null)
public void run(tableId tableId)
{
    Form                            tableBrowser;
    Object                          formRun;
    formRun fr;
    FormBuildDesign                 formBuildDesign;
    FormDataSource            fds;
    FormBuildDataSource             formBuildDataSource;
    FormBuildGridControl            formBuildGridControl1;
    FormBuildGridControl            formBuildGridControl2;
    FormGridControl                 formGridControl;
    FormRadioControl                formRadioControl;
    DictTable                       dictTable;
    Args                            args;
    Args                            browserArgs;
    int                             idx;
    boolean                         hasAutoReportGroup;
    ;

    dictTable   = new DictTable(tableId);

    //If the table is abstract, don't allow creates in SysTableBrowser.
    if(dictTable.isAbstract())
    {
        allowCreate = false;
    }

    browserArgs     = new Args();
    browserArgs.name(formstr(SysTableBrowser));
    formRun         = classfactory.formRunClass(browserArgs);

    tableBrowser    = formRun.form();


    formBuildDataSource = tableBrowser.dataSource(1);
    formBuildDataSource.name(dictTable.name());
    formBuildDataSource.table(tableId);
    formBuildDataSource.autoQuery(true);
    formBuildDataSource.linkType(0);
    formBuildDataSource.allowCreate(allowCreate);
    formBuildDataSource.allowDelete(allowDelete);
    formBuildDataSource.allowEdit(allowEdit);
    formBuildDataSource.validTimeStateAutoQuery(ValidTimeStateAutoQuery::DateRange);
    formBuildDataSource.validTimeStateUpdate(ValidTimeStateUpdate::Correction);

    if (defaultIndexId)
    {
        formBuildDataSource.index(defaultIndexId);
    }

    formBuildDesign = tableBrowser.design();
    formBuildDesign.caption("@SYS54191" + ': ' + dictTable.name());
    formBuildDesign.widthMode(-1);
    formBuildDesign.widthValue(#FormWidth);
    formBuildDesign.heightMode(-1);
    formBuildDesign.heightValue(#FormHeight);

    formBuildGridControl1 = formBuildDesign.control('allFieldsGrid');
    formBuildGridControl1.dataSource(dictTable.name());
    formBuildGridControl1.allowEdit(allowEdit);
    idx = formBuildGridControl1.id();

    this.showAllFields(tableId, formBuildGridControl1, formBuildDataSource);

    formBuildGridControl2 = formBuildDesign.control('autoReportGrid');
    formBuildGridControl2.dataSource(dictTable.name());
    formBuildGridControl2.allowEdit(allowEdit);
    formBuildGridControl2.visible(false);

    hasAutoReportGroup = this.showAutoFields(tableId, formBuildGridControl2, formBuildDataSource);

    args = new Args();
    args.object(tableBrowser);
    formRun = classfactory.formRunClass(args);


    formRun.enableCountryRegion(false);
    if (tmpBuffer)
    {
        formRun.parmTmpData(tmpBuffer);
    }
    formRun.init();
    formRun.parmTableId(tableId);

    formRun.run();
    fr=formRun;
    fds=fr.dataSource(dictTable.name());
    fds.executeQuery();

    formRadioControl = formRun.getRadioControl();
    formRadioControl.visible(hasAutoReportGroup);

    formGridControl = formRun.control(idx);
    formGridControl.setFocus();

    // This call is here as a hack fix (AXSE:4564 or AX6:18807) for performance issue around Table Browser
    // loading time, and should be removed once a proper fix is in place.
    formGridControl.autoSizeColumns(false);

    formRun.detach();


}

form SysTableBrowser


class FormRun extends ObjectRun
{
    tableId tableId;
    Source sqlcmd;
    DictTable dictTable;
    Common _tmpBuffer;


}

 //agregar
private void parmTmpData(common tmpBuffer)
{

    ;
    _tmpBuffer=tmpBuffer;

}

 //modificar

void run()
{
     FormDataSource            fds;    
     Common Common;   ;
    super();
    dictTable = new DictTable(tableId);
    this.parmSQLStmt('SELECT * FROM '+tableid2name(tableId));
    fds=element.dataSource(1);   
    Common=fds.cursor();                
    Common.setTmp();
    Common.setTmpData(_tmpBuffer);
}
///ejecutar
new SysTableBrowser().run(CommonBuffer.TableId, CommonBuffer);

jueves, 8 de noviembre de 2012

Crear referencias de secuencias numericas

/////////////////////////////////////////////////////7calse  NumberSeqModuleEscenarios
public class NumberSeqModuleEscenarios extends NumberSeqApplicationModule
{

}


protected void loadModule() //sobreescribir
{
    NumberSeqDatatype datatype = NumberSeqDatatype::construct();
    ;

    /* Setup application numbers */

    datatype.parmDatatypeId(extendedtypenum(ProdOptEscenario));//crear previamente el extend
    datatype.parmReferenceHelp(literalstr("Sequencia para los escenarios"));
    datatype.parmWizardIsContinuous(true);
    datatype.parmWizardIsManual(NoYes::No);
    datatype.parmWizardIsChangeDownAllowed(NoYes::No);
    datatype.parmWizardIsChangeUpAllowed(NoYes::No);
    datatype.parmWizardHighest(999999);
    datatype.parmSortField(1);

    datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
    this.create(datatype);


}


public NumberSeqModule numberSeqModule() //sobreescribir
{
    return NumberSeqModule::Prod;
}
//////////////////////////////////////////////////////////////////////7termina clase NumberSeqModuleEscenarios
///////////////////agregar la referencia
static void CrearSequencia(Args _args)///job

{

GsNumberSeqModuleEscenarios obj = new GsNumberSeqModuleEscenarios();

obj.createReferencesForScope();

obj.load();

}



///////////////////////////////////////////////////
static void GsTestSequencia(Args _args)
{
    ;       NumberSeq::newGetNum(NumberSeqReference::findReference(extendedTypeNum(ProdOptEscenario)),true).num();
}
////////////////////////////


martes, 9 de octubre de 2012

FASTFIRSTROW" is not a recognized table hints option

para arreglar este error utilice
en el Microsoft Dynamics AX 2012 Management Shell
poner axutil.exe schema /config:standard