Форум: "Базы";
Текущий архив: 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.017 c