知识大全 Delphi学堂之在Delphi中自己建立交叉表

Posted

篇首语:炒沙作縻终不饱,缕冰文章费工巧。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi学堂之在Delphi中自己建立交叉表相关的知识,希望对你有一定的参考价值。

Delphi学堂之在Delphi中自己建立交叉表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

function CreateTmptab(const AFieldDefs:TFieldDefs):TDataSet;  var  TempTable:TatClientDataSet;  begin  TempTable:=nil;  Result:=nil;  if AFieldDefs<>nil then  begin    try      TempTable:=TatClientDataSet Create(Application);      TempTable FieldDefs Assign(AFieldDefs);      TempTable CreateDataSet;      Result:=(TempTable as TDataSet);    Except    if TempTable<>nil then      TempTable Free;      Result:=nil;      raise;    end  end;  end;    SouDataset源数据集  ColField交叉表动态列字段  RowField交叉表行字段  DataField数据字段    function GenCrossTable(SouDataset:tdataset;ColField RowField DataField:string):tdataset;  var  Vdataset:tdataset;  tmpdataset:tatclientdataset;  DataSource:tdatasource;  tmpstrs:tstrings;  rowval colval dataval:string;  i j:integer;  datatype:TFieldType;  DataSize:integer;  begin  result:=nil;  if (ColField= ) or(RowField= )or(DataField= ) then   showmessage( All Field not be NULL! )  else  begin   if (ColField=RowField)     or(ColField=DataField)     or(RowField=DataField) then    showmessage( All Field not be Equ! )   else   if (self SouDataSet FieldByName(ColField) DataType=ftString)    or (self SouDataSet FieldByName(ColField) DataType<>ftWideString)    or (self SouDataSet FieldByName(ColField) DataType<>ftFixedChar)    or (self SouDataSet FieldByName(ColField) DataType<>ftMemo)    or (self SouDataSet FieldByName(ColField) DataType<>ftFmtMemo) then   begin   try    tmpstrs:=tstringlist Create;    Vdataset:=SouDataSet;    Vdataset First;    for i:= to Vdataset RecordCount do    begin     if (varisnull(SouDataSet FieldValues[colfield])=false) and (SouDataSet FieldValues[colfield]<> ) then      if tmpstrs IndexOf(SouDataSet FieldValues[colfield])= then      begin       tmpstrs Add(SouDataSet FieldValues[colfield]);      end;     Vdataset Next;    end;    //生成动态列标题    tmpdataset:=TClientDataSet Create(Self);    tmpdataset FieldDefs Add(rowfield ftstring False);    for i:= to tmpstrs Count do    begin     with tmpdataset FieldDefs do     begin      Add(tmpstrs Strings[i] ftInteger False);     end;    end;    tmpdataset FieldDefs Add( Sum ftInteger False);    DataSource:=tdatasource Create(self);    DataSource DataSet:=tmpdataset;    with DataSource do    begin     dataset:=Createtmptab(tmpdataset FieldDefs);     dataset Open;    end;    //建立临时表    Vdataset First;    for i:= to Vdataset RecordCount do    begin     rowval:=SouDataSet fieldbyname(rowfield) AsString;     colval:=SouDataSet fieldbyname(colfield) AsString;     dataval:=SouDataSet fieldbyname(datafield) AsString;     if dataval= then dataval:= ;     if DataSource DataSet Locate(rowfield rowval [loPartialKey]) then     begin      DataSource DataSet Edit;      DataSource DataSet FieldByName(colval) AsString:=dataval;      DataSource DataSet FieldByName( Sum ) AsInteger:=       DataSource DataSet FieldByName( Sum ) AsInteger+strtoint(dataval);      DataSource DataSet Post;     end     else     begin      DataSource DataSet Append;      DataSource DataSet FieldByName(rowfield) AsString:=rowval;      for j:= to DataSource DataSet Fields Count do       DataSource DataSet Fields[j] AsCurrency:= ;      DataSource DataSet FieldByName(colval) AsString:=dataval;      DataSource DataSet FieldByName( Sum ) AsString:=dataval;      DataSource DataSet Post;     end;     Vdataset Next;    end;    result:=DataSource DataSet;    //生成交叉表数据集    tmpstrs Free;   except   end;   end   else    showmessage( ColField Must be of Type String! ) ;  end;  end;    以上代码在D 和SQL Server / 测试通过 cha138/Article/program/Delphi/201311/8419

相关参考

知识大全 Delphi学堂之用Delphi制作DLL小结

Delphi学堂之用Delphi制作DLL小结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一Dl

知识大全 在Delphi中建立和使用别名[2]

在Delphi中建立和使用别名[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  建立使用IN

知识大全 在Delphi中建立和使用别名[3]

在Delphi中建立和使用别名[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  设置模式的主

知识大全 在Delphi中建立和使用别名[1]

在Delphi中建立和使用别名[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  通常我们在D

知识大全 Delphi 中动态链接库(dll)的建立和使用[2]

Delphi中动态链接库(dll)的建立和使用[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Delphi 中动态链接库(dll)的建立和使用[1]

Delphi中动态链接库(dll)的建立和使用[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Delphi基础开发技巧浅析

新手学堂:Delphi基础开发技巧浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!◇[DELPH

知识大全 用Delphi 开发数据库程序经验三则

用Delphi开发数据库程序经验三则  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  建立临时表 

知识大全 Delphi数据库的动态建立

Delphi数据库的动态建立  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  delphi最吸引人

知识大全 利用Delphi建立精确计数器[4]

利用Delphi建立精确计数器[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  proced