dbgrid1

 

 

sql.Add('select * from 表名 where  条件 order by字段asc'); //进行查询、排序   其中“ order by  表示按“指定字段”进行排列顺序  参数:asc(升序) 或desc(降序) ”

 

begin

dbgrid1.Columns [0].Width :=512; //0表示第一列 ,

end;

 

begin

edit1.Text :=inttostr(table1.RecNo);//当前记录号显示在edit1.text中

end;

 

begin

if table1.Eof =true then     //eof 改为bof,就是首记录

showmessage('已是最后一条记录')

else

table1.Next    //首记录时,next改为Prior

end;

end.

 

//前提:合计列和指定列必须都是N型字段

begin

  with query1 do

begin

sql.Clear ;  //清理sql

sql.Add('select sum(要合计字段) 合计后字段名称 from 表 where 字段 between 2 and  4'); //“合计后字段名称”改成需要的名称,where后的“字段”为非合计字段之一,“between”是函数,表示在什么之间,“between 2 and  4”表示合计结果为指定字段在2~4之间的所有数。(如把“where 字段 between 2 and 4”改为:where 字段=x,则只合计结果为指定字段等于x的数)where后面的字段为N型。

open; //打开数据库

end;

end;

·          AVG (平均)

·          COUNT (计数)

·          MAX (最大值)

·          MIN (最小值)

·          SUM (总合)

运用函数的语法是:

SELECT "函数名"("栏位名")

FROM "表格名"

 

总数:select count as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

 

 

双击DBGrid1,然后选中要进行下拉的字段名称,设置其PickList属性。

 

下拉内容取指定数据库内容代码如下:

 

Begin //注:上面代码中不能有"end;"

with query1 do

begin

sql.Clear ;  //清理sql

sql.Add('select distinct 字段名 from 表名'); //进行不重复查询

open; //打开数据库

begin

Query1.open;

Query1.First;//指向第一条

dbgrid1.columns[0].picklist.Clear;// dbgrid1.columns[0]是指在dbgrid1的第一个字段。

while not Query1.eof do//向下查询

begin

dbgrid1.columns[0].picklist.Add(Query1.fieldByname('字段名').asstring);//向下拉菜单中添加数据库中的内容,'字段名' 是选择项数据库的字段名

Query1.Next;

end;

end;

end;

end;

 

 

 

begin

DBGrid1.Columns[0].Alignment := taCenter;//第一个显示字段记录

end;

­­begin

DBGrid1.Columns[0].Title.Alignment   :=   TaCenter ;//第一个显示字段名

end;

 

在DBGrid1的KeyPress事件中写如下代码:

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then

begin

 if(DBGrid1.SelectedIndex=DBGrid1.FieldCount-1) Then

 Begin

    DBGrid1.SelectedIndex:=0;

   Table1.Next;

 End

 Else

    DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1;

end;

end;

 

在DBGrid1的On DrawColumnCell事件中写如下代码:

var i:integer;

begin

i:=Table1.RecNo;

if (i mod 2) =1 then

DBGrid1.Canvas.Brush.Color:=clblue  //蓝

else

DBGrid1.Canvas.Brush.Color:=clred; //红

dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);

end;

 

//abc三个字段都是n型(+-*,不能做/)

begin

with Table1 do

begin

first;

while not eof do

begin

edit;

fieldbyname('c').Asinteger := fieldbyname('a').Asinteger +fieldbyname('b').Asinteger ;

post;

next;

end ;

end;

end;

end.  

 

 

从Additional面板选择ApplicationEvents1控件   

   再他的onMessage事件里   

   procedure    TForm1.ApplicationEvents1Message(var    Msg:    tagMSG;   

   var    Handled:    Boolean);   

   begin   

       if    (DBGrid1.Focused)    And    (Msg.message    =    WM_MOUSEWHEEL)    then   

       begin   

       if    Msg.wParam    >    0    then   

           SendMessage(DBGrid1.Handle,    WM_KEYDOWN,    VK_UP,    0)   

       else   

           SendMessage(DBGrid1.Handle,    WM_KEYDOWN,    VK_DOWN,    0);   

       Handled    :=    True;   

       end;   

   end;

 

 

 

在dbgrid最后追加空记录

query1.append;

原文地址:https://www.cnblogs.com/chenbg2001/p/1604986.html