我的业务逻辑放在dll中,
dll中定义如下:
function Modipassbill(app:TApplication;dbconn:TMSConnection):string;
var
  ModiPass: TModiPass;
  oldapp:TApplication;
begin
  oldapp:=Application;
  Application:=app;
  ModiPass:=TModiPass.Create(nil);
  with ModiPass do
  begin
    conn:=dbconn;
    Mainshow;
    Free;
  end;
  Application:=oldapp;
end;
主程序传一个数据库connection到dll.
查询数据都没问题。执行sql语句也没问题,但就是执行后数据库无变化。不知道怎么回来。数据库组件用的sdac mssql
 msqry1.SQL.Text:='select * from users where userid='''+ uid +'''';
   msqry1.Open;
   if Trim(edtoldpass.Text)=msqry1.FieldByName('password').AsString then
   begin
      if Trim(edtNewpass.Text)=Trim(edtnewpasst.Text) then
      begin
        msqry1.Edit;
        msqry1.FieldByName('password').AsString:=Trim(edtoldpass.Text);
        try
          msqry1.Connection.StartTransaction;
          msqry1.Post;
          msqry1.Connection.Commit;
          ShowMessage('修改密码成功!');
          Close;
        except
          ShowMessage('修改密码失败!');
          msqry1.Connection.Rollback;
          Close;
        end;
      end
      else
      begin
        ShowMessage('两次输入的新口令不一致,请重新输入!');
        edtoldpass.SetFocus;
      end;
   end
   else
   begin
     ShowMessage('旧口令错误,请重新输入!');
     edtoldpass.SetFocus;
   end;
各位老大帮我看看,搞了一天了。