Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.009 c
1-20624
Yanis
2003-07-25 00:48
2003.08.07
Key


1-20509
aa5E1
2003-07-24 11:24
2003.08.07
Dll и картинки


14-20741
vidiv
2003-07-20 10:46
2003.08.07
На какие браузеры надо ориентироваться.


1-20560
Александр_ИСТ
2003-07-22 19:21
2003.08.07
Как отследить завершение запущенной мной досовской проги?


14-20732
Pat
2003-07-18 18:32
2003.08.07
Достучаться до string





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский