q = new Query();
qbds = q.addDataSource(tablenum(SalesTable));
qr = new QueryRun(q);
while(qr.next())
{
SalesTable = qr.get(tablenum(SalesTable));
}
Query para Dimension
qbdsQuality.addRange(fieldId2Ext(fieldnum(Custtrans, Dimension), SysDimension::Department)).value(Dimension);
Query para rango de fechas:
qbdsLine.addRange(fieldNum(PurchLine,DeliveryDate)).value(sysquery::range(fromdate,todate));
Hasta fecha (con str):
qbds.addRange(fieldnum(CustTrans,DueDate)).value('..' + date2str(fecha,2,2,1,2,1,2));
Forzar índice (cuando no lo coge con el index hint)
queryBuildDataSource.addSortIndex(indexnum(Tabla,Indice));
querybuilddatasource.indexIsHint(true);
q.literals(#queryForcePlaceholders);
queryInventrans.literals(true);
queryInventrans.forceNestedLoop(true);
queryInventrans.forceSelectOrder(true);
Ordenar descendente:
datasource.addRange(fieldnum(ERNotesAims,ItemId)).value(cadauxitem);
datasource.addSortField(fieldnum(ERNotesAims,DateDeal),SortOrder::Descending);
datasource.orderMode(OrderMode::OrderBy);
Posicionarte en el registro de un grid después de hacer el executequery
Tabla1 orig;
;
orig = Tabla1::findRecId(Tabla1.RecId);
Tabla1_ds.executequery();
Tabla1_ds.findRecord(orig);
Bloquear un filtro para que no lo puedan consultar por diseño: status(1)
qbdsERDirectSentPurch.addRange(fieldnum(ERDirectSentPurch,InventLocationId)).status(1);
qbdsERDirectSentPurch.addRange(fieldnum(ERDirectSentPurch,InventLocationId)).value(queryvalue(UserInventLocationId.text()));
Recorrerse todas las empresas de tipo VIR:
while select VirtualDataAreaList
order by id
where VirtualDataAreaList.virtualDataArea == 'VIR'
{
info(VirtualDataAreaList.id);
if(VirtualDataAreaList.id != 'RSG' && VirtualDataAreaList.id != 'EDR')
{
ChangeCompany('EDR') //(VirtualDataAreaList.Id) //(DataArea.Id)
}
}
Cambio de divisa:
static void Job817(Args _args)
{
PurchId PurchId = 'R6PC000393';
VendinvoiceTrans recordVendinvoiceTrans = VendinvoiceTrans::findRecId(-544939969);
Amount Amount;
;
Amount = currency::AmountCur2amountCurExchRate( 480,recordVendinvoiceTrans.CurrencyCode,
currency::codeCompanyCurrency(),UnknownNoYes::Unknown,recordVendinvoiceTrans.exchRate());
}
Quita todos los caracteres que no sean numéricos y opcionalmente blancos.
str deleteChrToCad(str str1, boolean blancos,str cad = '')
{
str str2,chr;
str whites = ' ';
int i;
str cadnum = '0123456789'
;
for (i=1;i<=strLen(str1);i++)
{
chr = subStr(str1, i, 1); //caracter actual
if(blancos) //quitar espacios en blancos
{
if(chr == whites)
str2 = str2;
else
{
if(StrFind(cadnum,chr,1,strlen(str1)) > 0)
str2 += chr;
}
}
else
{
if(StrFind(cadnum,chr,1,strlen(str1)) >0)
str2 += chr;
}
}
return str2;
}
Quita Intros en una cadena.
str deleteStrChr13(str str1)
{
str str2,chr;
int i;
;
for (i=1;i<=strLen(str1);i++)
{
chr = subStr(str1, i, 1);
if (subStr(str1, i, 1) != '\n')
str2 = str2 + chr;
else
str2 = str2 + " ";
}
return str2;
}
Hacer un OR en varios campos con strfmt:
queryBuildRange.value(strFmt('((%1 == %2) || ((%1 ==
%3) && (%4 == "%5")))', fieldStr(InventTable,
ItemType),any2int(ItemType::Service), any2int(ItemType::Item), fieldStr(InventTable, ProjCategoryId),
queryValue("Spares")));
Llamada a un método de una tabla por código
à ejemplo en el formulario
InventTrans (método init)
inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans,
pcsPrice));
Borrar los datos de uso por código
Para todos los
usuarios à xSysLastValue::deleteAllUsers(Objeto)
Para un
usuario à xSysLastValue::deleteLast(objeto);
sysLastValue sysLastValue;
;
ttsbegin;
delete_from
sysLastValue
where
sysLastValue.Company == curext()
&& sysLastValue.RecordType
== UtilElementType::Form //Ponemos el tipo que sea.
&&
sysLastValue.ElementName ==
'ERDelegateAnalitsys'
&&
sysLastValue.DesignName == '';
ttscommit;
Quitar la letra de acceso directo de un
botón:
ShowShortCut
Bloquear para que no se pueda buscar por un
campo (botón derecho - buscar):
QbdsCust.addRange(fieldNum(custTable,VatNum)).status(1);
Para que en una clase no salga el Batch
Public boolean canGoBatch ()
{
Return
false;
}
Para que maximice un formulario al entrar,
ponerlo después del super del Run del FRM
winapi::maximizeWindow(element.hWnd());
Buscar carácter numérico en una cadena
chr = subStr(SalesTable.VATNum, 1,
1);
if(StrFind('0123456789',chr,1,strlen('0123456789')))
Para compartir una tabla: trampear la clase
xDataArea
\ validateOnlineUsersAndAOS
Para hacer un findRange de los valores de
la tabla del inform desde una clase
if(this.queryRun().query().dataSourceNo(1).findRange(fieldnum(ERTMPTransMovement,ItemId)))
ItemRange =
this.queryRun().query().dataSourceNo(1).findRange(fieldnum(ERTMPTransMovement,ItemId)).value();
http://www.dynamicsax.es/index.php/programacion/36-x/89-agregar-funcionalidad-ir-a-la-tabla-principal
Si queremos habilitar
la funcionalidad de Ir a la tabla principal en estos casos, tendremos
que sobre escribir el método JumpRef()
del desplegable o campo que estemos utilizando.Método modificado para
acceder a la tabla de clientes:Public void jumpRef(){ EmplTable
emplTable; Args args; MenuFunction menuFunction; ; emplTable = EmplTable::find(this.text()); if (emplTable) { args = new Args(); args.caller(element); args.record(emplTable); //Llamamos al formulario de clientes menuFunction = new
MenuFunction(menuitemdisplaystr(EmplTable), MenuItemType::Display); menuFunction.run(args); }}Query un
Real mayor que 0:qbds.addRange(fieldnum(custTrans,AmountMSTTotal)).value(strfmt(">%1",0));
No hay comentarios:
Publicar un comentario