Hola amigos de AX. Quiero contarles mi problema a ver si me pueden ayudar. Estoy ingresando mi CSV a una tabla temporal para mostrarla en un GRID, le estoy haciendo unas validaciones para que cuando se ingrese un dato erróneo o vació el programa lo deje checkeado en el grid y en otro campo mande la descripcion del error. Por ahora solo tengo esto, valida pero al momento de ingresar el check y la descripción en el stringEdit me lo ingresa en los primeros campos y no en los campos específicos que están malos los datos.
ALGUNA ALMA DIVINA!?? que me pueda ayudar con la sintaxis para poder ingresar el check y la descripción en el campo malo... les dejo mi codigo, lo estoy checkeando en el else de la validación
Muchas gracias por su atención
static void clicked(Args args){
GridTemporal cargar; // tabla
MultiselectionHelper copyhelper = MultiselectionHelper::construct();
FileName fileName = FileOpen.text();
CommaIo csvFile;
container readCon;
LedgerJournalACType tipo;
str transdate_,txt_, error,type_,GDsError,divisa_;
int64 cuenta_;
real debito_,credito_;
int numLines, cnt;
date trdate;
//NoYesId check;
anytype value;
TransDate trs;
NoYesId check = NoYes::No;
Dialog dialog = new Dialog("New dialog with checkBox");
DialogField dialogField = dialog.addFieldValue(extendedTypeStr(NoYesId), check, "Check it");
;
//----
csvFile = new CommaIo(filename, 'r');
csvFile.inFieldDelimiter(';'); // Delimiter...
try
{
if (csvFile)
{
readCon = csvFile.read();
while (csvFile.status() == IO_Status::OK)
{//fila
readCon = csvFile.read();// see leen las columnas
if(conLen(readCon) >0){
//lectura de datos de CVS
cnt++;
type_ = conPeek(readCon, 1);//transdate
credito_ = conPeek(readCon, 2);// tipo
debito_ = conPeek(readCon, 3);//txt
transdate_ = conPeek(readCon, 4);//debito
txt_ = conPeek(readCon, 5);//credito
divisa_ = conPeek(readCon, 6);
cuenta_ = conPeek(readCon, 7);
//Validacion de Transdate (Tipo de argumento erróneo para función de conversión. solo funciona para campos vacios)
if (conPeek(readCon,4))
{
value = conPeek(readCon,4);
value = strLRTrim(value);
try{
GridTemporal.TransDate = str2Date(value,123);
}catch{
throw error("fecha mala");
//info("Error de compatibilidad");
// check = true;
}
}else{
check = dialogField.value();
info(strfmt("Value %1" , check));
info(strFmt("Dato de Transdate Vacio %1", transdate_));
}//if transdate
// if para que tome en cuenta si estan los 2 campo vacios o incompatibles
if(credito_ ==0 && debito_ == 0){
//validacion de credito-------------------------------------------------------------- -->
if(conPeek(readCon,2))
{
value = conPeek(readCon,2);
value = strLRTrim(value);
try{
GridTemporal.AmountCurCredit = value;
}catch{
info(strFmt("no compatible credito %1", credito_));
//check = true;
}
}else{
error = strFmt("Dato de credito vacio %1", credito_);
}//if debito
//validacion de debito----------------------------------------------------------------->
if(conPeek(readCon,3))
{
value = conPeek(readCon,3);
value = strLRTrim(value);
try{
GridTemporal.AmountCurCredit = value;
}catch{
info(strFmt("no compatible credito %1", debito_));
//check = true;
}
}else{
info(strFmt("Dato de credito vacio %1", check));
//check = true;
}//if debito
}//if de credito&debito
//Traspasos de datos a tabla temporal
GridTemporal.clear();
GridTemporal.TransDate = str2Date(transdate_,123);
GridTemporal.AccountType = str2enum(tipo,type_);
GridTemporal.txtd = txt_;
GridTemporal.AmountCurCredit = credito_;
GridTemporal.AmountCurDebit = debito_;
GridTemporal.LedgerDimension = cuenta_;
GridTemporal.CurrencyCode = divisa_;
GridTemporal.CheckValue = check;
GridTemporal.DscpError = error;
GridTemporal.insert();
GridTemporal_ds.executeQuery();
}// if contador
}//while status
}//if cvsFile
}catch{
info("Creo que hay un error");
}
}