2011-03-31 195 views
1

我有另一个问题,我有一个数据库用UserID的数据。 我想要一个编辑该数据的选项,并将其写入正确的行中。我们可以“编辑”数据,但它会在数据库中创建一个全新的行, 如何覆盖表中的现有数据?我不得不使用查找,但如何?如何使用查找来编辑数据库中的数据?

这是代码:

procedure TfmKlant.BTOpslaanClick(Sender: TObject); 
begin 
    dm.atInlog.Open; 
    gevonden := false; 
    while (not gevonden) and (not dm.atInlog.eof) do 
    begin 
     if dm.atInlog['email'] = fminloggen.inlognaam 
     then 
     begin 
     // plaats gegevens in de textboxen 
     gevonden := true; 
     dm.atInlog.Append; 
     dm.atInlog['naam']  := leNaam.text; 
     dm.atInlog['adres']  := leAdres.text; 
     dm.atInlog['postcode'] := lePostcode.text; 
     dm.atInlog['telefoon'] := leTelefoonnummer.text; 
     dm.atInlog['email']  := leEmail.text; 
     dm.atInlog['password'] := lePassword.text; 
     dm.atInlog.Post; 
     end 
     else 
    dm.atInlog.Next; 
    end; 
     leemail.Clear; 
     lenaam.Clear; 
     leadres.clear; 
     lepostcode.clear; 
     letelefoonnummer.clear; 
     lepassword.clear; 
end; 
+0

哪种类型dm.atInlog? – jachguate 2011-03-31 16:13:32

+0

这是一张桌子。它在数据模块中创建并连接 – 2011-03-31 20:32:20

+0

我的调色板中没有“表”组件,但是如果您的“表”来自TDataSet,则无需手动迭代所有记录即可达到您想要的记录。使用Locate方法,或者,如果DataSet支持索引,则使用最快的FindKey方法。 – jachguate 2011-04-01 01:48:37

回答

3

使用dm.atInlog.Edit;,而不是dm.atInlog.Append;在你的代码

+0

我们很愚蠢:')做了诡计,你不知道我们一直在这个问题上坐了多久 – 2011-03-31 14:42:06