重新造轮子,编写自己的RecordSet

这些日子答应别人要帮忙写一个简单的管理器,理所当然的要用到数据库。我其实是不太喜欢开发那些业务管理系统的,但既然答应别人了,那就没办法了。

本来打算直接用ADO算了,但用的时候总觉得有些不太好使。于是就用dbExpress作其中间层来写,但后来却发现这个dbExpress对SQL Server中的自增变量(Auto Inc)不好处理,另外,如果要用dbExpress,则程序发布时总要带个Midas.dll之类的东西,十分的不便。所以一怒之下,决定自己写一个类似的东西。就是本文要写的一个RecordSet。

我总喜欢未介绍实现,就先演示一下结果,这个RecordSet究竟能够干些什么:请看

procedure TForm1.InitRecordSet;
var
  ft : TFlexFieldType;
  aRecord: TFlexRecord;
  i, j : integer;
begin
// Main RS
  self.FRecordSet := TFlexRecordSet.Create;
  ft := TFlexFieldType.Create(TFlexFieldIntegerValue);
  ft.FiledName := 'MyIntegerFieldName';
  ft.Caption := 'Int Field';
  ft.IsShow := true;
  FRecordSet.FieldTypes.AddFiledType(ft);

  ft := TFlexFieldType.Create(TFlexFieldStringValue);
  ft.FiledName := 'MyStringFieldName';
  ft.Caption := 'Str Field';
  ft.IsShow := true;
  FRecordSet.FieldTypes.AddFiledType(ft);

  ft := TFlexFieldType.Create(TFlexFieldStringValue);
  ft.FiledName := 'MyStringFieldName';
  ft.Caption := 'Str Hide Field';
  ft.IsShow := false;
  FRecordSet.FieldTypes.AddFiledType(ft);

  ft := TFlexFieldType.Create(TFlexFieldIntegerValue);
  ft.FiledName := 'MyStringFieldName';
  ft.Caption := 'Str Map Field';
  ft.IsShow := true;
  FRecordSet.FieldTypes.AddFiledType(ft);

  ft := TFlexFieldType.Create(TFlexFieldStringValue);
  ft.FiledName := 'MyStringFieldName';
  ft.Caption := 'Str Show 2 Field';
  ft.IsShow := true;
  FRecordSet.FieldTypes.AddFiledType(ft);

  for i := 0 to 99 do
    begin
      aRecord := FRecordSet.CreateNewRecord;
      TFlexFieldIntegerValue(aRecord.FieldValues[0]).Value := i;
      TFlexFieldStringValue(aRecord.FieldValues[1]).Value := 'S ' + IntToStr(i);
      TFlexFieldStringValue(aRecord.FieldValues[2]).Value := 'H ' + IntToStr(i);
      TFlexFieldIntegerValue(aRecord.FieldValues[3]).Value := i mod 5;
      TFlexFieldStringValue(aRecord.FieldValues[4]).Value := 'V ' + IntToStr(i);
      FRecordSet.AddRawData(aRecord);
    end;
 end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值