Hilo iniciado por Mario Andres Bustos Araya el 29 de enero de 2016
-
AutorEntradas
-
enero 29, 2016 a las 9:33 pm #10077
Hola amigos !! Saludos a todos. Bueno les cuento un nuevo problema que me ah tocado ajajja Tengo un formulario que tiene un grid conectado a una tabla temporal lo cual se carga con datos de un CSV al momento de darme problemas al carga ya que tenia unos datos de tipo Enum y Date, los cambie a String porque no sabia como declararlos, el tema es que ahora tengo que tomar esos datos temporales y enviarlo a una tabla normal que tiene esos tipo de datos (enum, date, real, string). entonces tengo que convertir los datos tipo String a Enum o Date si o si para poder ingresarlos a la tabla normal. Existe otra manera de hacerlo ??
Este es mi methodo para llenar mi grid con datos de mi csv
static void clicked(Args _args)
{
FileName fileName = Browser.text();
CommaIo csvFile;
container readCon;
str column1;
str column5;
real column2, column3;
str column4;
int numLines;
int cnt;
;
csvFile = new CommaIo(filename, ‘r’);
csvFile.inFieldDelimiter(‘;’); // Delimiter…try
{
if (csvFile)
{
readCon = csvFile.read();
while (csvFile.status() == IO_Status::OK)
{readCon = csvFile.read();
column1 = conPeek(readCon,1);//TipoCuenta Str
column2 = conPeek(readCon, 2);// Credit – real
column3 = conPeek(readCon, 3);//Debit – real
column4 = conPeek(readCon, 4);//Fecha – Str
column5 = conPeek(readCon, 5);//txt- stringGridTemporal.clear();
GridTemporal.AccountTypeStr = column1;
GridTemporal.AmountCurCredit = column2;
GridTemporal.AmountCurDebit = column3;
GridTemporal.TransDate2 = column4;
GridTemporal.Txt =column5;GridTemporal.doinsert(); //<–Por si acaso
GridTemporal.insert();
}
GridTemporal_ds.executeQuery();
info(‘ingresado’);
}
}
catch
{
throw error(”);
}}
y aqui tengo el methodo para que procese eh ingrese los datos a mis tablas normales.
void clicked()
{
int i;
int numcol, f;
str SFdate,STDate;
Pruebasinsert pruebasInsert;
PruebasInsert2 pruebasInsert2;
GridTemporal gridTemporal2;
str txt;;
numcol = GridTemporal1.controlCount();
ttsBegin;
select forUpdate pruebasInsert; //insertamos el dato de mi stringEdit a mi primera tabla
pruebasInsert.JournalName = lookUpTipoJournalName.text();
pruebasInsert.insert();// este insert toma los datos de mi tabla temporal eh ingresa a la tabla normal
select forUpdate pruebasInsert2;
pruebasInsert2.Txt = gridTemporal.Txt; // de str a str
pruebasInsert2.TransDate = gridTemporal2.date2str(TransDate2,123);// de str a Date (no funciona)
pruebasInsert2.AccountType = gridTemporal.AccountType; // de str a enum (no funciona)
pruebasInsert2.AmountCurCredit = gridTemporal.AmountCurCredit;// real a real(funciona)
pruebasInsert2.AmountCurDebit = gridTemporal.AmountCurDebit; // real a real (funciona)pruebasInsert2.insert();
ttsCommit;info(‘IngresadoColumna’);
}enero 30, 2016 a las 9:30 am #10078Tienes problemas de conceptos.
Empecemos:
1º : si tienes los datos en una tabla temporal, no hace falta que te recorras el Grid que creo que es lo que haces.
2º: si vas ha hacer un insert no hace falta que selecciones ningún registro eso solo si tienes que hacer update or delete.
3º: Esto que es ¿gridTemporal2.date2str(TransDate2,123);// de str a Date?
Tienes un método que se llama date2str en el datasource ? de donde sale el transdate2?
Como mucho sería date2str(gridTemporal2.transdate2)
date2str es una función que te pide una fecha, lo que estas haciendo no tiene sentido.
void clicked()
{ttsBegin;
pruebasInsert.clear(); //Limpiamos los valores de la tabla
pruebasInsert.initvalue(); //llamamos al metodo initvalue (obligatorio) si no hay nada hoy mañana alguien podria utilizarlo
pruebasInsert.initfrom…. //Si existe algun metodo en la tabla llamado así y lo podemos utilizar , a por ello!!
pruebasInsert.JournalName = lookUpTipoJournalName.text();
if (pruebasInsert.validatewrite())
pruebasInsert.insert();while select tutablatmp <—Entiendo que tienes que ingresar todos los datos de la tabla tmp, no solo una línea sino esto no es correcto
{
pruebasInsert2.clear();
pruebasInsert2.initvalue();
pruebasInsert2.initfrom….
pruebasInsert2.Txt = gridTemporal.Txt; // de str a str
pruebasInsert2.AccountType = enum2str(nombreenum, gridTemporal.AccountType);if (pruebasInsert2.validatewrite())
pruebasInsert2.insert();}
ttsCommit;info(‘IngresadoColumna’);
}febrero 1, 2016 a las 2:26 pm #10079Genial! es que en “gridTemporal2.date2str(TransDate2,123);” intentaba pasar de un dato String a un Date pero no sabia como era la sintaxis asique me dedique a probar cada cosa de internet sajajaja
Sabes como quedaría como quedaría en el Date? lo otro, es que ahí pusiste un Enum2Str y alado dice “nombreenum” a que te refieres con el nombre ??? al nombre del el en el grid o en la tabla temporal ?.
y por ultimo tengo un problema en el while, cuando uno dice que ingrese el txt solo me ingresa uno en ves de los 20 que tengo en mi CSV y no toma sus datos, porque sucede eso es porque esta en un if y tiene que ser un for cierto ??
-
AutorEntradas
- Debes estar registrado para responder a este debate.

