Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Создание таблиц


Автор: Марк 28.9.2004, 20:22
Здраствуйте!
Помогите пожалуйста. Подскажите как можно из Delphi либо создать таблицу, либо добавить в существующие поля?
Заранее спасибо!
Марк

Автор: Alex 28.9.2004, 20:31
Что используешь для работы с базой данных?

Автор: Pakshin A. S. 28.9.2004, 20:34
Пизаем SQL-запрос в компонент типа TQuery
1) Создание таблицы:
Код

CREATE TABLE <Имя таблицы>
(<Имя поля> <Тип данных>,
...
<Имя поля> <Тип данных>);

2) Добавление
Код

INSERT INTO <Имя таблицы>
(<Список полей>)
VALUES (<Список значений>);


Автор: Pakshin A. S. 28.9.2004, 20:46
Вот ещё:
1) типы полей
SMALLINT
INTEGER
DECIMAL(X,Y)
NUMERIC(X,Y)
FLOAT(X,Y)
VERCHAR(N)
CHARACTER(N)
DATE
BOOLEAN
BLOB(N,1)
BLOB(N,2)
BLOB(N,3)
BLOB(N,4)
BLOB(N,5)
TIME
TIMESTAMP
MONEY
AUTOINC
BYTES(N)

Подробно о типах можно почитать в Help'e Access'a

Пример:
CREATER TABLE NewTable
(Number integer,
Name Char(2),
BirthDay Date);

2) Insert
INSERT INTO NewTable
(Number, Name, BirthDay)
VALUES (1,'asdf', 11.11.1111);

Добавление через Table
Код

with Table1 do
begin
 Append;
 FieldByName('Number').AsInteger:=1;
 FieldByName('Name').AsString:='asdf';
 FieldByName('BirthDay').AsDateTime:=Now;
 Post
end;


А вообще на форуме это всё есть: немного поискать надо и всё...
Добавлено @ 20:52
http://forum.vingrad.ru/index.php?showtopic=5638

и

http://forum.vingrad.ru/index.php?showtopic=5724

Полезная инфа прямо под носом!!!

Автор: Medved 28.9.2004, 23:38
Кнокретная реализация завист от того драйвера, который вы используете для доступа к БД.

Автор: falcon39 22.10.2004, 22:18
Если можете то и мне помогите!!!
Delphi 5 MSSQL..
Хочу создать таблицу а мне выдается ошибка (Поставщик не может выполнит операцию)
Компонент ADOQuery.

Автор: Vit 22.10.2004, 23:27
Цитата(falcon39 @ 22.10.2004, 13:18)
Хочу создать таблицу а мне выдается ошибка (Поставщик не может выполнит операцию)


Код в студию!

Автор: Akella 23.10.2004, 08:59
Код
   tNew.FieldDefs.Clear;
   tNew.IndexDefs.Clear;
   tNew.TableName:='Apteka.db';
   tNew.TableType:=ttDefault;
   tNew.FieldDefs.Add('AID',ftAutoInc);
   tNew.FieldDefs.Add('AName',ftString,20,False);
   tNew.FieldDefs.Add('AAddres',ftString,40,False);
   tNew.FieldDefs.Add('ATel',ftString,40,False);
   tNew.FieldDefs.Add('AMAIL',ftString,30,False);
   tNew.FieldDefs.Add('AFA',ftString,10,False);
   tNew.IndexDefs.Add('','AID',[ixPrimary]);
   tNew.IndexDefs.Add('idxAName','AName',[ixCaseInsensitive]);
   tNew.IndexDefs.Add('idxAAddres','AAddres',[ixCaseInsensitive]);
   tNew.IndexDefs.Add('idxATel','ATel',[ixCaseInsensitive]);
   tNew.IndexDefs.Add('idxAMail','AMail',[ixCaseInsensitive]);
   tNew.IndexDefs.Add('idxAFA','AFA',[ixCaseInsensitive]);
   tNew.CreateTable;

Автор: Vit 24.10.2004, 07:27
Используй SQL! Pakshin тебе дал правильный ответ.

Автор: Гость_falcon39 24.10.2004, 11:23
В своей ошибке разобрался. Теперь другая проблема. При создании таблицы выдается ошибка "ADOQuery1: CommandText does not return a result set" При этом таблица создается как избавиться от этой ошибки. Поставил try.....except сообщение об ощибке не показывается но она все равно существует. Межет есть другой способ от нее избавиться.

Автор: Pakshin A. S. 24.10.2004, 12:44
как я понял, вы используете Query1.Open а при выполнении запроса на создание таблицы надо использовать Query1.ExecSQL...
Вот и всё! :D

Автор: Гость_Алексей 10.3.2005, 16:22
Создаем базу


if not Session.IsAlias('BDBP') then
begin
CreateDirectory('C:\Program Files\BDBP', nil);
try
Session.AddStandardAlias('BDBP','C:\Program Files\BDBP','PARADOX');
Session.SaveConfigFile;
except
MessageDlg('Ошибка в создании базы', mtError, [mbOk], 0);
exit;
end;
end;
end;

Создаем таблицу


begin
if InputQuery('Создать','Введите имя файла', NameFile) then
if not FileExists('C:\Program Files\BDBP\'+NameFile+'.db') then
begin
Screen.Cursor:=crHourGlass;
Table:=TTable.Create(Self);
try
Table.DatabaseName:='BDBP';
Table.TableName:=NameFile+'.db';
Table.FieldDefs.Add('Date', ftDate,0,True);
Table.FieldDefs.Add('Vznos', ftCurrency,0,True);
Table.FieldDefs.Add('Kreditor', ftString,50,True);
Table.FieldDefs.Add('Procent', ftFloat,0,True);
Table.CreateTable;
except
MessageDlg('Ошибка в создании файла', mtError, [mbOk], 0);
Screen.Cursor:=crDefault;
Table.Free;
Exit;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)