2013-10-01 37 views
-2

我正在使用带有delphi 7的访问数据库,并且有注册学生的记录。我想要一个代码,可以显示数据库中的男性学生数量形式以及另一个标签上的女性学生。访问数据库中的字段名是性别,而数据类型是男性和女性。因此,如果男性学生的人数是20和30女性,它应该在一个标签上显示20,在另一个标签上显示30个女性。是否有一个简单的代码可以使用adoquery1和datasource1来完成此操作,我曾经用这个代码来保存数据库中的记录? 字段名称包括 名字其他名称和性别如何在标签中显示已过滤记录的数量

+4

是的,有一种方法可以在数据源中使用adoquery。但是,我不能提供帮助,因为您没有提供有关数据库架构的信息,没有示例数据,没有您希望获得的输出示例,也没有尝试自己编写SQL这样做。 (这是一个使用'COUNT'和'GROUP BY'的简单查询,但没有关于数据库模式的信息,因此很难提供示例。)请[编辑]提供更具体的信息,以便我们尝试和帮助您。我们无法从我们坐的位置看到您的屏幕。 –

回答

1

这样的事情应该可以做到。

AdoQuery1.Active:= false; 
AdoQuery1.SQL.Text:= ' select gender, count(*) as cnt from atable ' 
        +' where something = 10 ' 
        +' group by gender ' 
        +' order by (gender = "M") '; 
AdoQuery1.Active:= true; 
DataSrc:= TDataSource.Create(Self); 
DataSrc.DataSet:= AdoQuery1; 
DataSrc.Enabled:= true; 
DataSrc.FindFirst; 
if lowercase((DataSrc.FieldByName('gender')) = 'm' then begin 
    LabelMale.Caption:= DataSrc.FieldByName('cnt').AsString; 
    Success:= DataSrc.FindNext; 
end 
else LabelMale.Caption:= 'none'; 
if (Success) and (lowercase((DataSrc.FieldByName('gender')) = 'f') then begin 
    LabelFemale.Caption:= DataSrc.FieldByName('cnt').AsString; 
end 
else LabelFemale.Caption:= 'none'; 
相关问题