知识大全 解析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相关参考
每次在操作数据库的时候最烦的就是根据表单提交的内容写sql语句特别是字段比较多的时候很麻烦动不动就容易写错所以我就写了下面的生成sql语句的函数用了用觉得还可以 程序代码 <%=====
oracle中SQL语句可以使用的函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 字符串处理
Sql语句解析过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为了将用户写的SQL文本转化为
解析关于SQL语句Count的一点细节 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!复制代码代码如
SQL2005CLR函数扩展-解析天气服务的实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
解析SQL2005中如何使用CLR函数获取行号 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! S
C#箴言:使用构造函数初始化语句 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
SQL基本语句 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 掌握SQL四条最基本的数据*作语句
下面为您介绍的是查询表的字段名的sql语句写法sql语句可以实现许多的功能希望可以您在学习sql语句使用方面获得启示 selectnamefromsyscolumnswhereid=(selec
有时候我们经常为我们的sql语句执行效率低下发愁反复优化后可还是得不到提高 那么你就用这条语句找出你sql到底是在哪里慢了 示例 SETSTATISTICSioON &