Problema al importar datos de tabala temporal a tabla normal

Hilo iniciado por Mario Andres Bustos Araya el 29 de enero de 2016

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Autor
    Entradas
  • #10077
    RangoMario Andres Bustos Araya
    Mario Andres Bustos Araya
    Participante
    APRENDIZ
    999 Rincoins

    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- string

    GridTemporal.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’);
    }

    #10078
    RangoXBB
    XBB
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Tienes 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’);
    }

    #10079
    RangoMario Andres Bustos Araya
    Mario Andres Bustos Araya
    Participante
    APRENDIZ
    999 Rincoins

    Genial! 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 ??

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Debes estar registrado para responder a este debate.
Carrito de compra