码迷,mamicode.com
首页 > 其他好文 > 详细

关于内存控件TdxMemData的编程设计思路_学习

时间:2015-03-03 18:26:25      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

  TdxMemData控件可以把DataSet数据库保存在内存中,并显示在TdxDBGrid上,而通过dxmdt1.FieldByName(‘字段‘).value得到当前光标所在值。通过while遍历 整个数据集中的值。如此可以在内存中先操作数据然后再用sql语句提交到数据库, 通常对一条记录都有增删改的操作,内部的操作可以这样实现:增删改按钮下只是操作内存中的数据,当真正保存按钮时才提交到数据库。方便数据的处理。

TdxMemData应用示例代码:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, dxExEdtr, dxDBTLCl, dxGrClms, dxDBCtrl,
  dxDBGrid, dxTL, dxCntner, dxmdaset, Grids, DBGrids;

type
  TForm1 = class(TForm)
    qry1: TADOQuery;
    con1: TADOConnection;
    mmo1: TMemo;
    btn1: TButton;
    dxmdt1: TdxMemData;
    dxdbgrd1: TdxDBGrid;
    ds1: TDataSource;
    intgrflddxmdt1orderid: TIntegerField;
    intgrflddxmdt1custid: TIntegerField;
    intgrflddxmdt1empid: TIntegerField;
    dtflddxmdt1orderdate: TDateField;
    strngflddxmdt1shipaddress: TStringField;
    dxdbgrdclmndxdbgrd1RecId: TdxDBGridColumn;
    dxdbgrdmskclmndxdbgrd1orderid: TdxDBGridMaskColumn;
    dxdbgrdmskclmndxdbgrd1custid: TdxDBGridMaskColumn;
    dxdbgrdmskclmndxdbgrd1empid: TdxDBGridMaskColumn;
    dxdbgrdtclmndxdbgrd1orderdate: TdxDBGridDateColumn;
    dxdbgrdmskclmndxdbgrd1shipaddress: TdxDBGridMaskColumn;
    btn2: TButton;
    dbgrd1: TDBGrid;
    btn3: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  i:Integer;
begin
  i:=1;
  qry1.Connection:=con1;
  qry1.SQL.Clear;
  qry1.SQL.Add(‘select top 12 orderid,custid,empid,orderdate,shipaddress from TSQLFundamentals2008.sales.Orders‘);
  qry1.Open;
  qry1.First;
  while not qry1.Eof do
  begin
    dxmdt1.Append; //从数据为读取值添加到内存中
    dxmdt1.FieldByName(‘RecId‘).AsInteger:=(i+1);
    dxmdt1.FieldByName(‘orderid‘).AsInteger:=StrToInt(qry1.FieldByName(‘orderid‘).asstring);
    dxmdt1.FieldByName(‘custid‘).AsInteger:=StrToInt(qry1.FieldByName(‘custid‘).asstring);
    dxmdt1.FieldByName(‘empid‘).AsInteger:=StrToInt(qry1.FieldByName(‘empid‘).asstring);
    dxmdt1.FieldByName(‘orderdate‘).AsDateTime:= StrToDate(qry1.FieldByName(‘orderdate‘).asstring);
    dxmdt1.FieldByName(‘shipaddress‘).AsString:=qry1.FieldByName(‘shipaddress‘).asstring;
    mmo1.Lines.Add(qry1.FieldByName(‘orderdate‘).AsString)   ;
    qry1.Next;
    inc(i);
  end;
  qry1.Close;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  dxmdt1.First;
  while not dxmdt1.Eof do
  begin
    if (dxmdt1.FieldByName(‘orderid‘).AsInteger=10249) or (dxmdt1.FieldByName(‘orderid‘).AsInteger=10250) then
    begin
     dxmdt1.Edit;      //需要先设置为edit模式
     dxmdt1.FieldByName(‘shipaddress‘).AsString:=‘zheng zhou‘;
    end;
    dxmdt1.Next;
  end;
  dxmdt1.Edit;
  dxmdt1.Post;
  dxmdt1.First;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin

end;

end.

 

关于内存控件TdxMemData的编程设计思路_学习

标签:

原文地址:http://www.cnblogs.com/hsbs/p/4311330.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!