为什么我用Session动态建数据库别名(FoxPro)可以,但是用query新建出的表却是Paradox的? (100分)

  • 主题发起人 主题发起人 littlefish
  • 开始时间 开始时间
L

littlefish

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button2Click(Sender: TObject);
var
LS:TStringList;
begin
LS:=TStringList.Create;
Session.GetAliasNames(LS);
if LS.IndexOf('hy')=-1 then
begin

注意这句,数据驱动是FoxPro的,但在hy下建的表却是Paradox的。
Session.AddStandardAlias('hy',S,'FoxPro');
Session.SaveConfigFile;
end

LS.Clear;
Session.GetTableNames('hy',TabName,false,false,LS);
if LS.IndexOf(TabName)=-1 then
begin
MyCreateTable;
end
else
begin
MyDropTable;
MyCreateTable;
end;
end;

procedure TForm1.MyCreateTable;
var
SqlStr:string;
begin
SqlStr:='';
SqlStr:='Create Table '+TabName+' (NoID numeric(8,2))';
Query1.SQL.Clear;
Query1.SQL.Add(SqlStr);
Query1.ExecSQL;
end;

procedure TForm1.MyDropTable;
var
SqlStr:string;
begin
SqlStr:='';
SqlStr:='Drop Table '+TabName;
Query1.SQL.Clear;
Query1.SQL.Add(SqlStr);
Query1.ExecSQL;
end;

建出来的表是Paradox的。FoxPro的驱动都有。我改成dBase的也一样。
另外 Create Table '+TempTabName+' (NoID numeric(8,2)) 定NoID为主键的语法怎么写?
 
用Table建表可以建Forxpro的。

with Table1.FieldDefs do
begin
Add('XXDM'ftString,2);
Add('CJ',ftFloat);
Add('KC',ftString,2);
Add('ZWH',ftString,3);
Add('ZF',ftFloat);
Add('KMQ',ftFloat);
TableName :='c:/cj.dbf';
TableType :=ttFoxPro;
CreateTable ;
end;

 
忘了说,用Table建表是可以,但是不能设定numeric类型的字段长度(都是系统缺省值),
而我的程序必须要求能制定字段的长度,因为这张表要用在POS机上,比系统缺省只要小。
 
后退
顶部