Page 1 of 1

Export TVirtualTable to Excel

Posted: Sun 07 Jun 2015 22:40
by zemmyindrapatih
Hi All,

Recently i want to export data using TscExcelExport.
If i'm using TVirtualTable using Design Component, it works perfectly.

Code: Select all

EmpVT.First;
  EmpVT.Filtered := False;
  while not EmpVT.Eof do
  begin
    //Salary Virtual Table
    VirtualTableBankTransferListExport.Append;
    VirtualTableBankTransferListExport.FieldByName('EMPID').AsInteger := EmpVT.FieldByName('EMPID').AsInteger;
    VirtualTableBankTransferListExport.FieldByName('EMPBANKGROUPNO').AsInteger := EmpVT.FieldByName('BANKGROUPNO').AsInteger;
    VirtualTableBankTransferListExport.FieldByName('EMPTRANSBANKACCNAME').AsString := EmpVT.FieldByName('EMPBANKACCNAME').AsString;
    VirtualTableBankTransferListExport.FieldByName('EMPTRANSBANKACCNO').AsString := EmpVT.FieldByName('EMPBANKACCNO').AsString;
    VirtualTableBankTransferListExport.FieldByName('BANKACCNO').AsString := EmpVT.FieldByName('BANKACCNO').AsString;
    VirtualTableBankTransferListExport.FieldByName('PERIOD').AsString := PaySlipPeriod;
    VirtualTableBankTransferListExport.FieldByName('BANKNAME').AsString := EmpVT.FieldByName('BANKNAME').AsString;
        VirtualTableBankTransferList.FieldByName('TRANSFERAMOUNT').AsInteger := 0;//Format('%s%s%.*d', [EmpVT.FieldByName('REGIONCODE').AsString,EmpVT.FieldByName('EMPCODE').AsString,4,EmpVT.FieldByName('EMPCODE').AsInteger]); //EmpVT.FieldByName('EMPCODE').AsString;
    VirtualTableBankTransferListExport.FieldByName('BANKID').AsString := EmpVT.FieldByName('BANKID').AsString;
    VirtualTableBankTransferListExport.FieldByName('TBANKNAME').AsString := EmpVT.FieldByName('TBANKNAME').AsString;
    VirtualTableBankTransferListExport.FieldByName('BANKLOCATION').AsString := EmpVT.FieldByName('BANKLOCATION').AsString;
    VirtualTableBankTransferListExport.Post;
    EmpVT.Next;
  end;
  scExcelExport1.WorksheetName := 'Bank Transfer List';
  scExcelExport1.Dataset:=VirtualTableBankTransferListExport;
  scExcelExport1.ExportDataset;
  scExcelExport1.Disconnect;
But if i declare TVirtualTable programmatically, it won't show the data. Are there the code i missed ?

Code: Select all

var
  VirtualTableExportAllEmployeeDetails: TVirtualTable;
begin
  ModuleCoreSalaryComputation.FetchDataToMemory();

  VirtualTableExportAllEmployeeDetails := TVirtualTable.Create(self);
  VirtualTableExportAllEmployeeDetails.Clear;
  VirtualTableExportAllEmployeeDetails.Active:= true;

  VirtualTableExportAllEmployeeDetails.FieldDefs.Add('fullname', Data.DB.ftString, 0, False);
  VirtualTableExportAllEmployeeDetails.Options := [voPersistentData, voStored, voSkipUnSupportedFieldTypes];
//  VirtualTableExportAllEmployeeDetails.DisableControls;
VirtualTableExportAllEmployeeDetails.Open;
  VirtualTableExportAllEmployeeDetails.Append;
  VirtualTableExportAllEmployeeDetails.FieldByName('fullname').AsString := 'zemmy';
  VirtualTableExportAllEmployeeDetails.Post;
  VirtualTableExportAllEmployeeDetails.Append;
  VirtualTableExportAllEmployeeDetails.FieldByName('fullname').AsString := 'arfa';
  VirtualTableExportAllEmployeeDetails.Post;
  showmessage(inttostr(VirtualTableExportAllEmployeeDetails.RecordCount));
//  VirtualTableExportAllEmployeeDetails.EnableControls;
  scExcelExport1.WorksheetName := 'asdf';
  scExcelExport1.Dataset:=VirtualTableExportAllEmployeeDetails;
  scExcelExport1.ExportDataset;
  scExcelExport1.Disconnect;
end;
Image

Re: Export TVirtualTable to Excel

Posted: Mon 08 Jun 2015 04:46
by zemmyindrapatih
Help me please..

Or can someone show me how to create TVirtualTable (Init, Create Fields, and Filling Data) using code
only without droping component in form.

Thank you very much.

Re: Export TVirtualTable to Excel

Posted: Tue 09 Jun 2015 11:32
by AlexP
Hello,


Below is the code for generating VirtualTable, fields, filling in the table and import to Excel using TscExcelExport.

Code: Select all

var
  VT: TVirtualTable;
  i: integer;
begin
  VT := TVirtualTable.Create(nil);
  try
    VT.AddField('test', ftString, 20);
    VT.Open;
    for i := 0 to 10 do begin
      VT.Append;
      VT.Fields[0].AsString :=  'test_' + IntToStr(i);
      VT.Post;
    end;
    scExcelExport1.WorksheetName := 'Bank Transfer List';
    scExcelExport1.Dataset := VT;
    scExcelExport1.ExportDataset;
    scExcelExport1.Disconnect;
  finally
    VT.Free;
  end;
end;