小弟在做一个财务软件,对数据的要求很高,
ADOConnection1.ConnectionString := sysmdl.GetConstr();
ADOConnection1.Open;
ADOConnection1.BeginTrans;
try
//删除 成功返回0 否则返回-1值
j1 := deleteXMPZfromfeetab();
//插入 成功返回0 否则返回-1值
j2 := InsertXMPZfromFeetab(i); //插入 关联表成功返回0 否则返回-1值
j3 :=InsertXMPzTable();
if (j1+j2+j3) = 0 then
begin
ADOConnection1.CommitTrans;
ADOConnection1.close;
end
else
begin
ADOConnection1.RollbackTrans;
ADOConnection1.close;
exit;
end;
except
ADOConnection1.RollbackTrans; //一旦数据库插入失败,撤销插入
ADOConnection1.close;
exit;
end;
ADOConnection1.ConnectionString := sysmdl.GetConstr();
ADOConnection1.Open;
ADOConnection1.BeginTrans;
try
//删除 成功返回0 否则返回-1值
j1 := deleteXMPZfromfeetab();
//插入 成功返回0 否则返回-1值
j2 := InsertXMPZfromFeetab(i); //插入 关联表成功返回0 否则返回-1值
j3 :=InsertXMPzTable();
if (j1+j2+j3) = 0 then
begin
ADOConnection1.CommitTrans;
ADOConnection1.close;
end
else
begin
ADOConnection1.RollbackTrans;
ADOConnection1.close;
exit;
end;
except
ADOConnection1.RollbackTrans; //一旦数据库插入失败,撤销插入
ADOConnection1.close;
exit;
end;
Provider=SQLOLEDB.1;Persist Security Info=true;User ID=sa;Initial Catalog=financedatabase; Data Source=fanjie; pwd='数据库名 financedatabase 服务器fanjie 用户名sa 没有密码,也没有Auto Translate,是不是ADOConnection1的连接串和普通的adoquery不一样呢?
ADOConnection1.Open;
ADOConnection1.BeginTrans;
try
try
//删除 成功返回0 否则返回-1值
j1 := deleteXMPZfromfeetab();//插入 成功返回0 否则返回-1值
j2 := InsertXMPZfromFeetab(i);//插入 关联表成功返回0 否则返回-1值
j3 :=InsertXMPzTable();
if (j1+j2+j3) = 0 then
begin
ADOConnection1.CommitTrans;
ADOConnection1.close;
end
else
begin
ADOConnection1.RollbackTrans;
ADOConnection1.close;
exit;
end;
except
ADOConnection1.RollbackTrans; //一旦数据库插入失败,撤销插入
ADOConnection1.close;
exit;
end;
finally
if adoconnection1.inTrans.. then adoconnection1.RollbackTrans;
end;
Provider=SQLOLEDB.1;Password="";Persist Security Info=True;User ID=sa;Data Source=192.168.0.1;Auto Translate=False
j2 := InsertXMPZfromFeetab(i);//插入 关联表成功返回0 否则返回-1值
j3 :=InsertXMPzTable();能不能把这三个方法的代码贴出来啊~~~~~
//在项目凭证中删除,注意要指向员工姓名
function Tcheckpzfrms.deleteXMPZfromfeetab(): Integer;
var
Fieldarray, Valuearray: array[0..5] of string;
begin
result := -1;
//PzHao,Lrzx,Bmstr,PZobject,Fsrq,Pztype,BZstr,Pzje:string;
Fieldarray[0] := 'lrzx'; //利润中心
Fieldarray[1] := 'bm'; //部门
Fieldarray[2] := 'pzlb'; //凭证类别---这里是项目(加上人)如我和修立出差 其它都一杨就是名字不一样
Fieldarray[3] := 'fsrq'; //到日
Fieldarray[4] := 'pzbm'; //凭证编码
Fieldarray[5] := 'ygxm'; //员工姓名 sdf Valuearray[0] := Lrzx;
Valuearray[1] := Bmstr;
Valuearray[2] := '项目';
Valuearray[3] := Fsrq;
Valuearray[4] := PzHao;
Valuearray[5] := PZobject; //sdf
if sysmdl.DeleteRecord('feetab', Fieldarray, Valuearray, 5) then result := 0;
end;删除记录是一个通用的函数
//删除记录
function DeleteRecord(TableName: string;
Fieldarray, Valuearray: array of string; arraylen: Integer): boolean;
var
ADOQuery1: TADOQuery;
sqlstr: string;
i: Integer;
begin
try
ADOQuery1 := TADOQuery.Create(nil);
ADOQuery1.ConnectionString := GetConstr;
sqlstr := 'delete from ' + TableName +
' where ';
if arraylen > 1 then
begin
for i := 0 to arraylen - 1 do
sqlstr := sqlstr + Fieldarray[i] + '=''' + Valuearray[i] + ''' and ';
sqlstr := sqlstr + Fieldarray[arraylen] + '=''' + Valuearray[arraylen] + '''';
end; if arraylen = 1 then
sqlstr := sqlstr + Fieldarray[arraylen] + '=''' + Valuearray[arraylen] + ''''; sqlstr := sqlstr; //调试用
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.ExecSQL;
result := true;
//Application.MessageBox (' 数 据 删 除 成 功! ', '成功', mb_ok);
ADOQuery1.Free;
except
result := false;
Application.MessageBox(' 对 不 起 数 据 删 除 失 败 ! ', '警告!', mb_ok);
ADOQuery1.Free;
end;
end;
ADOConnection1.Open;//删除
ADOConnection1.BeginTrans;
ok
to fantasy1999(黄滕酒) ADOQuery1的Connection属性置为ADOConnection1还是不行
Fieldarray, Valuearray: array of string; arraylen: Integer): boolean;
var
ADOQuery1: TADOQuery;
sqlstr: string;
i: Integer;
begin
result := false;
ADOQuery1 := TADOQuery.Create(nil);
try
ADOQuery1.Connection := ADOConnection1;
sqlstr := 'delete from ' + TableName +
' where ';
if arraylen > 1 then
begin
for i := 0 to arraylen - 1 do
sqlstr := sqlstr + Fieldarray[i] + '=''' + Valuearray[i] + ''' and ';
sqlstr := sqlstr + Fieldarray[arraylen] + '=''' + Valuearray[arraylen] + '''';
end; if arraylen = 1 then
sqlstr := sqlstr + Fieldarray[arraylen] + '=''' + Valuearray[arraylen] + ''''; sqlstr := sqlstr; //调试用
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlstr);
try
ADOQuery1.ExecSQL;
result := true;
except
raise;
end;
finally
ADOQuery1.Free;
end;
end;ADOConnection1.BeginTrans;
try
j1 := deleteXMPZfromfeetab();
j2 := InsertXMPZfromFeetab(i);
j3 :=InsertXMPzTable();
if (j1+j2+j3) = 0 then
begin
ADOConnection1.CommitTrans;
end
else
begin
ADOConnection1.RollbackTrans;
end;
except
ADOConnection1.RollbackTrans; //一旦数据库插入失败,撤销插入
end;