|
12.03.2009, 17:28 | #1 |
Участник
|
То Gustav,
огромное спасибо, все работает за исключением последнего куска, выводится файл .xls, но данные остаются в ячейках A1 и A2 Последний раз редактировалось Antoncheg; 12.03.2009 в 17:32. |
|
12.03.2009, 17:36 | #2 |
Moderator
|
Цитата:
Или вам нужны промежуточные "нарезанные" результаты? Ну, не удаляйте их тогда |
|
12.03.2009, 17:56 | #3 |
Участник
|
Спасибо, разобрался, к вечеру сломан мозг, знаете ли с такими конструкциями
|
|
13.03.2009, 11:25 | #4 |
Участник
|
Сегодня попробовал применить результаты на практике, вот что у меня вышло
X++: void Exec(str Path,SnQueryTableTmp SnQ) { str strValue; str strFormula; COMVariant sep; #define.xlPasteValues(-4163) #define.xlListSeparator(5) ; xlApp = new COM('Excel.Application'); xlApp.Visible(true); wbks = xlApp.Workbooks(); wbk = wbks.Add(); wkss = wbk.Worksheets(); wks = wkss.Add(); wks = wkss.Item(1); wks.Name('Итог'); rng = wks.Range('A1'); //==================================Первая вкладка======================= rstAxa = new COM('ADODB.Recordset'); flds = rstAxa.Fields(); flds.Append('Дата закрытия' ,this.adoTypeToExcel('date')); flds.Append('Отгрузочная накладная' ,this.adoTypeToExcel('str')); flds.Append('Заказ' ,this.adoTypeToExcel('str')); flds.Append('Безналичная накладная' ,this.adoTypeToExcel('str')); flds.Append('Менеджер' ,this.adoTypeToExcel('str')); flds.Append('Код клиента' ,this.adoTypeToExcel('str')); flds.Append('Дата отгрузочной накладной' ,this.adoTypeToExcel('date')); flds.Append('Город' ,this.adoTypeToExcel('str')); flds.Append('Краткое наименование' ,this.adoTypeToExcel('str')); flds.Append('Номенклатура' ,this.adoTypeToExcel('str')); flds.Append('Код дет. в спецификации' ,this.adoTypeToExcel('str')); flds.Append('Название' ,this.adoTypeToExcel('str')); flds.Append('Склад' ,this.adoTypeToExcel('str')); flds.Append('Цена ед.' ,this.adoTypeToExcel('num')); flds.Append('Себестоимость' ,this.adoTypeToExcel('num')); flds.Append('Количество' ,this.adoTypeToExcel('num')); flds.Append('Сумма по позиции' ,this.adoTypeToExcel('num')); flds.Append('Прибыль' ,this.adoTypeToExcel('num')); flds.Append('Каталожный номер' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера1' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера2' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера3' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера4' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера5' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера6' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера7' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера8' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера9' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера10' ,this.adoTypeToExcel('str')); flds.Append('Серийные номера11' ,this.adoTypeToExcel('str')); flds.Append('REF' ,this.adoTypeToExcel('str')); flds.Append('Квота' ,this.adoTypeToExcel('str')); flds.Append('Конечный клиент' ,this.adoTypeToExcel('str')); flds.Append('Номер партии' ,this.adoTypeToExcel('str')); rstAxa.Open(); // SnQ.setTmpData(SnQ); while select SnQ { sep = xlApp.International(#xlListSeparator); strFormula = strFmt('=CONCATENATE(RC[-30]%2RC[-29]%2RC[-28]%2RC[-27]%2RC[-26]%2RC[-25]%2RC[-24]%2RC[-23]%2RC[-22]%2RC[-21])', sep.bStr()); strValue = strRep(SnQ.findSerialNumbersFromWMS(SnQ), 60); rstAxa.AddNew(); // fld = flds.Item('Каталожный номер'); fld.Value(SelloutMsTable.A_PartNumber); fld = flds.Item('Дата закрытия'); fld.Value(SnQ.DeliveryDate); fld = flds.Item('Отгрузочная накладная'); fld.Value(SnQ.PickingListId); fld = flds.Item('Заказ'); fld.Value(SnQ.SalesId); fld = flds.Item('Безналичная накладная'); fld.Value(SnQ.InvoiceIdElect); fld = flds.Item('Менеджер'); fld.Value(SnQ.SalesResponsible); fld = flds.Item('Код клиента'); fld.Value(SnQ.CustAccount); fld = flds.Item('Дата отгрузочной накладной'); fld.Value(SnQ.PickingListDate); fld = flds.Item('Город'); fld.Value(SnQ.City); fld = flds.Item('Краткое наименование'); fld.Value(SnQ.NameAlial); fld = flds.Item('Номенклатура'); fld.value(SnQ.ItemId); fld = flds.Item('Код дет. в спецификации'); fld.Value(SnQ.ChosenPartNumber); fld = flds.Item('Название'); fld.Value(SnQ.ItemName); fld = flds.Item('Склад'); fld.Value(SnQ.InventLocationId); fld = flds.Item('Цена ед.'); fld.Value(SnQ.A_SalesPrice); fld = flds.Item('Себестоимость'); fld.Value(SnQ.SalesCostPrice); fld = flds.Item('Количество'); fld.Value(SnQ.Qty); fld = flds.Item('Сумма по позиции'); fld.Value(SnQ.Amount); fld = flds.Item('Прибыль'); fld.Value(SnQ.SalesProfit); fld = flds.Item('Каталожный номер'); fld.Value(SnQ.A_PartNumber); fld = flds.Item('Серийные номера1'); fld.Value(strFormula); fld = flds.Item('Серийные номера2'); fld.Value(strValue); fld = flds.Item('Серийные номера3'); fld.Value(strValue); fld = flds.Item('Серийные номера4'); fld.Value(strValue); fld = flds.Item('Серийные номера5'); fld.Value(strValue); fld = flds.Item('Серийные номера6'); fld.Value(strValue); fld = flds.Item('Серийные номера7'); fld.Value(strValue); fld = flds.Item('Серийные номера8'); fld.Value(strValue); fld = flds.Item('Серийные номера9'); fld.Value(strValue); fld = flds.Item('Серийные номера10'); fld.Value(strValue); fld = flds.Item('Серийные номера11'); fld.Value(strValue); fld = flds.Item('REF'); fld.Value(SnQ.REF); fld = flds.Item('Квота'); fld.value(SnQ.InventQuotationId); fld = flds.Item('Конечный клиент'); fld.Value(SnQ.EndPartnerCode); fld = flds.Item('Номер партии'); fld.Value(SnQ.InventBatchId); rstAxa.Update(); } cell = rng.Offset(1,0); cell.CopyFromRecordset(rstAxa); rng = wks.Range('T2:T%'); rng.FormulaR1C1( rng.Value() ); rng.Copy(); rng.PasteSpecial(#xlPasteValues); xlApp.CutCopyMode(true); rng = wks.Columns(); rng = COM::createFromVariant(rng.Item('U:AD')); rng.Delete(); rstAxa.close(); actWin = xlApp.ActiveWindow(); // actWin.FreezePanes(true); } |
|