Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание таблицы в Access, Помогите!! 
:(
    Опции темы
Данкинг
Дата 26.11.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(neweraser @  26.11.2009,  23:39 Найти цитируемый пост)
или постоянно прописывать

Или так, или же добавлять поля через ALTER TABLE...


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



в общем разобрался, а как это через ALTER TABLE? 
истина где-то рядом  smile 


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Teleport
Дата 26.11.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



нну да это решение. Можно ADD ставить. 
А можно просто как обычную строку соединять явно:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 ADOQ1.Active:= false;
 ADOQ1.SQL.Clear;
 ADOQ1.SQL.Add('CREATE TABLE'+
 ' my_table (id int NOT NULL PRIMARY KEY,'+
 ' my_discription MEMO NULL);');
 ADOQ1.ExecSQL;
end;


Только в этом случае надо следить за пробелами при соединении строк - в данном примере критичен пробел перед my_table. Если пробела не будет, то слипнуться слова TABLEmy_table  - запрос не выполнится - выдаст ошибку.

А когда много раз ADD - вроде без пробела прокатывает. Я так понимаю - это символ переноса строки добавляется.

Код

 ADOQ1.Active:= false;
 ADOQ1.SQL.Clear;
 ADOQ1.SQL.Add('CREATE TABLE');
 ADOQ1.SQL.Add('my_table (id int NOT NULL PRIMARY KEY,');
 ADOQ1.SQL.Add('my_discription MEMO NULL);');
 ADOQ1.ExecSQL; 


Как удобней - решай сам  smile 


Это сообщение отредактировал(а) Teleport - 26.11.2009, 23:56


--------------------
user posted image
user posted image 
PM MAIL   Вверх
Данкинг
Дата 27.11.2009, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Код

alter table BASE add column POLE1 char(6)

 smile 


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


Опытный
**


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

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



2 neweraser - вот очень в тему и очень доступно написано:
Краткое пособие по SQL
Основные команды, в том числе и ALTER TABLE. Думаю будет понятно. 
Про Alter Table:
"В уже существующей таблице мы можем поменять тип столбца, добавить новый, уничтожить старый."

Это сообщение отредактировал(а) Teleport - 27.11.2009, 00:04


--------------------
user posted image
user posted image 
PM MAIL   Вверх
neweraser
Дата 27.11.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



Код

With ADOQuery.SQL do
  begin
    Add('CREATE TABLE example');
    Add('ALTER TABLE base.mdb add column Field1 Integer');
    Add('ALTER TABLE base.mdb add column Field2 char(6));
    ...
    ...
    ...
  end;

а вот так можно? smile

Добавлено через 23 секунды
только все равно ошибку синтаксиса выдает


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 27.11.2009, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(neweraser @  27.11.2009,  00:15 Найти цитируемый пост)
CREATE TABLE example

Таблица без полей быть не может. Т.е. при создании надо добавить хотя бы одно поле:
Код

query.Close;
query.SQL.Clear;
query.SQL.Add('create table example(pole1 char (100), pole2 char (20), pole3 numeric)');
query.ExecSQL;


Цитата(neweraser @  27.11.2009,  00:15 Найти цитируемый пост)
ALTER TABLE base.mdb add column Field1 Integer

 smile Ты не можешь добавить поле к базе данных (base.mdb); поле можно добавить только к таблице. smile 

Код

query.Close;
query.SQL.Clear;
query.SQL.Add('alter table example add column pole4 char (100) ');
query.ExecSQL;





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


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



не, все. разобрался!
Код

With ADOQuery.SQL do
  begin
    Add('CREATE TABLE example');
    Add('(1 INTEGER,');
    Add('2 INTEGER,');
    Add('3 INTEGER,');
    Add('4 INTEGER,');
    Add('5 INTEGER);');
  end;

Всем спасибо!!  smile 


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Teleport
Дата 27.11.2009, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2 neweraser - подключение к бд ACCESS, в данном случае, выпоняется компонентом ADOConnection. 
Код

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data ' +
 'Source=my_db.mdb;Persist Security Info=False';


Потом говоришь ADOQuery, чтобы он посмотрел в ADOConnection - к какой бд запрос посылать:
Код

ADOQ1.Connection:= ADOConnection1;


А при работе с таблицами теперь не надо компоненту ADOQuery указывать бд. Только имена таблиц и команды запроса. 

Цитата

Код

    Add('CREATE TABLE example');
    Add('(1 INTEGER,');
    Add('2 INTEGER,');
    Add('3 INTEGER,');
    Add('4 INTEGER,');
    Add('5 INTEGER);');



а если поля так вот и попрядку идут - тут цикл можно организовать...


Это сообщение отредактировал(а) Teleport - 27.11.2009, 00:54


--------------------
user posted image
user posted image 
PM MAIL   Вверх
Grig
Дата 27.11.2009, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



археологам салют! я аж помолодел прям вместе с вами =)))


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

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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