![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать таблицу программно? [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