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

Вниз

Динамическое создание БД   Найти похожие ветки 

 
Гарик   (2006-05-27 21:47) [0]

Здравствуйте, Мастера.
Мне нужно динамически создать БД, но количество полей заранее не известно. Подскажите как это можно сделать, пожалуйста с примером. (нужно для конвертации Excel в DB, но сколько колонок будет в Excel заранее не известно, а создавать каждый раз базу вручную, сами понимаете).
Заранее блогодарен за ответы.


 
Desdechado ©   (2006-05-27 21:53) [1]

учим SQL (CREATE TABLE)
используем TQuery


 
Гарик   (2006-05-27 21:56) [2]

Спасибо.
А можно пример по конкретному вопросу.


 
Desdechado ©   (2006-05-27 22:20) [3]

s := "CREATE TABLE T1( ";
for i := 1 to 5 do begin
s := s + "f" + IntToStr(i) + " INTEGER";
if( i <> 5 ) then
s := s + ","
else
s := s + ")";
end;
query.sql.text := s;
query.execsql;


 
Гарик   (2006-05-27 22:23) [4]

Спасибо, буду пробовать.


 
Sergey13 ©   (2006-05-29 09:18) [5]

2 Гарик   (27.05.06 21:47)
Эксель сам может сохранять в DBF файлы.


 
solenko ©   (2006-05-29 09:43) [6]

TTable.CreateTable.


var t:TTable;
begin
t.FieldDefs.Add("id", ftInteger,0);
t.FieldDefs.Add("name", ftString,50);
t.CreateTable;
end;


 
VICTOR_   (2006-05-29 23:08) [7]

Как вариант
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=basebde&id=10293


 
Евгений Р.   (2006-05-29 23:33) [8]

Ф-ция создает таблицу, идентичную набору данных и сливает в нее все записи:

procedure saveDsToFile(ds:TDataSet;pth:string);
 var tbl:Ttable;
     fld,fld1:Tfield;
     i:integer;
     ft:TFieldType;
     fSize:word;
Begin
   if not ds.active then exit;
   tbl:=ttable.create(nil);
   tbl.DataBaseName:="";
   tbl.TableName:=pth;
   tbl.TableType:=ttParadox;
   tbl.fieldDefs.clear;
   for i:=0 to ds.fieldCount-1 do Begin
       fld:=ds.fields[i];
       ft:=ftUnknown;
       if fld is tStringField then ft:=ftString;
       if fld is tIntegerField then ft:=ftInteger
         else if fld is tNumericField then ft:=ftFloat;
       if fld is tDateField then ft:=ftDate
         else if fld is tDateTimeField then ft:=ftDateTime;
       if fld is tBooleanField then ft:=ftBoolean;
       if fld is tMemoField then ft:=ftMemo;  
       fSize:=0;
//        if fld is tStringField then
       fSize:=fld.size;
       if ft=ftUnknown then continue;
       tbl.fieldDefs.add(fld.fieldName,ft,fSize,false);
   End;{for}
   tbl.CreateTable;
   tbl.close;
   tbl.open;
   ds.first;
   while not ds.eof do Begin
      tbl.append;
      for i:=0 to ds.fieldCount-1 do Begin
          fld:=ds.fields[i];
          fld1:=tbl.fields[i];
          fld1.value:=fld.value;
      End;{for}
      tbl.post;
      ds.next;
   End;{while}

   tbl.free;
End;{saveDsToFile}


 
Гарик   (2006-05-30 12:09) [9]

Спасибо Всем за примеры, буду пробовать.


 
ЮЮ ©   (2006-05-30 12:15) [10]

Мне нужно динамически создать БД, но количество полей заранее не известно.

Не верю. Не верю что кому-то нужно приложение, в котором напрочь отсутствует бизнесс логика. Для конструирования таблиц пользователю и Acess-а  за глаза хватит.


 
mr.il ©   (2006-05-30 12:44) [11]

with Q_CreateTable do begin
   Close;
     SQL.Clear;
     SQL.Add("CREATE TABLE ""+_FName+""");
     SQL.Add("(DistrId CHAR(15), ");
     SQL.Add("MngId DECIMAL(10), ");
     SQL.Add("""+_FName+""."Desc" CHAR(200), ");
     SQL.Add("DateBegin DATE, ");
     SQL.Add("DateEnd DATE, ");
     SQL.Add("uid CHAR(15))");
     ExecSQL;
     SQL.Clear;
     SQL.Add("CREATE INDEX uid ON ""+_FName+"" (uid)");
     ExecSQL;
 end;


 
Евгений Р.   (2006-05-30 15:59) [12]

"Не верю. Не верю что кому-то нужно приложение, в котором напрочь отсутствует бизнесс логика. Для конструирования таблиц пользователю и Acess-а  за глаза хватит."

Часто бизнес-логику используеш при настройке приложения, и не всем для этого подходит Acess.


 
ЮЮ ©   (2006-05-31 05:11) [13]

Часто бизнес-логику используеш при настройке приложения

Странная, однако, "настройка", в ходе которой у объекта обнаруживаются неизвестные до этого свойства (а именно так я привык смотреть на таблицу и её поля)  и программа с ходу понимает как их в дальнейшем интерпретировать



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

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

Наверх





Память: 0.47 MB
Время: 0.011 c
15-1152610934
Шмелъ
2006-07-11 13:42
2006.08.06
Вопрос жителям украины


3-1148978355
МЕГАватт
2006-05-30 12:39
2006.08.06
Изменить представление данных в DBGrid


4-1145340167
Виталий Панасенко
2006-04-18 10:02
2006.08.06
EAN-8, EAN-13 etc.


15-1152772975
Alien1769
2006-07-13 10:42
2006.08.06
Требование по ресурсам 1С


11-1131120705
NORDmen
2005-11-04 19:11
2006.08.06
tkolform&amp;align





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский