Помогите а?

отредактировано 08:55 Раздел: FastReport 3.0
Как выводить на печать только отмеченные строки DBGrid'a?

Комментарии

  • отредактировано 08:55
    Попробуй копировать отмеченные данные куда-нибудь, а потом на их основе делай отчет.
  • отредактировано 08:55
    Я просто не так давно программирую и пока не знаю как скопировать выбранные строки!
    Пользуюсь TADOTable
    Если подскажите как? буду признателен! Хотя может быть и есть другие способы!
  • gpigpi
    отредактировано 08:55
    Попробуйте, используя frxUserDataset пройтись по DBGrid1.SelectedRows.Items
  • отредактировано 08:55
    А можно пример, если не сложно?
  • gpigpi
    отредактировано 08:55
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, frxClass, Grids, DBGrids, DB, DBTables, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Table1: TTable;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        frxUserDataSet1: TfrxUserDataSet;
        Button1: TButton;
        Table1CustNo: TFloatField;
        Table1Company: TStringField;
        Table1Addr1: TStringField;
        Table1Addr2: TStringField;
        Table1City: TStringField;
        Table1State: TStringField;
        Table1Zip: TStringField;
        Table1Country: TStringField;
        Table1Phone: TStringField;
        Table1FAX: TStringField;
        Table1TaxRate: TFloatField;
        Table1Contact: TStringField;
        Table1LastInvoiceDate: TDateTimeField;
        frxReport1: TfrxReport;
        procedure Button1Click(Sender: TObject);
        procedure frxUserDataSet1GetValue(const VarName: String;
          var Value: Variant);
        procedure frxUserDataSet1First(Sender: TObject);
        procedure frxUserDataSet1Next(Sender: TObject);
        procedure frxUserDataSet1CheckEOF(Sender: TObject; var Eof: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      i, n: integer;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
         frxReport1.ShowReport;
    end;
    
    procedure TForm1.frxUserDataSet1GetValue(const VarName: String;
      var Value: Variant);
    begin
         if VarName='CustNo' then Value:=Table1CustNo.AsFloat;
         if VarName='Company' then Value:=Table1Company.AsString;
    end;
    
    procedure TForm1.frxUserDataSet1First(Sender: TObject);
    begin
         n:=DBGrid1.SelectedRows.Count;
         i:=0;
         if i<n then Table1.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
    end;
    
    procedure TForm1.frxUserDataSet1Next(Sender: TObject);
    begin
         inc(i);
         if i<n then Table1.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
    end;
    
    procedure TForm1.frxUserDataSet1CheckEOF(Sender: TObject;
      var Eof: Boolean);
    begin
         Eof:=i>=n;
    end;
    
    end.
    ======dfm======
    object Form1: TForm1
      Left = 440
      Top = 128
      Width = 696
      Height = 480
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      Position = poDesktopCenter
      PixelsPerInch = 96
      TextHeight = 13
      object DBGrid1: TDBGrid
        Left = 50
        Top = 24
        Width = 601
        Height = 273
        DataSource = DataSource1
        Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit, dgMultiSelect]
        TabOrder = 0
        TitleFont.Charset = DEFAULT_CHARSET
        TitleFont.Color = clWindowText
        TitleFont.Height = -11
        TitleFont.Name = 'MS Sans Serif'
        TitleFont.Style = []
      end
      object Button1: TButton
        Left = 304
        Top = 336
        Width = 75
        Height = 25
        Caption = 'Button1'
        TabOrder = 1
        OnClick = Button1Click
      end
      object Table1: TTable
        Active = True
        DatabaseName = 'DBDEMOS'
        TableName = 'customer.db'
        Left = 54
        Top = 14
        object Table1CustNo: TFloatField
          FieldName = 'CustNo'
        end
        object Table1Company: TStringField
          FieldName = 'Company'
          Size = 30
        end
        object Table1Addr1: TStringField
          FieldName = 'Addr1'
          Size = 30
        end
        object Table1Addr2: TStringField
          FieldName = 'Addr2'
          Size = 30
        end
        object Table1City: TStringField
          FieldName = 'City'
          Size = 15
        end
        object Table1State: TStringField
          FieldName = 'State'
        end
        object Table1Zip: TStringField
          FieldName = 'Zip'
          Size = 10
        end
        object Table1Country: TStringField
          FieldName = 'Country'
        end
        object Table1Phone: TStringField
          FieldName = 'Phone'
          Size = 15
        end
        object Table1FAX: TStringField
          FieldName = 'FAX'
          Size = 15
        end
        object Table1TaxRate: TFloatField
          FieldName = 'TaxRate'
        end
        object Table1Contact: TStringField
          FieldName = 'Contact'
        end
        object Table1LastInvoiceDate: TDateTimeField
          FieldName = 'LastInvoiceDate'
        end
      end
      object DataSource1: TDataSource
        DataSet = Table1
        Left = 92
        Top = 14
      end
      object frxReport1: TfrxReport
        Version = '3.20'
        DotMatrixReport = False
        IniFile = '\Software\Fast Reports'
        PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick]
        PreviewOptions.Zoom = 1.000000000000000000
        PrintOptions.Printer = 'По умолчанию'
        ReportOptions.CreateDate = 38782.669335752320000000
        ReportOptions.LastChange = 38782.669335752320000000
        ScriptLanguage = 'PascalScript'
        ScriptText.Strings = (
          'begin'
          ''
          'end.')
        Left = 56
        Top = 52
        Datasets = <
          item
            DataSet = frxUserDataSet1
            DataSetName = 'frxUserDataSet1'
          end>
        Variables = <>
        Style = <>
        object Page1: TfrxReportPage
          PaperWidth = 209.973333333333300000
          PaperHeight = 296.862500000000000000
          PaperSize = 9
          LeftMargin = 10.000000000000000000
          RightMargin = 10.000000000000000000
          TopMargin = 10.000000000000000000
          BottomMargin = 10.000000000000000000
          object MasterData1: TfrxMasterData
            Height = 18.000000000000000000
            Top = 20.000000000000000000
            Width = 718.009912533333500000
            DataSet = frxUserDataSet1
            DataSetName = 'frxUserDataSet1'
            RowCount = 0
            object Memo1: TfrxMemoView
              Left = 4.000000000000000000
              Width = 80.000000000000000000
              Height = 18.000000000000000000
              Memo.UTF8 = (
                '[frxUserDataSet1."CustNo"]')
            end
            object Memo2: TfrxMemoView
              Left = 84.000000000000000000
              Width = 328.000000000000000000
              Height = 18.000000000000000000
              Memo.UTF8 = (
                '[frxUserDataSet1."Company"]')
            end
          end
        end
      end
      object frxUserDataSet1: TfrxUserDataSet
        UserName = 'frxUserDataSet1'
        OnCheckEOF = frxUserDataSet1CheckEOF
        OnFirst = frxUserDataSet1First
        OnNext = frxUserDataSet1Next
        Fields.Strings = (
          'CustNo'
          'Company')
        OnGetValue = frxUserDataSet1GetValue
        Left = 96
        Top = 50
      end
    end
    
  • dron-sdron-s Россия
    отредактировано 08:55
    Копируешь выделенные строки через поля (FieldByName) в темповую таблицу, в темповой таблице делаешь необходимые операции (сортировка, выборка и т.д.) затем делаешь отчёт
  • отредактировано 08:55
    Теоретически я тоже думал над этим алгоритмом... но проблема в синтаксисе, как и че записать... зеленый я еще, некоторые события отлавливаю в голове, а как их записать в delphi не знаю... наверное это проблема многих упертых новичков, которые хотят подняться выше в знаниях! Иногда в справочниках нужной инфы не найдешь! ;) Приходится обращаться к профи... извините если что не так!

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.