Форум: "Базы";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
ВнизСоздать базу и таблицу в ней. Найти похожие ветки
← →
RomanRom2 (2003-07-15 15:30) [0]подскажите, как создать таблицу с полем типа boolean???
базу создаю так:
function CreateDBAccess(strDB: String): boolean;
begin
// создаем базу
Result := False;
AConn_ := TADOConnection.Create(nil);
AComm_ := TADOCommand.Create(nil);
if not FileExists(strDB+".mdb") then
begin
try
try
DBEngine := CreateOleObject("DAO.DBEngine.36");
except
try {For DAO 3.5}
DBEngine := CreateOleObject("DAO.DBEngine.35");
except
raise;
end;
end;
Workspace := DBEngine.Workspaces[0];
try
Workspace.CreateDatabase(strDB+".mdb", dbLangGeneral, dbVersion30);
except
end;
except
end
end
end;
таблицу создаю так:
function CreateTablesAccess(strDB: String): boolean;
begin
//создаем таблицы для данных о пользователях
AComm_.Connection := AConn_;
AConn_.ConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+strDB+".mdb;Persist Security Info=False";
AConn_.Provider := "Microsoft.Jet.OLEDB.4.0";
AConn_.LoginPrompt := False;
AConn_.Mode := cmShareDenyNone;
AConn_.Connected := True;
with AComm_ do
begin
try
TableAccount :="CREATE TABLE account("+
"[accnum]String (20),"+
"[expdate]String (50),"+
"[acctype]String (5),"+
"[bank_id]Integer,"+
"[client_id]String (20),"+
"[acc_id]Integer,"+
"[description]String (100),"+
"[balance]Boolean,"+
"[report]Boolean,"+
"[status]Integer,"+
"[cvv]String (4),"+
"[tarif]Integer,"+
")";
try
CommandText := TablePersAcc;
Execute;
except
end;
except
end;
end;
AConn_.Connected := False;
Aconn_.Free; Acomm_.Free;
end;
при создании этой таблицы с полями balance и report типа boolean вылетает ексцепшн "ошибка систаксиса при определении поля".
таблицы без поля boolean создаются нормально.
че делать то???
и еще, база создается в формате Access 95, как сделать что бы создавалась в формате Access 2002?
← →
sniknik (2003-07-15 15:44) [1]в Access boolean = BIT синонимы BOOLEAN, LOGICAL, LOGICAL1, YESNO
> формате Access 95,
> Workspace.CreateDatabase(strDB+".mdb", dbLangGeneral, dbVersion30);
попробуй другие dbVersion40(97)/50(2000/2002) (посмотри как в константах записано, не найдеш просто ставь цифру 5)
← →
RomanRom2 (2003-07-15 16:07) [2]перепробовал все варианты: boolean, logical, logical1, yesno, bool - результат один и тот же - ошибка систаксиса при определении поля.
может быть это из-за того, что база версии Access 95? может там не было таких типов?
по поводу dbVersion; я не совсем понял, как будет влиять название переменной - толи dbVersion30 (как у меня написано было), толи dbVersion40 (как ты написал), поэтому я просто в процедуру число писал. итак:
2000, 2002: Access 2.0
97: exception "не удается открыть базу данных, созданную в предыдущей версии приложения"
50: exception "ошибочный аругмент"
5: Access 1.0
32: (это как у меня) Access 95
22: Access 2.0
36: Access 95
констант dbVersionXX моя дельфя, во всех опциях установленная по умолчанию, не видит :(
← →
RomanRom2 (2003-07-15 16:20) [3]все, разобрался. ошибка была вот в этой запятой:
"[cvv]String (4),"+
"[tarif]Integer , "+
")";
try
← →
sniknik (2003-07-15 16:28) [4]> перепробовал все варианты: boolean, logical, logical1, yesno, bool - результат один и тот же - ошибка систаксиса при определении поля.
это же синонимы! главное BIT.
> по поводу dbVersion; я не совсем понял, как будет влиять название переменной - толи dbVersion30
....
должно быть или dbVersion40 или dbVersion50 (или без нуля или другое (10/11), не помню и смотреть не хочется)
делай так, гораздо проще
function TDMod.CreateMDBBase(BaseName: string): boolean;
var AdoEngine: Variant;
begin
try
AdoEngine:= CreateOleObject("ADOX.Catalog");
AdoEngine.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+BaseName+";Jet OLEDB:Engine Type= 5;");
AdoEngine.ActiveConnection.Close;
AdoEngine:= Null;
result:= true;
except
on E: Exception do DoIfError(E.Message);
end;
end;
← →
RomanRom2 (2003-07-15 16:53) [5]хммм... если создавать базу таким образом, почему-то не создаются таблицы моим способом, вылетает с access violation...
но база создается Access 2000 :)
может есть че по проще, как создавать таблицы? :)
← →
sniknik (2003-07-15 17:02) [6]> может есть че по проще, как создавать таблицы? :)
проще sql-евского create table не бывает
поменяй в запросе все синонимы на родные
осталось одно (если bit уже поставил)
String = CHAR
и зарезервированные слова типа account в кавычках ставь [].
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c