初级问题:TableName可否动态更改?(50分)

  • 主题发起人 主题发起人 zypeny
  • 开始时间 开始时间
Z

zypeny

Unregistered / Unconfirmed
GUEST, unregistred user!
我用"DataBase Form Wizard"产生的一个用DBGrid显示的Table窗体,
希望不同的控件调用都弹出这个Form1,但显示不同的Table.
设计时Table的Active为False,TableName为Now.db

procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.TableName := 'NewPlanned.db';
Table1.Open;
end;

为什么这种方式行不通?

 
要先close吧?
 
应该把Table1.Close;加在第一句。
 
Table1.Close就是设Table的Active为False,
而这在设计时已设了.
我试了,加了也不行,
Table1.Close;
Table1.Open;
这两句显示"inaccessible value"!?
 
在 form 的 oncreate 事件中
能设置 table。open 吗?请教大虾。oncreate 事件
 
当然可以啦,这是Wizard生成的.
 
放到formshow中试一试不就知道了。
 
是不是因为以后调用的时候根本没有执行form.create代码?
因为form只是第一次被create了.

 
要注意:
1、表名必须大写:
TABLENAME='NEWPLANNED'
2、若没有配BDE的话,必须加上路径和后缀。
 
把你调用Form1的代码贴上来,别让大家猜
 
承蒙诸位大侠关注,这个问题总算解决了!
可能是我没将问题表述清楚,我在其他窗体每次调用Form1时都动态生成,
调用如下函数:
procedure workShowTable(strTableName: String);
begin
Application.CreateForm(TForm1, Form1);
try
with Form1 do
begin
if Table1.Active then Table1.Close;
Table1.TableName:=strTableName;
Table1.Open;
ShowModal;
end;
finally
Form1.Free;
end;
end;
现虽已解决,但是我还不知道为什么,总之,经过多次尝试发现:
用Data Form Wizard生成的窗体,不论怎样修改参数都只能显示一个表,
即用Data Form Wizard生成初期必须指定的那个表!
很奇怪吧!真不知Data Form Wizard指定了个什么奇怪参数!
而我自己生成的同样的窗体,却可以根据需要显示不同的表.

总之,非常感谢大家的热心帮助!
在我的delphi4版本里,表名无须大写的.谢谢yck的提醒!
也感谢delphiwolf的建议!
 
多人接受答案了。
 
后退
顶部