unit JCBYWXX;
interface
uses
Business.System, Business.Model, Business.Data,Business.Forms;
type
TJCBYWXX = class(TInfo)
DataSetQSZ: TSQLDataSet;
DataSetZZZ: TSQLDataSet;
DataSetBZSJJ2: TSQLDataSet;
DataSetBZSJJ3: TSQLDataSet;
DataSetBZSJJ4: TSQLDataSet;
DataSetXLXXXXBZSJJ: TSQLDataSet;
DataSetSJGDCZ: TSQLDataSet;
DataSetXLGK: TSQLDataSet;
private
{private declarations}
public
function GetStation(AStart,AEnd:string):TStrings;//尽量不要用数组类型,而用TStrings类型代替数组类型
end;
implementation
function TJCBYWXX.GetStation(AStart,AEnd:string):TStrings;
var
lCC : string;
lZZ : string;
AList : TStrings;
lBoolean : Boolean;
begin
// AList.Clear;
//对数据集的操作过程:先将数据集DataSetQSZ关闭,对数据集中定义的参数赋值,最后将数据集打开
DataSetQSZ.Close;
DataSetQSZ.Params.ParamByName('PStart').AsString := AStart;
//PStart是在"交叉表业务信息集/起始站/SQL构造器/条件"中定义的参数;AStart是本函数中定义的参数
//将AStart的值赋给参数,进而将DataSetQSZ数据集过滤。过滤条件在"交叉表业务信息集/起始站/SQL构造器/条件"中的"站牌信息表.车站名称 = Start"
//将DataSetQSZ数据集中的车站名称为PStart的所有项提取出来,并保存到DataSetQSZ数据集中
DataSetQSZ.OPen;
DataSetZZZ.Close;
DataSetZZZ.Params.ParamByName('PEnd').AsString := AEnd;
DataSetZZZ.OPen;
//取数据集中某个数据的方式:先取出某一行数据(DataSetQSZ.First),再取出这一行中的某一列数据(lCC := DataSetQSZ.FieldByName('LINENUM').AsString)
DataSetQSZ.First ;//取出DataSetQSZ数据集中的第一条数据
while not DataSetQSZ.Eof do //Eof means end-of-file; 用not DataSetQSZ.Eof来判断数据集DataSetQSZ是否已经到最后一条记录或为空
//对于数据集中每条记录的循环用while循环
begin
lCC := DataSetQSZ.FieldByName('LINENUM').AsString; //将DataSetQSZ数据集中的"车站名称"列赋给
DataSetZZZ.First;//
while not DataSetZZZ.Eof do
begin
lZZ := DataSetZZZ.FieldByName('LINENUM').AsString;
if lCC = lZZ then
AList.Add(lCC);//将lCC循环加入AList中
DataSetZZZ.Next;//指向DataSetZZZ数据集中的下一行
end;
DataSetQSZ.Next;
end;
Result := AList;
lBoolean := Result.Count >0;
if not lBoolean then
jsDialogs.ShowWarning('两车站间没有直达车!','注意!')//弹出对话框
end;
end. |