Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как создать таблицу программно? [D6, MySQL, dBase, FoxPro]


janb ©   (2004-12-06 08:28:00) 

Уважаемые мастера ответь пожалуйста на вопрос.
У меня на форме компоненты Table, adotable1, adoconnection
table1 подключен к таблице sak.dbf, adoquery на mysql базу
Собственно вопрос: Как создать на mysql базе такую же таблицу как sak.dbf (т.е. с такой же структурой).
Заранее благодарен.


janb   (2004-12-07 07:38:00) [1]

Спасибо океан


ocean   (2004-12-06 12:23:00) [2]

все же не пойму, в чем проблема

Var S, Field1Name, Field1Type : String;
   Field1Length : Integer;

S := 'create table Test (';
S := S + Field1Name + ' ' + Field1Type + '(' + IntToStr(Field1Length) + ')'; // + ... и т.д.

QUERY1.SQL.Add(S);


janb   (2004-12-06 12:13:00) [3]

Я сейчас нашел в форумах что прога Datapump, делает это я попробовал все получилось. А по какому принципу работает эта прога


msguns   (2004-12-06 12:02:00) [4]

CREATE TABLE..

Изучаем SQL-синтаксис


janb   (2004-12-06 11:58:00) [5]


> msguns ©   (06.12.04 11:49) [9]

И как этот DDL запрос выглядить?:)


msguns   (2004-12-06 11:49:00) [6]

1. Открывается НД с исходной таблицей.
2. Перебираем коллекций TFieldDefs и TIndexDefs и на основе полученных данных строим DDL запрос.
3. Запускаем запрос.
4. Получаем пустую таблицу со структурой, аналогичной исходной.


Александр Иванов   (2004-12-06 11:40:00) [7]

Про другие компоненты не слышал, поищи.


janb   (2004-12-06 11:37:00) [8]

mne nujno shto bi SQL.Text генерировался автоматически
я же заранее не знаю структуру


ocean   (2004-12-06 11:27:00) [9]

кто мешает каждый раз строить нужную строку запроса create table?


janb   (2004-12-06 11:22:00) [10]


> Александр Иванов ©   (06.12.04 09:30) [3]
> Он работает к сожалению только с BDE. И копирует данные
> из одного набора данных (Sourse), в другой (Destination),
> также может создать таблицу-приемник.

А нету такого рода компонент в других библиотеках?


> ocean   (06.12.04 10:16) [4]

Я хотел бы использовать программу для несколких таблиц, т.е. структура таблицы может заранее неизвестно


ocean   (2004-12-06 10:16:00) [11]

Не знаю как c MySQL, но вот фрагмент рабочей программы. Используется SQL-запрос create table. Вместо этого можно исп. метод DataSource.CreateTable, в Help есть хороший пример.
Не забывайте также про create index.

//Create DB
   OldSQL := SQL.Text;
   SQL.Text := 'create table telegrs (ID int, KZU varchar(50), III varchar(6), TitleNum int, Category varchar(30), VisaType varchar(40),' + 'Reccurence varchar(30), Purpose varchar(40), Organization varchar(100), Route varchar(200), DateEntry1 datetime, DateEntry2 datetime, DateDeparture1 datetime, DateDeparture2 datetime,' + 'PrefixLat varchar(10), PrefixRus varchar(10), FNameLat varchar(30), FNameRus varchar(30), SNameLat varchar(60), SNameRus varchar(60), Sex varchar(1), DateBirth varchar(8),' + 'Passport varchar(20), Citizen varchar(30), NumInvit varchar(10), NumVBlank varchar(10), DateIssue datetime, Transport varchar(150), NumTlg varchar(10), DateTlg datetime,' + 'Voucher varchar(30), Days int, Child varchar(60), Pers_note varchar(60), Group_note varchar(60), iField1 int, iField2 int, iField3 int, iField4 int, iField5 int, app varchar(250))'; {}
   S := 'create table telegrs (';
   for I := 1 to MAXFIELDS do if aFields[I] <> '' then
     case aSizes[I] of
       -1: S := S + aFields[I] + ' datetime,';
       0: S := S + aFields[I] + ' int,';
       else S := S + aFields[I] + ' varchar(' + IntToStr(aSizes[I]) + '),';
     end; { case }
   S[Length(S)] := ')';
   SQL.Text := S;
   ExecSQL;
   SQL.Text := OldSQL;
   Active := TRUE;
 end; { with }
end;


Александр Иванов   (2004-12-06 09:30:00) [12]

Он работает к сожалению только с BDE. И копирует данные из одного набора данных (Sourse), в другой (Destination), также может создать таблицу-приемник.


janb   (2004-12-06 09:14:00) [13]

Спасибо за ответ. Но я как то не понял как она работает. Есть описание на анг. Где я ничего не понял. есть exampe  где тоже что -то другое делается
Если можно поподробнее, на русском, и желательно к моему вопросу пожалуйста.


Александр Иванов   (2004-12-06 08:57:00) [14]

TBatchMove


Наверх

Титульная страница Поиск, карта сайта Написать письмо