送分题,想要就进来............ 灌水也有的 (200分)

  • 主题发起人 主题发起人 delphi-fans
  • 开始时间 开始时间
D

delphi-fans

Unregistered / Unconfirmed
GUEST, unregistred user!
动态建表要怎么实现,
(把一个数据库的记录建成一个新的数据库的字段)
能不能给个例子,我是新手请大家多多指教!
 
什么表
数据库吗
CREATE TABLE mylogintable
(
date_in datetime,
user_id int,
myuser_name AS USER_NAME()
)

 
这段程序要放在哪呢,我是新手,SQL语句我不知放在哪里
 
可用Sql或ADOX建
Sql:
可在TQuery,TADOQuery,TADOCommand 等 中用 'Create Table XX(...)'建
ADOX:
调用ADOX对象,可参见李维<<ADO/MTS/COM+...>>一书


 
谢谢各位,我试试看行不行!
 
to: zjok

这段代码是不是放在Tquery的SQL里面,但要怎么让它运行呢?
不好意思问这么菜的问题!!!!!!!!1
 
同zjok
然后Tquery.open打开
 
CREATE TABLE mylogintable
(
date_in datetime,
user_id int,
myuser_name AS USER_NAME()
)
 
query1.close;
query1.sql.clear;
query1.sql.add('CREATE TABLE MYTABLE (');
query1.sql.add('ID char(10) NOT NULL ,');
query1.sql.add('name char(30) NOT NULL ,');
query1.sql.add('CONSTRAINT MYTABLE PRIMARYKEY1 PRIMARY KEY (ID) )');
query1.execsql;
 
各位的方法都可以在运行时建立表,
但有没有办法用别的表的某一个字段的值做为运行时建立的表的字段。
 
继续关注
 
各位的方法都可以在运行时建立表,
但有没有办法用别的表的某一个字段的值做为运行时建立的表的字段。
sql:
create table "你要得表名" as select 你要的字段 form 表名 where 1=2
(where 1=2 表示不取记录)
 
>>但有没有办法用别的表的某一个字段的值做为运行时建立的表的字段。

你所说的新建表的“字段”是“别的表”的“某一个字段”还是“字段的值”??
假如是“别的表”的“某一个字段”,则用楼上的方法就可以~
 
当然是用另一个表的字段值,不知楼上的朋友有没有办法!
 
以上都是用sql语法,但也可采用table的createtable()创建
代码如下:
begin
with ttable.create(self) do begin //建立ttable对象
databasename:='c:/temp'; //建立目录
tablename:='test'; //建立表名
tabletype:=ttparadox; //表的类型
with fielddefs do begin
add('age',ftinteger,0,true);
add('name',ftstring,25,false);
add('weight',ftfloat,0,false);
end;
indexdef.add('','age',[ixprimary,ixunique]);//建立索引
createtable; //建表
end;
end;
 
谢谢楼上的朋友,但我要怎样把别的table里面的记录做为自己要建的table的字段来增加呢?
 
我可要边灌边学咯!!
哈哈~~~~~~
 
我从前作的一个程序,稍稍修改了一下。
var fieldstr:string;
begin
with query1 do
begin
fieldstr:='';
close;
sql.clear;
sql.add('create table test(');
table1.first;
while not table1.eof then
begin
fieldstr:=fieldstr+table1.fieldname('createfield').value+' integer,';//定义字段
table1.next;
end;
//设置算法消除fieldstr的最后一个逗号
for i := length(fieldstr) downto 0 do
begin
if (sqlstr = ',') or (sqlstr = ' ') then
begin
delete(sqlstr, i, 1);
end
else
break;
end;

sql.add(')');
execsql;
end;
end;

 
我用的一个笨方法.先用一个QUERY取出表里面的所有字段值,再做一个循环把QUERY里的值
赋给另一个QUERY的SQL语句.
 
后退
顶部