这是delphi一个关于数据访问的问题:
var
str:string;
begin str:=a:=a+' select a.*,b.DpNa, b.DpTyp, (select DpNa from EpDept where b.DpPrId=DpId) as DpPrId, c.EdNa, d.DtNa , e.TyNa, f.ElDate,g.HoNa ,h.PoNa,i.TryPay '+
'from Employee AS a '+
'LEFT JOIN EpDept as b ON a.DpId = b.DpId '+
'LEFT JOIN EpEdu as c ON a.EdNo = c.EdNo '+
'LEFT JOIN EpDuty as d ON a.DtNo = d.DtNo '+
'LEFT JOIN EpTyP as e ON a.TyNo = e.TyNo '+
'LEFT JOIN EpLeave as f ON a.EpId = f.EpId '+
'LEFT JOIN EpHome as g ON a.HoNo = g.HoNo '+
'LEFT JOIN EpPost as h ON a.PoNo = h.PoNo '+
' LEFT JOIN TryPay as i ON a.EpId = i.EpId'+
' where 1=1 '; ADODataSet1.Close;
ADODataSet1.CommandText:='';
ADODataSet1.CommandText:=a;
ADODataSet1.Open;
我现在想直接在ADODataSet1上赋值!
比如:
ADODataSet1.edit;
ADODataSet1.FieldByName('EpId').AsString:=edit1.txt;
ADODataSet1.FieldByName('EpNa').AsString:=edit2.txt;
....................
直接在ADODataSet1上赋值好像不行?????? 怎样才能做到?????
var
str:string;
begin str:=a:=a+' select a.*,b.DpNa, b.DpTyp, (select DpNa from EpDept where b.DpPrId=DpId) as DpPrId, c.EdNa, d.DtNa , e.TyNa, f.ElDate,g.HoNa ,h.PoNa,i.TryPay '+
'from Employee AS a '+
'LEFT JOIN EpDept as b ON a.DpId = b.DpId '+
'LEFT JOIN EpEdu as c ON a.EdNo = c.EdNo '+
'LEFT JOIN EpDuty as d ON a.DtNo = d.DtNo '+
'LEFT JOIN EpTyP as e ON a.TyNo = e.TyNo '+
'LEFT JOIN EpLeave as f ON a.EpId = f.EpId '+
'LEFT JOIN EpHome as g ON a.HoNo = g.HoNo '+
'LEFT JOIN EpPost as h ON a.PoNo = h.PoNo '+
' LEFT JOIN TryPay as i ON a.EpId = i.EpId'+
' where 1=1 '; ADODataSet1.Close;
ADODataSet1.CommandText:='';
ADODataSet1.CommandText:=a;
ADODataSet1.Open;
我现在想直接在ADODataSet1上赋值!
比如:
ADODataSet1.edit;
ADODataSet1.FieldByName('EpId').AsString:=edit1.txt;
ADODataSet1.FieldByName('EpNa').AsString:=edit2.txt;
....................
直接在ADODataSet1上赋值好像不行?????? 怎样才能做到?????
但习惯上我们把join的结果集还是当成只读。用delphi的lookup代替sql join。
这种不行AsString是给其它变量赋值时使用的。
.value
再放一个ADODataSet2
ADODataSet2.close;
ADODataSet2.commandtext := 'update Employee set(EpId,EpNa,....)values('''+edit1.txt+''','''+edit2.txt''',....) where 记录唯一标识';
ADODataSet2.Execute;
再放一个ADODataSet2
ADODataSet2.close;
ADODataSet2.commandtext := 'update Employee
set EpId = '''+edit1.txt+''',EpNa = '''+edit2.txt''',......
where 记录唯一标识';
ADODataSet2.Execute;