Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка при создании БД 
:(
    Опции темы
Skodina
Дата 23.1.2010, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 29.5.2009
Где: Москва

Репутация: нет
Всего: нет



хотела создать базу данных, писала по книге. листинг выглядит так: 
procedure TForm2.Button1Click(Sender: TObject);
var
 Table:_Table;
 Column: _Column;
begin
 // Создание бд
 Catalog := CoCatalog.Create;

 if FileExists('db.mdb') then
  DeleteFile('db.mdb');

 Catalog.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb');
 Catalog.Set_ActiveConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb');

 // Создание таблицы
 Table := CoTable.Create;
 Table.Name      := 'Ìîè äðóçüÿ';
 Table.ParentCatalog := Catalog;

 // Создать ключевое поле
 Column := CoColumn.Create;
 with Column do
  begin
   ParentCatalog := Catalog;
   Name    := 'Key1';
   Type_   := adInteger;
   Properties['Autoincrement'].Value := True;
   Properties['Description'].Value    := 'Ключевое поле';
  end;

 // Добавить поле к таблице
 Table.Columns.Append(Column, 0, 0);
 Column := Nil;

 // Создаем еще несколько полей
 with Table.Columns do
  begin
   Append('Фамилия', adVarWChar, 50);
   Append('Имя', adVarWChar,    50);
   Append('Телефон, adVarWChar, 15);
   Append('Адрес', adVarWChar, 255);
   Append('Возраст', adInteger, 100 );
  end;

 // Добавить таблицу к бд
 Catalog.Tables.Append(Table);
end;

перед этим делала расширение ADO по книге

Вопрос почему выдает следующую ошибку: [Error] dclusr.dpk(38): Package 'dclusr70' already contains unit 'ADOX_TLB'   smile 
PM MAIL   Вверх
Данкинг
Дата 23.1.2010, 22:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Skodina @  23.1.2010,  22:09 Найти цитируемый пост)
перед этим делала расширение ADO по книге

Что делала? smile 

Цитата(Skodina @  23.1.2010,  22:09 Найти цитируемый пост)
Package 'dclusr70' already contains unit 'ADOX_TLB'

 smile На какой строке данного кода может вылезти такая ошибка? smile 

А вообще создание БД Access несколько проще делается. smile 
Код

function CreateAccessDatabase(FileName: string): string;
var 
 cat: OLEVariant; 
begin 
 result := ''; 
 try 
   cat := CreateOleObject('ADOX.Catalog');
   cat.create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Filename + ';');
   cat := NULL; 
 except 
   on e: Exception do 
     result := e.message; 
 end; 
end;


Поля же в неё добавляются обычными запросами через AdoQuery. smile 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Skodina
Дата 23.1.2010, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 29.5.2009
Где: Москва

Репутация: нет
Всего: нет



я наверное что-то не то делаю, но теперь вот такие ошибки
[Error] Unit1.pas(31): Undeclared identifier: 'CreateOleObject'
[Error] Unit1.pas(43): Not enough actual parameters 
smile 
PM MAIL   Вверх
Данкинг
Дата 23.1.2010, 23:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Skodina @  23.1.2010,  23:27 Найти цитируемый пост)
Undeclared identifier: 'CreateOleObject'

Код

uses comobj;


Цитата(Skodina @  23.1.2010,  23:27 Найти цитируемый пост)
Not enough actual parameters 

А это на какой строке? Вообще эта функция 100% рабочая.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Skodina
Дата 24.1.2010, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 29.5.2009
Где: Москва

Репутация: нет
Всего: нет



Цитата(Данкинг @  23.1.2010,  23:36 Найти цитируемый пост)
uses comobj;

спасибо большое, разобралась, теперь буду думать как программно заполнять эту бд smile

PM MAIL   Вверх
Данкинг
Дата 24.1.2010, 00:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Skodina @  24.1.2010,  00:04 Найти цитируемый пост)
как программно заполнять эту бд

Или SQL-запросом с помощью AdoQuery, или же в цикле (что медленнее, но иногда удобнее):
Код

AdoTable.First;
for j:=1 to 10 do
 begin
  AdoTable.Append;
  AdoTable.FieldByValues['pole1']:='бугага'+inttostr(j);
  AdoTable.Post;
  AdoTable.Next;
 end;


Это сообщение отредактировал(а) Данкинг - 24.1.2010, 00:36


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
chip_and_dayl
Дата 24.1.2010, 11:15 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата

AdoTable.First;
for j:=1 to 10 do begin  
AdoTable.Append;  
AdoTable.FieldByValues['pole1']:='бугага'+inttostr(j);
  AdoTable.Post; 
 AdoTable.Next; 
end


Ой-ой, ночью код вредно писатьsmile
Начнем с того, что Делфи не знает, что такое .FieldByValues, а я не знаю, зачем здесь нужен Ферст и Некстsmile
Вот, должно заработать 
Код

for j:=1 to 10 do
 begin
  AdoTable1.Append;
  AdoTable1.FieldByName('pole1').AsString:='бугагагага'+inttostr(j);
  AdoTable1.Post;
 end;


Добавлено через 2 минуты и 39 секунд
Ну, и самое главное забыли сказать, чтобы перед этой операцией присвоить AdoTable строку соединения и имя таблицы 

Это сообщение отредактировал(а) chip_and_dayl - 24.1.2010, 11:17


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Данкинг
Дата 24.1.2010, 11:19 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(chip_and_dayl @  24.1.2010,  11:15 Найти цитируемый пост)
FieldByValues,

 smile Я сначала написал "FieldByName", но затем хотел исправить на FieldValues. smile 

Цитата(chip_and_dayl @  24.1.2010,  11:15 Найти цитируемый пост)
а я не знаю, зачем здесь нужен Ферст и Некстsmile

Да, и то верно. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Skodina
Дата 24.1.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 29.5.2009
Где: Москва

Репутация: нет
Всего: нет



попыталась сделать сама что-то
вот код
Цитата

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateAccessDatabase('bd1.mdb');
    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=bd1.mdb; Persist Security Info=False' ;
    try
       ADOConnection1.Connected:=true;
       ADOQuery1.Connection:=ADOConnection1;
       ShowMessage('uspeshnoe podkluchenie k bd');
    except

       ShowMessage('oshibka podklucheniya k bd'); 
    end;
    ADOQuery1.Active:=false;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('CREATE TABLE predpriyatiya (kod NUMBERIC(10), predpr CHAR(5), adress CHAR(100), telefon CHAR(15))');
    ADOQuery1.ExecSQL;

end;


при нажатии на кнопку программа вываливается и выдает такую ошибку
Цитата

Project Project1.exe raised exception class EOleException with message 'Ошибка синаксиса при определении поля'. 


что не так я сделала?



Это сообщение отредактировал(а) Skodina - 24.1.2010, 17:46
PM MAIL   Вверх
Данкинг
Дата 24.1.2010, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Skodina, проект в студию.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Skodina
Дата 24.1.2010, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 29.5.2009
Где: Москва

Репутация: нет
Всего: нет



Цитата(Данкинг @ 24.1.2010,  17:44)
Skodina, проект в студию.

что именно нужно прислать? 
и еще вопрос есть ли разница писать название таблицы и ее столбцов по русски или по английски например тут ADOQuery1.SQL.Add('CREATE TABLE predpriyatiya (kod NUMBERIC(10), predpr CHAR(5), adress CHAR(100), telefon CHAR(15))');
PM MAIL   Вверх
Данкинг
Дата 24.1.2010, 19:27 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Skodina @  24.1.2010,  18:27 Найти цитируемый пост)
что именно нужно прислать? 

Проект целиком. smile Впрочем:

Цитата(Skodina @  24.1.2010,  18:27 Найти цитируемый пост)
NUMBERIC

Он всё же numeric, а не numberic. smile 

Цитата(Skodina @  24.1.2010,  18:27 Найти цитируемый пост)
по русски или по английски 

Можешь хоть по-грузински писать, но лично я считаю, что называть столбы кириллицей - дурной тон. И многие со мной согласны. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
chip_and_dayl
Дата 24.1.2010, 19:39 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата(Данкинг @  24.1.2010,  19:27 Найти цитируемый пост)
Он всё же numeric, а не numberic.  

Млин, обогнал :)


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Skodina
Дата 25.1.2010, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 29.5.2009
Где: Москва

Репутация: нет
Всего: нет



спасибо большое, вы мне очень помогли, дальше постараюсь сама smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1178 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.