修改类别(类写法)

类写法:

1,定义自动加载类别值到combobox下拉框里

unit UAutoUpdateCombox;

interface
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Data.DB, Data.Win.ADODB,
  Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, Clipbrd, Vcl.Menus,
  Vcl.StdCtrls, DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, DynVarsEh,
  EhLibVCL, GridsEh, DBAxisGridsEh, DBGridEh,EhLibADO, Vcl.Buttons;

type TAutoUpdateCombox=class
  public
  class procedure autoadoqfieldstocombox(var combox:TComboBox;SAdq:TADOQuery);
end;

implementation

uses Uleibie;
class procedure TAutoUpdateCombox.autoadoqfieldstocombox(var combox:TComboBox;SAdq:TADOQuery);
 var
  i: Integer;
  List: TStringList;
begin
 List := TStringList.Create;
try
  //刷新前全部清空原来的列表
  combox.Items.Clear;
  {建立 List}
  List.Sorted := True;           {指定排序}
  List.Duplicates := dupIgnore;  {避免重复}

  {把数据加入到 DBComboBox1}

    List.Clear;
    SAdq.open;
    SAdq.First;
    while not SAdq.Eof do
    begin
      List.Add(SAdq.FieldByName('类别').AsString);
      SAdq.Next;
    end;

    //把获取到的值加载给combbobox的下拉选项里
    combox.Items:=List;
    //刷新数据库
    SAdq.Requery;
finally
   List.Free;
end;
  end;

end.

 

 

2,定义单击确定,更新客户选的combobox的类别值到access数据库里

 

unit UUpdateLeiBie;

interface
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Data.DB, Data.Win.ADODB,
  Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, Clipbrd, Vcl.Menus,
  Vcl.StdCtrls, DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, DynVarsEh,
  EhLibVCL, GridsEh, DBAxisGridsEh, DBGridEh,EhLibADO, Vcl.Buttons;

type TUpdateLeiBie=class
  public
  class procedure updateselectedleibie(var combox:TComboBox; SAdq:TADOQuery);
end;

implementation

uses FDataPool;
class procedure TUpdateLeiBie.updateselectedleibie(var combox:TComboBox; SAdq:TADOQuery);
var
MyAdoq:TADOQuery;
LeiBie,SBiao: string;
begin
  MyAdoq := TADOQuery.Create(nil);
  SBiao:=copy(SAdq.name,4,length(SAdq.name)-3);
  try
    MyAdoq.Connection := frmDataPool.ADOConnection1;
    LeiBie:=combox.text;
    with MyAdoq do
    begin
      Close;
      SQL.Text := 'UPDATE '+SBiao+' SET 类别 ='+ LeiBie.QuotedString+'where 选中 = true';
      ExecSQL;
    end;
    //防止程序假死
    Application.ProcessMessages;

    //刷新纪录
  SAdq.Requery;

  finally
    MyAdoq.Free;
  end;

end;

end.

 

3.类引用使用

unit Uleibie;

interface

uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Data.DB, Data.Win.ADODB,
  Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, Clipbrd, Vcl.Menus,
  Vcl.StdCtrls, DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, DynVarsEh,
  EhLibVCL, GridsEh, DBAxisGridsEh, DBGridEh,EhLibADO, Vcl.Buttons;

type
  TFleibie = class(TForm)
    Label1: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    ComboBox1: TComboBox;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Fleibie: TFleibie;

implementation

{$R *.dfm}

uses FDataPool, 日常管理助手, UInitializeDatabaseAdoSqlApi,
  UAutoUpdateCombox, UUpdateLeiBie;

procedure TFleibie.BitBtn1Click(Sender: TObject);
begin
//更新类别值到access数据库中
 TUpdateLeiBie.updateselectedleibie(ComboBox1,frmDataPool.qry需要做的事);
end;




procedure TFleibie.FormCreate(Sender: TObject);
begin
//更新adoquery里面的fields值到combobox的item里;
TAutoUpdateCombox.autoadoqfieldstocombox(ComboBox1,frmDataPool.qry需要做的事);
end;

end.

 

posted @ 2017-06-23 15:09  delphi学习交流吧  阅读(342)  评论(0编辑  收藏  举报