没人会这个问题吗?怎样修改ACCESS里的字段名? 解决后再送分!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQL的alter table不行吗?不行就不知道怎么办了。 给你一个例子!先要联结ACCESS数据源在用ALTER TABLE来修改.procedure dbgridtoacess;var dbname,tablename:string; opendlg: Topendialog; sql1,sql2,sql3,sql4:string; i:integer;begin opendlg:=Topendialog.Create(nil); opendlg.InitialDir:=extractfilepath(application.ExeName); opendlg.Title:='请选择输出的Acess数据库名:'; opendlg.Execute; if (opendlg.FileName<>'') and (ExtractFileExt(opendlg.FileName)='.mdb') then dbname:=trim(opendlg.FileName) else exit; opendlg.Free; fm_bf.adocn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+dbname+';Persist Security Info=False'; fm_bf.adocn.LoginPrompt:=false; fm_bf.adocn.Connected:=true; for i:=0 to fm_main.DBGrid.FieldCount-1 do begin case fm_main.DBGrid.Fields[i].DataType of ftstring:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' varchar('+inttostr(fm_main.DBGrid.Fields[i].DataSize)+'),'; ftInteger:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' int('+inttostr(fm_main.DBGrid.Fields[i].DataSize)+'),'; ftfloat:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' float('+inttostr(fm_main.DBGrid.Fields[i].DataSize)+'),'; ftMemo:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' text'+','; ftDateTime:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' datetime'+','; ftCurrency:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' money('+','; ftblob:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' image'+','; else tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' varchar('+inttostr(fm_main.DBGrid.Fields[i].DataSize)+'),'; end; // tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' varchar(50)'+','; end; sql1:='create table '+fm_main.TreeView1.Selected.Text+'('+copy(tablename,1,length(tablename)-1)+')'; sql2:='drop table '+fm_main.TreeView1.Selected.Text; sql3:='select * from '+fm_main.TreeView1.Selected.Text;{ if fm_bf.exesql(sql3,0) then begin fm_bf.exesql(sql2,1); fm_bf.exesql(sql1,1); end else } fm_bf.exesql(sql1,1);{ sql1:='select * from '+fm_main.TreeView1.Selected.Text; fm_bf.ado_zj.Close; fm_bf.ado_zj.SQL.Clear; fm_bf.ado_zj.SQL.Text:=sql1; fm_bf.ado_zj.Open; fm_main.executesql(sql1,1); fm_bf.ado_bf.Close; fm_bf.ado_bf.SQL.Clear; sql1:='select * into '+fm_main.TreeView1.Selected.Text+' from '; sql1:=sql1+' OPENROWSET(''SQLOLEDB'''+','; sql1:=sql1+'''coolfilm'';'; sql1:=sql1+'''sa'';''781213'','; sql1:=sql1+'''SELECT * FROM cz.dbo.ybbm'')'; sql2:='select * into '+fm_main.TreeView1.Selected.Text+' from vvv'; fm_bf.ado_bf.SQL.Text:=sql1; sql1:='insert into '+fm_main.TreeView1.Selected.Text+' select * from '; sql1:=sql1+' OPENROWSET(''SQLOLEDB'''+','; sql1:=sql1+'''coolfilm'';'; sql1:=sql1+'''sa'';''781213'','; sql1:=sql1+'''SELECT * FROM cz.dbo.ybbm'')'; fm_bf.ado_bf.SQL.Text:=sql1; fm_bf.ado_bf.ExecSQL; } //fm_bf.adocn.Connected:=false; sql4:='insert into OPENROWSET(''Microsoft.Jet.OLEDB.4.0'''+','''+dbname+''';''admin'''+';'''''+','+fm_main.TreeView1.Selected.Text+') ' +'select * from '+fm_main.TreeView1.Selected.Text; fm_main.executesql(sql4,1);end; 你这一段里也没有ALTER语句呀?而且我用alter DB set a = b,老显示不正确的SQL语句,why? alter table tablename set a=b 你在试一试 不行啊,老显示alter语法错误,555555555555我只是想用adoquery控件修改ACCESS里的字段名呀,字段名是用户建的,也得能删除,能修改呀,现在修改不会,建了字段就改不了名,这样不行啊。 ADOCommand1.CommandText :='ALTER TABLE 表名 DROP 字段名'; ADOCommand1.Execute;ADOCommand1.CommandText :='ALTER TABLE 表名 ADD 字段名';ADOCommand1.Execute; 如何将MDI子窗体放进父窗体的Panel中 多表关联SQL语句问题!在线等 怎样才能做到像某些播放器那样,列表里的文件可以上下移动,拖动 请教数组写入文件的方法。 socket 传文件的问题 不知道文件的大小,如何判断文件传完了 有需要兼职的朋友可以进来看看(广州) 关于inputbox的一个小问题 求多层实例 最好有回调功能!(小5进来再讲讲明白) 圣诞大礼,快来拿!几千分怎么也花不了! 请问各位高手,我如何做到让硬盘的文件防止删除,当在删除文件的时候,我的程序发出警告!! 如何比较两个字符串数组是否相等? 如何在Delphi调用画好的fastReport报表
procedure dbgridtoacess;
var
dbname,tablename:string;
opendlg: Topendialog;
sql1,sql2,sql3,sql4:string;
i:integer;
begin
opendlg:=Topendialog.Create(nil);
opendlg.InitialDir:=extractfilepath(application.ExeName);
opendlg.Title:='请选择输出的Acess数据库名:';
opendlg.Execute;
if (opendlg.FileName<>'') and (ExtractFileExt(opendlg.FileName)='.mdb') then dbname:=trim(opendlg.FileName)
else exit;
opendlg.Free;
fm_bf.adocn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+dbname+';Persist Security Info=False';
fm_bf.adocn.LoginPrompt:=false;
fm_bf.adocn.Connected:=true;
for i:=0 to fm_main.DBGrid.FieldCount-1 do
begin
case fm_main.DBGrid.Fields[i].DataType of
ftstring:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' varchar('+inttostr(fm_main.DBGrid.Fields[i].DataSize)+'),';
ftInteger:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' int('+inttostr(fm_main.DBGrid.Fields[i].DataSize)+'),';
ftfloat:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' float('+inttostr(fm_main.DBGrid.Fields[i].DataSize)+'),';
ftMemo:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' text'+',';
ftDateTime:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' datetime'+',';
ftCurrency:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' money('+',';
ftblob:tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' image'+',';
else
tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' varchar('+inttostr(fm_main.DBGrid.Fields[i].DataSize)+'),';
end;
// tablename:=tablename+fm_main.DBGrid.DataSource.DataSet.Fields[i].FieldName+' varchar(50)'+',';
end;
sql1:='create table '+fm_main.TreeView1.Selected.Text+'('+copy(tablename,1,length(tablename)-1)+')';
sql2:='drop table '+fm_main.TreeView1.Selected.Text;
sql3:='select * from '+fm_main.TreeView1.Selected.Text;
{ if fm_bf.exesql(sql3,0) then
begin
fm_bf.exesql(sql2,1);
fm_bf.exesql(sql1,1);
end
else }
fm_bf.exesql(sql1,1);
{ sql1:='select * from '+fm_main.TreeView1.Selected.Text;
fm_bf.ado_zj.Close;
fm_bf.ado_zj.SQL.Clear;
fm_bf.ado_zj.SQL.Text:=sql1;
fm_bf.ado_zj.Open;
fm_main.executesql(sql1,1);
fm_bf.ado_bf.Close;
fm_bf.ado_bf.SQL.Clear;
sql1:='select * into '+fm_main.TreeView1.Selected.Text+' from ';
sql1:=sql1+' OPENROWSET(''SQLOLEDB'''+',';
sql1:=sql1+'''coolfilm'';';
sql1:=sql1+'''sa'';''781213'',';
sql1:=sql1+'''SELECT * FROM cz.dbo.ybbm'')';
sql2:='select * into '+fm_main.TreeView1.Selected.Text+' from vvv';
fm_bf.ado_bf.SQL.Text:=sql1;
sql1:='insert into '+fm_main.TreeView1.Selected.Text+' select * from ';
sql1:=sql1+' OPENROWSET(''SQLOLEDB'''+',';
sql1:=sql1+'''coolfilm'';';
sql1:=sql1+'''sa'';''781213'',';
sql1:=sql1+'''SELECT * FROM cz.dbo.ybbm'')';
fm_bf.ado_bf.SQL.Text:=sql1;
fm_bf.ado_bf.ExecSQL; }
//fm_bf.adocn.Connected:=false;
sql4:='insert into OPENROWSET(''Microsoft.Jet.OLEDB.4.0'''+','''+dbname+''';''admin'''+';'''''+','+fm_main.TreeView1.Selected.Text+') '
+'select * from '+fm_main.TreeView1.Selected.Text;
fm_main.executesql(sql4,1);
end;
而且我用alter DB set a = b,老显示不正确的SQL语句,why?
你在试一试
我只是想用adoquery控件修改ACCESS里的字段名呀,字段名是用户建的,也得能删除,能修改呀,现在修改不会,建了字段就改不了名,这样不行啊。
ADOCommand1.CommandText :='ALTER TABLE 表名 ADD 字段名';
ADOCommand1.Execute;