用OLEDB.4.0,创建ACCESS数据库,但用OLEDB.3.51就会出错,并提示 "不能使用,文件正在使用中 ",请问应该怎样创建ACCESS97的数据库,并同时建表。
下面的程序能同时创建ACCESS2000的数据库和数据表:
procedure TForm5.RzCreateBtnClick(Sender: TObject);
var
AppPath,tablename,x,y,z,str,sqlstr:string;
CreateAccess,NewTable,CUM:Variant;
begin
tablename:=DateTimeToStr(Now);
x:=copy(tablename,17,2);
y:=copy(tablename,20,2);
z:=copy(tablename,23,2);
tablename:='库'+copy(tablename,1,10)+'-'+x+y+z;
AppPath:=ExtractFileDir(Application.ExeName);
CreateAccess:=CreateOleObject('ADOX.Catalog');
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.3.51;Data Source='+AppPath+'\'+tablename+'.mdb');
showmessage('数据库创建成功!');
ADOQuery1.ConnectionString:='';
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source='+AppPath+'\'+Tablename+'.mdb';
ADOQuery1.Close;
tablename:=DateTimeToStr(Now);
x:=copy(tablename,17,2);
y:=copy(tablename,20,2);
z:=copy(tablename,23,2);
tablename:='表'+x+y+z;
sqlstr:='Create Table ';
sqlstr:=sqlstr+tablename+' (ID int NOT NULL,Name varchar(50) NOT NULL,Type varchar(50) NULL,';
sqlstr:=sqlstr+'length int NULL,CFormula text NULL,EFormula text NULL,Bvalue varchar(50) NULL';
sqlstr:=sqlstr+',Nodetype varchar(50) NULL,Parent int NULL,sort int NULL,Visible bit,SB bit,Readonly bit)';
With ADOQuery1 Do
Begin
Close;
SQl.Clear;
SQl.add(sqlstr);
ExecSQL;
End;
end;
---------------------------------------------------------------
uses ComObj;
function CreateDatabase(mDatabaseName: string): Boolean;
var
CreateAccess: OLEVariant;
begin
Result := False;
try
CreateAccess := CreateOleObject('ADOX.Catalog');
try
CreateAccess.Create(Format(
'Provider=Microsoft.Jet.OLEDB.3.51;Data Source=%s%s.mdb',
[ExtractFilePath(Application.ExeName), mDatabaseName]));
finally
CreateAccess := Unassigned;
end;
except
Exit;
end;
Result := True;
end;
function CreateTable(mDatabaseName: string; mADOQuery: TADOQuery): Boolean;
begin
Result := False;
try
mADOQuery.Close;
mADOQuery.ConnectionString := Format(
'Provider=Microsoft.Jet.OLEDB.3.51;Data Source=%s%s.mdb',
[ExtractFilePath(Application.ExeName), mDatabaseName]);
mADOQuery.SQL.Text := 'CREATE TABLE Table1 (Field1 varchar(10), Field2 varchar(10))';
mADOQuery.ExecSQL;
except
Exit;
end;
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DeleteFile(ExtractFilePath(Application.ExeName) + 'test.mdb');
CreateDatabase('test');
CreateTable('test', ADOQuery1);
end; (转录)请收索以前的旧贴
下面的程序能同时创建ACCESS2000的数据库和数据表:
procedure TForm5.RzCreateBtnClick(Sender: TObject);
var
AppPath,tablename,x,y,z,str,sqlstr:string;
CreateAccess,NewTable,CUM:Variant;
begin
tablename:=DateTimeToStr(Now);
x:=copy(tablename,17,2);
y:=copy(tablename,20,2);
z:=copy(tablename,23,2);
tablename:='库'+copy(tablename,1,10)+'-'+x+y+z;
AppPath:=ExtractFileDir(Application.ExeName);
CreateAccess:=CreateOleObject('ADOX.Catalog');
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.3.51;Data Source='+AppPath+'\'+tablename+'.mdb');
showmessage('数据库创建成功!');
ADOQuery1.ConnectionString:='';
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source='+AppPath+'\'+Tablename+'.mdb';
ADOQuery1.Close;
tablename:=DateTimeToStr(Now);
x:=copy(tablename,17,2);
y:=copy(tablename,20,2);
z:=copy(tablename,23,2);
tablename:='表'+x+y+z;
sqlstr:='Create Table ';
sqlstr:=sqlstr+tablename+' (ID int NOT NULL,Name varchar(50) NOT NULL,Type varchar(50) NULL,';
sqlstr:=sqlstr+'length int NULL,CFormula text NULL,EFormula text NULL,Bvalue varchar(50) NULL';
sqlstr:=sqlstr+',Nodetype varchar(50) NULL,Parent int NULL,sort int NULL,Visible bit,SB bit,Readonly bit)';
With ADOQuery1 Do
Begin
Close;
SQl.Clear;
SQl.add(sqlstr);
ExecSQL;
End;
end;
---------------------------------------------------------------
uses ComObj;
function CreateDatabase(mDatabaseName: string): Boolean;
var
CreateAccess: OLEVariant;
begin
Result := False;
try
CreateAccess := CreateOleObject('ADOX.Catalog');
try
CreateAccess.Create(Format(
'Provider=Microsoft.Jet.OLEDB.3.51;Data Source=%s%s.mdb',
[ExtractFilePath(Application.ExeName), mDatabaseName]));
finally
CreateAccess := Unassigned;
end;
except
Exit;
end;
Result := True;
end;
function CreateTable(mDatabaseName: string; mADOQuery: TADOQuery): Boolean;
begin
Result := False;
try
mADOQuery.Close;
mADOQuery.ConnectionString := Format(
'Provider=Microsoft.Jet.OLEDB.3.51;Data Source=%s%s.mdb',
[ExtractFilePath(Application.ExeName), mDatabaseName]);
mADOQuery.SQL.Text := 'CREATE TABLE Table1 (Field1 varchar(10), Field2 varchar(10))';
mADOQuery.ExecSQL;
except
Exit;
end;
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DeleteFile(ExtractFilePath(Application.ExeName) + 'test.mdb');
CreateDatabase('test');
CreateTable('test', ADOQuery1);
end; (转录)请收索以前的旧贴
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货