Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Вниз

Как создать таблицу программно?   Найти похожие ветки 

 
janb   (2004-12-06 08:28) [0]

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


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

TBatchMove


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

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


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

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


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

Не знаю как 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;


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


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

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


> ocean   (06.12.04 10:16) [4]

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


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

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


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

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


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

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


 
msguns ©   (2004-12-06 11:49) [9]

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


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


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

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


 
msguns ©   (2004-12-06 12:02) [11]

CREATE TABLE..

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


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

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


 
ocean   (2004-12-06 12:23) [13]

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

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

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

QUERY1.SQL.Add(S);


 
janb   (2004-12-07 07:38) [14]

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.063 c
1-1103279056
Дмитрий В. Белькевич
2004-12-17 13:24
2005.01.02
Чем ловить Mem Leak и выход за границы массивов под Delphi 7.0?


1-1103435108
AL5030
2004-12-19 08:45
2005.01.02
Открыть разом несколько файлов в своей проге.


3-1101997033
zunder
2004-12-02 17:17
2005.01.02
обновление detail - таблицы


1-1103443089
Logun
2004-12-19 10:58
2005.01.02
Delphi и капризный Flash


1-1103129408
tazik
2004-12-15 19:50
2005.01.02
Введение своего языка в программу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский