请问如何在程序中动态创建Access表?DataBase控件为Db,要求在该数据库内动态创建表,且表要添加“Name”(文本类型)和“Branch”(数字类型)两个字段,还要规定两个字段的宽度,代码如何写?除了用Sql语句外,还有无别的方法?请给出详细代码,谢谢。
解决方案 »
- 有偿求助 Delphi+TopApi Demo
- 一个关于delphi下access的问题
- 我想做一个拖放程序,从ListView到ShellListView(Sample页),在哪个事件中怎么获取(如何返回)目的文件夹的名称?
- 这段程序在向xml文件中插入39条后,系统就插入不进去,怎么办????
- gardenyang:给分贴1
- 100分
- 异构数据库互导数据
- 网络蚂蚁--会话命令--全过程监控--详录(dyydyy友情提供)
- 怎么向另一个应用程序发点击鼠标的消息
- 关于在线更新的问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 如何动态给dbgrid的column的width附值?
- 那位兄弟推荐一个录制软件演示的软件吧,谢谢
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ComObj;type
TSQLConfigDataSource = function( hwndParent: HWND;
fRequest: WORD;
lpszDriver: LPCSTR;
lpszAttributes: LPCSTR ) : BOOL; stdcall;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
CreateAccess:OleVariant;
pFn: TSQLConfigDataSource;
hLib: LongWord;
strDriver, strAttr: string;
fResult: BOOL;
begin
try
CreateAccess:=CreateOleObject('ADOX.Catalog');
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\new.mdb');
hLib := LoadLibrary( 'ODBCCP32' ); // load from default path
if( hLib <> NULL ) then begin
@pFn := GetProcAddress( hLib, 'SQLConfigDataSource' );
if( @pFn <> nil ) then begin
// force (re-)create DSN
strDriver := 'Microsoft Access Driver (*.mdb)';
strAttr := Format( 'DSN=newdb'+#0+
'DBQ=%s'+#0,
['c:\new.mdb'] );
fResult := pFn( 0, 4, @strDriver[1], @strAttr[1] );
end;
end;
except
raise Exception.Create('create db failed');
end;
try
dbAccess.LoginPrompt := False;
dbAccess.DatabaseName := 'newdb';
dbAccess.Connected := True;
qryMain.DatabaseName := dbAccess.DatabaseName;
with qryMain,SQL do begin
Close;
Clear;
Add(' create table TMP_REQ_FORM_DATA (Name varchar(1) primary key,');
Add('Branch number(4) not null)');
ExecSQL;
end;
except
on e: Exception do begin
raise Exception.Create(e.Message);
end;
end;
end;end.