知识大全 解析delta得到sql语句的函数

Posted 语句

篇首语:勤劳一日,可得一夜安眠;勤劳一生,可得幸福长眠。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 解析delta得到sql语句的函数相关的知识,希望对你有一定的参考价值。

  解析出sql语句

  function TForm gensqls(AdoCon:TADOConnection; pdelta: OleVariant; const ptablename pkeyfields: WideString): WideString;

  var

  i j: integer;

  s s : string;

  Cmdstr: string;

  FieldList Keylist: TstringList;

  Cdsupdate: TClientDataSet;

  sqlstr: WideString;

  ado: TADOQuery;

  begin

  if varisnull(pdelta) then

  Exit;

  Cdsupdate:=TClientDataSet Create(nil);

  Cdsupdate data:=pdelta;

  if not Cdsupdate Active then

  Cdsupdate Open;

  try

  FieldList:=TstringList Create;

  Keylist:=TstringList Create;

  Keylist Delimiter:= ;

  Keylist DelimitedText:=pkeyfields;

  ado:=TADOQuery Create(nil);

  ado Connection:=AdoCon;

  ado sql Text:= select * from +ptablename+ where = ;

  ado Open;

  ado GetFieldNames(FieldList);

  ado Free;

  for i:= to FieldList Count do

  if Cdsupdate FindField(FieldList[i ])<>nil then

  Cdsupdate FindField(FieldList[i ]) tag:= ;

  FieldList Free;

  if Cdsupdate RecordCount> then

  begin

  Cdsupdate First;

  s := ;

  s := ;

  while not Cdsupdate Eof do

  begin

  Cmdstr:= ;

  case Cdsupdate UpdateStatus of

  usUnmodified: //从原数据行取得修改条件

  begin

  s := ;

  for j:= to Keylist Count do

  begin

  if s = then

  s :=Keylist[j ]+ = +vartosql(Cdsupdate[Keylist[j ]])

  else

  s :=s + and +Keylist[j ]+ = +vartosql(Cdsupdate[Keylist[j ]]);

  end;

  end;

  usModified:

  begin

  s := ;

  for i:= to Cdsupdate FieldCount do

  begin

  if (not Cdsupdate Fields[i ] isNull)and(Cdsupdate Fields[i ] tag= ) then

  begin

  if s = then

  s :=Trim(Cdsupdate Fields[i ] FieldName)+ = +vartosql(Cdsupdate Fields[i ] value)

  else

  s :=s + +Trim(Cdsupdate Fields[i ] FieldName)+ = +vartosql(Cdsupdate Fields[i ] value);

  end;

  end;

  if s <> then

  begin

  Cmdstr:= update +ptablename+ set +s + where +s ;

  end;

  end;

  usInserted:

  begin

  s := ;

  s := ;

  for i:= to Cdsupdate FieldCount do

  if (not Cdsupdate Fields[i ] isNull)and(Cdsupdate Fields[i ] tag= ) then

  begin

  if s = then

  begin

  s :=Trim(Cdsupdate Fields[i ] FieldName);

  s :=vartosql(Cdsupdate Fields[i ] value);

  end

  else

  begin

  s :=s + +Trim(Cdsupdate Fields[i ] FieldName);

  s :=s + +vartosql(Cdsupdate Fields[i ] value);

  end;

  end;

  if s <> then

  begin

  Cmdstr:= Insert into +ptablename+ ( +s + ) values( +s + ) ;

  end;

  end;

  usDeleted:

  begin

  s := ;

  for j:= to Keylist Count do

  begin

  if s = then

  s :=Keylist[j ]+ = +vartosql(Cdsupdate[Keylist[j ]])

  else

  s :=s + and +Keylist[j ]+ = +vartosql(Cdsupdate[Keylist[j ]]);

  end;

  Cmdstr:= Delete +ptablename+ where +s ;

  end;

  end;

  if Cmdstr<> then

  sqlstr:=sqlstr+Cmdstr+ ; +chr( )+chr( );

  Cdsupdate Next;

  end;

  end;

  finally

  Cdsupdate close;

  Cdsupdate Free();

  end;

  Result:=sqlstr;

cha138/Article/program/Oracle/201311/17878

相关参考

知识大全 asp根据表单自动生成sql语句的函数

  每次在操作数据库的时候最烦的就是根据表单提交的内容写sql语句特别是字段比较多的时候很麻烦动不动就容易写错所以我就写了下面的生成sql语句的函数用了用觉得还可以  程序代码  <%=====

知识大全 oracle中SQL语句可以使用的函数

oracle中SQL语句可以使用的函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  字符串处理

知识大全 Sql语句解析过程

Sql语句解析过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为了将用户写的SQL文本转化为

知识大全 解析关于SQL语句Count的一点细节

解析关于SQL语句Count的一点细节  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!复制代码代码如

知识大全 SQL2005CLR函数扩展-解析天气服务的实现

SQL2005CLR函数扩展-解析天气服务的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 解析SQL2005中如何使用CLR函数获取行号

解析SQL2005中如何使用CLR函数获取行号  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  S

知识大全 使用构造函数初始化语句

C#箴言:使用构造函数初始化语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 SQL基本语句

SQL基本语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  掌握SQL四条最基本的数据*作语句

知识大全 sql语句实现表的字段名查询

  下面为您介绍的是查询表的字段名的sql语句写法sql语句可以实现许多的功能希望可以您在学习sql语句使用方面获得启示  selectnamefromsyscolumnswhereid=(selec

知识大全 测试sql语句性能

  有时候我们经常为我们的sql语句执行效率低下发愁反复优化后可还是得不到提高  那么你就用这条语句找出你sql到底是在哪里慢了  示例  SETSTATISTICSioON  &