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.