一个有关动态立DBF表的问题(100分)

  • 主题发起人 主题发起人 erictim
  • 开始时间 开始时间
E

erictim

Unregistered / Unconfirmed
GUEST, unregistred user!
现在使用的DATABASE是通过ODBC配置的VFP,现在使用一个QUERY来动态建立一个表
1、建立表:
Edit1.Text := 'demo.dbf';
str := 'create table '''+Edit1.TExt+'''(teleno char(7),total N(10,2))';
with query1 do
begin
close;
SQL.Clear;
SQL.Add(str);
ExecSQL; //出现错误:DBEngineError with Message"Name not unique in this context"
end;
请问这是为什么?
 
从你给出繁荣问题来看,你的程序中应该使用了两个或以上的DATABASE!而且,每个DATABASE的
HANDLESHARED属性都置为FALSE!可将其中的一个DATABASE的HandleShared属性设为True即可。
 
zengr:你的意见是对的,谢谢。
不过现在还有个问题请教:
就是我想用一个ttable,tablename为刚才建立的表,并使用BatchMove来将一个SQL SERVER 7
中一个表的数据倒入该表中。其中SQL 表结构为t1 char(7),total decimal(10,2)
但是,使用BatchMove时,要对目的及源表字段进行MAPPING,那我如何获得刚才表的字段呢?
这个问题另外加50分,好吗?
 
total N(10,2)==>total Numeric(10,2)

 
To MaoSheng lee:对于VFP之类,并不需要使用Numberic(10,2)来定义,
相反这个关键词Numberic是错误的!应该为number,但都可以简写的。

To erictim:其实,你使用BATCHMOVE来倒数据,并不需要在TTABLE中列出所有字段,你
只需在BATCHMOVE的MAPPING中写好
teleno=teleno(目的表的字段=源表的字段)就可以了。看来你还应该多学习学习。
 
从database desktop里看foxpro 是numeric,Visual dbase 是number,我试过用你
写的会出错,把它改成total Numeric(10,2)就不出错,用desktop可以打开,但用VFP
打不开,可能是用sql创建出来的还是paradox 7 的格式,最好还是用:
DatabaseName :=...; TableType :=...; TableName :=...;
with FieldDefs do
begin
....
end;
在此以前已讨论了不少create table 的问题,请检索它会有所收获.
 
To MaoSheng lee:
你说的方法在这里不适合,因为我是采用ODBC方式,因为我用的是D5。而且,你在PARADOX
中建立DBF表,许多情况下,用VISUAL FOXPRO是打不开的。
 
接受答案了.
 
后退
顶部