Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Размер поля из TQuery для создания новой таблицы? / 6 сообщений из 6, страница 1 из 1
05.08.2003, 04:34
    #32226958
Алексей_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер поля из TQuery для создания новой таблицы?
Как узнать размер поля в физической базе через произвольный запрос TQuery для баз *.db и *.dbf ?
Давно есть идея написать процедуру, которая бы создавала динамически бузу и сохраняла бы результат запроса Query (*.db или *.dbf) в новую базу.
Имя поля и тип узнать легко:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Razd := ' ';
for i :=  0  to Query1.FieldDefs.Count -  1  do
begin
  case Query1.Fields[i].DataType of
    ftDate: st := st + Razd + Query1.Fields[i].FieldName+' DATE';
    ftString: st := st + Razd + Query1.Fields[i].FieldName+' CHAR('+inttostr(Query1.Fields[i].Size)+')';
    ..
  end;
  Razd := ',';
end;

Размер текстового поля известен Query1.Fields [ i ].Size, а вот как узнать размер числовых и вещественных полей ?
Может кто уже решал подобную задачу ?

Можно конечно делать тип просто NUMERIC без указания размерности, но тогда будут создаваться поля NUMERIC(20,4) что будет довольно таки избыточно и не всегда допустимо по формату использования в программах жестко настроенных на формат полей.
...
Рейтинг: 0 / 0
05.08.2003, 05:28
    #32226963
dragonx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер поля из TQuery для создания новой таблицы?
Vse eot mojno delat sredstavmi SQL
"Create table xxxx.dbf as select ...."
udachi ...
...
Рейтинг: 0 / 0
06.08.2003, 04:24
    #32228102
Алексей_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер поля из TQuery для создания новой таблицы?
У меня Делфи5 и доступ к базам *.db и *.dbf через стандартные TTable и TQuery.

create table test1 as select * from test2.DBF

Ни в Делфийском TQuery ни в SQLExplorer не работает, кричит:
Invalid use keyword.
Token: as

Может это работает через ADOQuery ?
Тогда может кто подскажет "чайнику ADO" что нужно прописать для соединения с dbf через ADO в ConnectionString для dbase IV ?
Пишу
Provider=Microsoft.Jet.OLEDB.4.0;User ID=1;Data Source=c:\;Mode=ReadWrite|Share Deny None;Extended Properties=dBase IV;Persist Security Info=False

С такой строчкой при conected:=true в дизайнере он кричит: Не удается запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.
В чем причина ?
-----
А ADO хоть с DBF пропустит(create table test1 as select * from test2.DBF) ?
А может все же есть еще другой способ без ADO ?
...
Рейтинг: 0 / 0
06.08.2003, 04:27
    #32228103
dragonx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер поля из TQuery для создания новой таблицы?
est` takoi component nazivaetsya TBachMove,
(v nazvanii mogu nemnogo oshibitsya)
...
Рейтинг: 0 / 0
07.08.2003, 02:20
    #32229485
Алексей_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер поля из TQuery для создания новой таблицы?
Компонент называется tbaTchmove, да действительно он упрощает жизнь, ненужно писать самому процедуру создания базы анализируя типы полей, но он имеет тот же недостаток что и та процедура которую я написал:
вещественные значения он делает Numeric (20,4) и целые больше чем в базе были.
Похоже это все же так просто победить нельзя.

Люди у кого работает связка create table test1 as select * from test2.DBF на DBF-ах или на других базах, а у Вас как с размерностью числовых полей после create table as ?
Т.е. они идентичны источнику или как и при TBatchMove размерность у числовых полей увеличивается ?
...
Рейтинг: 0 / 0
07.08.2003, 04:53
    #32229497
dragonx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер поля из TQuery для создания новой таблицы?
Na schet dlini polei u menya bili prikoli
kogda ya sozdaval tablicu v Oracle as select
polya tekstovie to je sozdavalis` po maximumu,
v Selecte ya delal SubStr(Field,20) NField naprimer, i tablica togda sozdavalas
NField Varchar(20), poprobui
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Размер поля из TQuery для создания новой таблицы? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]