如何用BDE的api函数创建一个PARADOX表?(30分)

G

guizhou

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一段程序如下:
DBIResult result;
if ((result=DbiInit(NULL))!=DBIERR_NONE)
Button1->Caption="初始化失败";
hDBISes hSession;
DbiStartSession("NewSession",hSession,"");//创建新的任务
hDBIDb hDb;
if ((result=DbiOpenDatabase("BCDEMOS","STANDARD",dbiREADWRITE,dbiOPENSHARED,NULL,
0,NULL,NULL,hDb))!=DBIERR_NONE)
Button1->Caption="打开数据库失败";
CRTblDesc *TableDesc=new CRTblDesc;
FLDDesc *FieldDesc=new FLDDesc;
memset((void *)TableDesc,0,sizeof(CRTblDesc));
StrCopy(TableDesc->szTblName,"Test");
StrCopy(TableDesc->szTblType,"szPARADOX");
TableDesc->bProtected=false;
TableDesc->iFldCount=1;
TableDesc->pfldDesc=FieldDesc;
FieldDesc->iFldNum=1;
StrCopy(FieldDesc->szName,"One");
FieldDesc->iFldType=0x101;
FieldDesc->iLen=10;
if ((result=DbiCreateTable(hDb,true,*TableDesc))!=DBIERR_NONE)
Button1->Caption=AnsiString(result);
delete TableDesc;
delete FieldDesc;
DbiExit();
清高收指点一下.我的积分不多了,就不全部拿了出来.
小子我先谢谢了 !
 
你的表并不复杂啊?
完全可以用SQL语句来建嘛
 
procedure Tfrm_ksly.CreateATable( TblName : string );
var
tt : tTable;

begin
tt := tTable.Create( nil );
try
with tt do
begin
Active := false;
DatabaseName := '你的数据表的DATABASE或磁盘路径';
TableName := TblName;
TableType := ttParadox;

with FieldDefs do
begin
Clear;
Add( 'Ph_id', ftInteger, 0, False );
Add( 'Scph', ftString, 18, False );
Add( 'Ypbh', ftString, 13, False );
Add( 'Kcl', ftInteger, 0, False );
Add( 'V_kcl', ftInteger, 0, False );
end;
with IndexDefs do
begin
Clear;
Add( '', 'Ph_id', [ixPrimary, ixUnique] );
//加一个主关键字
end;
CreateTable;
end; //with

finally
tt.free;
end;

end;
 
接受答案了.
 
顶部