Показать сообщение отдельно
  #5  
Старый 09.01.2015, 22:47
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Да я даже и не глянул на дату вопроса
Ладно, не пропадать же ответу. Может кому сгодится.
Код:
unit Unit28;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, Grids, DBGrids, ADODB;

type
  TForm28 = class(TForm)
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormActivate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form28: TForm28;

implementation

{$R *.dfm}

procedure TForm28.Button1Click(Sender: TObject);
begin
 if AdoTable1.Filtered
 then AdoTable1.Filtered := not AdoTable1.Filtered
 else begin
      AdoTable1.Filter := Format('[%s]=''%s''',[ComboBox1.Items.Strings[ComboBox1.ItemIndex], Edit1.Text]);
      AdoTable1.Filtered := True;
      end;
end;

procedure TForm28.FormActivate(Sender: TObject);
Const
  XLSXConnectStr = 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Extended Properties="Excel 12.0 Xml;HDR=YES";';
Var
  i: Integer;
begin
 AdoTable1.ConnectionString := Format(XLSXConnectStr, ['D:\2\список.xlsx']);
 AdoTable1.TableName := '[Лист1$]';
 AdoTable1.Open;
 for i := 0 to 5 {AdoTable1.Fields.Count - 1}
 do ComboBox1.Items.Add(AdoTable1.Fields[i].FieldName);
 ComboBox1.ItemIndex := 1;
end;

end.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием