关于数据库字段的增加和删除!!(100分)

  • 主题发起人 主题发起人 ahfei0108
  • 开始时间 开始时间
A

ahfei0108

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库为foxpro,俺用 query的 sql语句:alter table mytablename add column
myfieldname integer 执行后报 'error creating cursor handle',当然,报错没
问题,俺给你屏蔽掉就是了,可是经此alert table 之后,数据库就不能用foxpro 6
打开了,fox6告诉俺'not a table',怪不怪??请各位大虾不吝赐教!!多谢!!

 
SqL Explor 可以打开
用 database desktop 加字段不行吗
用 batchmove 导成 foxpro 的库看看
 
对不起,俺没说清楚,俺想在程序运行中动态地增加、删除字段,请不吝赐教,谢谢!!
 
先创建一个新的表,在把原表中的记录倒入新表,删除旧数据库,改表名

procedure create_table(spe_table:ttable;
field_defs:tfielddefs;
index_defs:tindexdefs
);
begin
with spe_table do
begin
active:=false;
FieldDefs.Assign(field_defs);
indexDefs.Assign(index_defs);
tabletype:=ttfoxpro;
CreateTable;
end;
end;

procedure create_table_bookinf(table_name:string);
var
field_defs:tfielddefs;
index_defs:tindexdefs;
temptable:ttable;
begin
temptable:=ttable.create(nil);
field_defs:=tfielddefs.create(temptable);
index_defs:=tindexdefs.Create(temptable);
try
with field_defs do
begin
clear;
add('book_id',ftstring,15,true);
add('book_name',ftstring,40,false);
add('book_number',ftinteger,0,false);
add('remark',ftstring,100,false);
end;
with index_defs do
begin
clear;
add('aaa','book_ID',[ixprimary]);
end;
create_table(temptable,field_defs,index_defs,administrationname,table_name);
finally
field_defs.free;
index_defs.free;
temptable.free;
end;
end;


 
报错是因为你用的是Query.Open,应该用Query.ExecSQL
 
rookie_ron找到了出错的,谢谢!
 
后退
顶部