三层结构,在ApplicationServer中写的更新数据过程,Client端中如何调用???(50分)

  • 主题发起人 主题发起人 wuyunDel
  • 开始时间 开始时间
W

wuyunDel

Unregistered / Unconfirmed
GUEST, unregistred user!
三层结构,在ApplicationServer中写的更新数据过程,Client端中如何调用??
如:我在ApplicationServer中写下过程:(主从表删除过程)
procedure TTestServer.BeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet;
DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind;
var Applied: Boolean);
procedure ApplyMaster(const deletetext: string);
begin
aQDetailUpdate.SQL.Text := deletetext;
aQDetailUpdate.Parameters[0].Value := DeltaDS.FieldByName('a').AsString;
aQDetailUpdate.ExecSQL;
end;

procedure ApplyDetail(const deletetext: string);
begin
aQDetailUpdate.SQL.Text := deletetext;
aQDetailUpdate.Parameters[0].Value := DeltaDS.FieldByName('b').AsString;
// aQDetailUpdate.Parameters[1].Value := DeltaDS.FieldByName('DET_SEQ').AsInteger;
aQDetailUpdate.ExecSQL;
Applied := True;
end;

begin
if UpdateKind = ukDelete then
begin
if SourceDS = aQTest1 then
begin
ApplyMaster('DELETE FROM Test1 WHERE a = :a);
end
else
if SourceDS = aQTest2 then
ApplyDetail('DELETE FROM Test2 WHERE b = :b);
end;
end;
那我如何在客户端中调用这个删除过程??急!!
 
再顶一下,看那个富翁能告诉我。
 
你们是如果在三层的系统中删除主从表数据的??
可以告诉我吗?
 
分少点了 再加点可以告诉你
 
你至少要说一下你需要什么样的效果吧......
 
来自:justmejwt, 时间:2006-10-6 11:16:00, ID:3589241
你至少要说一下你需要什么样的效果吧......
--------------
对啊,
不然怎么知道你要怎样?
俺是不让同时显示多个MDIChild窗口,
用了这个函数,每次开启时运行这个函数,
procedure TFrm_Main.CheckMDIChild;
var
i : integer;
begin
if(Frm_Main.MDIChildCount>0)then
begin
for i := 0 to Frm_Main.MDIChildCount-1do
Frm_Main.MDIChildren.Close;
end;
end;
 
楼上的这个语句加到哪个地方,我也是想做这个效果..
 
procedure TFrm_Main.UserInfoClick(Sender: TObject);
begin
CheckMDIChild;
if not Assigned(Frm_User) then
Frm_User := TFrm_User.Create(nil);
Frm_User.Visible := True;

end;
这样加!!
 
这样可以保证同时只能显示一个MDIChild窗口,
 
要在每个按钮里加啊...有个MainMenu.
 
是的,
如果有其他办法也请提供下,
 
在窗体的关闭事件中写:
procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
Form1 := nil;
end;

另外,你的下面过程有可能会出错:
procedure TFrm_Main.CheckMDIChild;
var
i : integer;
begin
if(Frm_Main.MDIChildCount>0)then
begin
for i := 0 to Frm_Main.MDIChildCount-1do
//这里,如果连着关闭几个窗体,一定出错
Frm_Main.MDIChildren.Close;
end;
end;

可以写成这样:
procedure TFrm_Main.CheckMDIChild;
var
i : integer;
begin
if(Frm_Main.MDIChildCount>0)then
begin
for i := Frm_Main.MDIChildCount-1do
wnto 0do

Frm_Main.MDIChildren.Close;
end;
end;
 
不会出错的,
你的出了什么错,写出来给大家看看可以吗?
好了,回家过中秋了!!
 
你是要什么样的效果呢?如果要每个MDI子窗口打开都是最大化,我之前也做过,但代码在家里,晚上传上来
 
非常感谢大家的帮忙,但是上面还没有我想要的答案,可能是我说得不够明白,详细如下:
第一个MDIChild窗口已经打开,并且是最大化,当打开第二个MDIChild时,第二个窗口会跟第一个窗口一样最大化。我现在想要的效果是第一个最大化存在,第二个、第三个、或更多个窗口打开时不要最大化,自动到默认的大小,如何解决?
 
好象不行,WINDOWS不允许这样做。至少,单纯的MDI不行。
变通一下,用DOCK,设一个窗体,DOCK进MDI的主窗口中,或是用PANEL去模拟第一个窗口
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部