Herhangi bir tablo satırını bire bir çoğaltmak

Merhaba

Örneğin bir SalesTable kaydınız var. Bu kaydın bütün alanlarını başka bir satıra kopyalamak istiyorsunuz. Standartta olan data() metodunu kullanabilirsiniz. Örnek verecek olursak.

static void RecorKopyala(Args _args)
{
    SalesTable salesTable;
    SalesTable salesTableCopy;
    ;
    salesTable = SalesTable::find(“s00001″);
      salesTableCopy.data(salesTable);
    salesTableCopy.SalesId = “s0002″;
    salesTableCopy.insert();
    // salesTable ve salesTableCopy aynı bilgileri içerirler SalesId hariç
}

Bu işlemde bütün alanları kopyalamış olursunuz. Formda kullanırken bazen bütün alanların kopyalanmasını istemeyebilirsiniz. Formun veri kaynağının create() metodunu kullandığım bir örenği ilerde Paylaşacağım. Biz şimdi data() ile yapılan işleme benzer bir işi yapacak metodumuzu  Global klasına  ekleyelim.

Public static void copyTableFields(common _origLine,Common _newLine)

// Parametreler Common tipinde olduğu için hangi tabloyu gönderirseniz ona göre çalışacak
// İki parametreninde aynı tipte  olması şart onun kontrolunuda bu metoda ekleyebilirsiniz.
{
    dictTable           dictTable;
    int                 fieldCnt;
    int                 i;
    int                 fieldId;
     ; 
    dictTable   = new DictTable(_origLine.TableId);
    fieldCnt = dictTable.fieldCnt(); 
    for (i = 1; i <= fieldCnt; i++)
    {
        fieldId = dictTable.fieldCnt2Id(i);
        if(dictTable.fieldName(fieldid) != “RecId” ) // recId hariç bütün alanları kopyalıyoruz
            _newLine.(fieldId) = _origLine.(fieldId);
    } 
}
RecorKopyala jobımızı medifiye edelim.
static void RecorKopyala(Args _args)
{
    SalesTable salesTable;
    SalesTable salesTableCopy;
    ;
    salesTable = SalesTable::find(“s00001″);
    copyTableFields(salesTable,salesTableCopy); // data() yerine  kullandık.
    salesTableCopy.SalesId = “s0002″;
    salesTableCopy.insert();
    // salesTable ve salesTableCopy aynı bilgileri içerirler
}

Selamlar.

 
  1. No comments yet.

  1. No trackbacks yet.