动态生成数据表问题(20分)

  • 主题发起人 主题发起人 huayf
  • 开始时间 开始时间
H

huayf

Unregistered / Unconfirmed
GUEST, unregistred user!
我这样生成表格,但提示:
[Error] Unit1.pas(43): Not enough actual parameters

代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
tabelnames:string;
name:string;
sex:string;
address :string;
begin

tabelnames:=edit1.Text;
name:=edit2.Text ;
sex:=edit3.Text ;
address:=edit4.Text ;
create table tabelnames
(name varchar(10) not null,
sex char(8) not null ,
address varchar(12) not null
) ;
end;
 

create table tabelnames
(name varchar(10) not null,
sex char(8) not null ,
address varchar(12) not null
) ;

这是什么?
 
根据用户的录入(录入作为字段)动态建表,该怎么做?
 
我是个初学者,我好像觉得Delphi创建表应该这样的吧,不能像Sql里面那样吧!!
(如果是笨方法,请见谅!!)
procedure TForm1.Button1Click(Sender: TObject);
var
Table1:TTable;
tablenames:string;
name:string;
sex:string;
address :string;
begin

tablenames:=edit1.Text;
name:=edit2.Text ;
sex:=edit3.Text ;
address:=edit4.Text ;
Table1:=TTable.Create(self);
Table1.Close;
Table1.DataBaseName:='E:/';
Table1.TableName:=Tablenames;
Table1.FieldDefs.Add(name,ftString,10,False);
Table1.FieldDefs.Add(sex,ftstring,8,False);
Table1.FieldDefs.Add(address,ftstring,12,False);
Table1.CreateTable;
Table1.Free;
end;
 
to rongyujohny0: 这样建的是本地数据库吧,我要建立的是网络数据库,我不知道怎么
连接,请多帮忙,谢谢!!!
 
用Table不太好,商业软件一般都是用存储过程。
 
在网络数据库上写一个新建表的存储过程,用ADOStoredProc控件调用执行这个存储过程。
 
procedure TForm1.Button1Click(Sender: TObject);
var
Query:TQuery;
tablenames:string;
name:string;
sex:string;
address :string;
begin

tablenames:=edit1.Text;
name:=edit2.Text ;
sex:=edit3.Text ;
address:=edit4.Text ;
Query := TQuery.Create(Self);
Try
Query.Close;
Query.SQL.CLear;
Query.SQL.Add('Create Table ' + tablenames);
Query.SQL.Add(' Add ' +Name+' VarChar(255) Null, ');
Query.SQL.Add(' Add ' +Sex+' VarChar(255) Null, ');
Query.SQL.Add(' Add ' +Address+' VarChar(255) Null, ');
Query.ExecSQL;
Finally
Query.Free;
End;
end;
 
我要连接的是ORACAL 8i 的数据库,如何把表写入原有的数据库中???先谢谢各位,分
不够我可以再加,包你满意,在线等待。
 
to 碧玉银淑:我要连接的是ORACAL 8i 的数据库,如何把表写入原有的数据库中???先谢谢各位,分
不够我可以再加,包你满意,在线等待。
 
你得先联结数据库呀?
Database1.DatabaseName:=Oracle 8的别名;
table1.DatabaseName:=database1.DatabaseName;
然后就是上面几位说的方法了。
主要是你要先把 Oracle 联上,就这么简单:)
 
Sql里我这样建立存储过程,我想Oracle里也差不多吧!!

存储过程如下:
Create PROCEDURE 动态建立数据表
@TableName varchar(20), @Name varchar(8),@Sex char(8),@Address varchar(12)
as
begin

declare @strSql varchar(800)

set @strSql = 'create table ' + @TableName +
' (' + @Name + ' varchar(10) not null,' +
@Sex+ ' char(8) not null,'
+ @Address +' varchar(12) not null)'

exec(@strsql)

end

然后,在程序中用ADOStoredProc或ADOQuery1调用执行。
 
多人接受答案了。
 
后退
顶部