Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление столбца в Access 
V
    Опции темы
GePo
Дата 1.8.2006, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: нет
Всего: 3



Такая проблема: 
Использую ADO для подключения к базе Access.
В базе уже есть некая таблица tTest. Пусть в ней есть столбец ttName_en некоего типа( например - ftWideString ). Программно нужно создать столбец ttName_ru такого же типа, что и ttName_en в этой же таблице.
1) При использовании TADOTable.FieldDefs.Add я так понимаю, нужный столбец создается в памяти и в базе не создается. CreateField ведет себя аналогично.
2) Я бы с радостью использовал ALTER TABLE, если бы не одно но - в ADO типы нумеруется, а в запросе мне нужно их текстовое представление, которого нет.

Итак, как же можно создать такой столбец? Желательно средствами ADO.
--------------------
PM MAIL WWW   Вверх
Golden Hands
Дата 1.8.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Золотой
****


Профиль
Группа: Участник Клуба
Сообщений: 2023
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: 2
Всего: 83



Цитата(GePo @  2.8.2006,  02:01 Найти цитируемый пост)
 в ADO типы нумеруется, а в запросе мне нужно их текстовое представление, которого нет.

Не понял.



--------------------
Мы обречены... но только на победу!
Настанет день, и мы построим новый дом.
Внесем в него тепло, что сохранить сумели,
И воскресим все то, что в нас когда-то умерло... © Тень Света
PM MAIL ICQ   Вверх
Mephisto
Дата 2.8.2006, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Я так понял ты хочешь динамически подставлять тип поля?
PM   Вверх
GePo
Дата 2.8.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: нет
Всего: 3



Golden Hands, В ADO поле типа в классе TField имеет тип TFieldType. Это перечислимый тип => число.
В запросе:
Код

ALTER TABLE tTest ADD COLUMN ttName_ru sometype

Вот как sometype должно писаться, я не знаю
Mephisto, мне нужно создать поле с определенным типом, текстового названия которого я не знаю, только его значение TFieldType ( как ftWideString, ftInteger)

Это сообщение отредактировал(а) GePo - 2.8.2006, 13:20
--------------------
PM MAIL WWW   Вверх
Vit
Дата 2.8.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(GePo @  1.8.2006,  14:01 Найти цитируемый пост)
2) Я бы с радостью использовал ALTER TABLE, если бы не одно но - в ADO типы нумеруется, а в запросе мне нужно их текстовое представление, которого нет.



c:\Program Files\Common Files\Microsoft Shared\OFFICE11\1033\JETSQL40.CHM 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
GePo
Дата 2.8.2006, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: нет
Всего: 3



Vit, 
вот, что наделал после соединения хелпа по Jet SQL и ADO. В Access, как я понял некоторые типы не поддерживаются. Вот, может кому понадобится:
Код

function FieldTypeToStr(const F : TFieldType) : String;
begin
  case F of
  ftUnknown: // Unknown or undetermined
    result := '';
  ftBytes, // Fixed number of bytes (binary storage)
  ftVarBytes: // Variable number of bytes (binary storage)
    result := 'BINARY'; {
     1 byte per character
     Any type of data may be stored in a field of this type.
     No translation of the data (for example, to text) is made.
     How the data is input in a binary field dictates how it
     will appear as output.
    }

  ftFixedChar, // Fixed character field
  ftString, // Character or string field
  ftWideString: // Wide string field
    result := 'CHARACTER'; {
     2 bytes per character
     Zero to 255 characters
    }

  ftMemo, // Text memo field
  ftWideMemo:
    result := 'TEXT'; {
     2 bytes per character
     Zero to a maximum of 2.14 gigabytes.
    }

  ftSmallint: // 16-bit integer field
    result := 'SMALLINT'; {
    2 bytes
    A short integer between  – 32,768 and 32,767.
    }

  ftWord, // 16-bit unsigned integer field
  ftInteger: // 32-bit integer field
    result := 'INTEGER'; {
    4 bytes
    A long integer between  – 2,147,483,648 and 2,147,483,647.
    }
  
  ftBoolean: // Boolean field
    result := 'BIT'; {
     1 byte
     Yes and No values and fields that contain only one of two values. 
    }

  ftFloat: // Floating-point numeric field
    result := 'FLOAT'; {
    8 bytes
    A double-precision floating-point value with
    a range of  – 1.79769313486232E308 to  – 4.94065645841247E-324
    for negative values,
    4.94065645841247E-324 to 1.79769313486232E308
    for positive values, and 0.
    }

  ftCurrency: // Money field
    result := 'MONEY'; {
    8 bytes
    A scaled integer between
     – 922,337,203,685,477.5808 and 922,337,203,685,477.5807.
    }

  ftDate, // Date field
  ftTime, // Time field
  ftDateTime, // Date and time field
  ftTimeStamp: // Date and time field accessed through dbExpress
    result := 'DATETIME'; {
    8 bytes
    A date or time value between the years 100 and 9999.
    } 

  ftGraphic, // Bitmap field
  ftParadoxOle, // Paradox OLE field
  ftDBaseOle, // dBASE OLE field
  ftBlob, // Binary Large OBject field
  ftOraBlob,  // BLOB fields in Oracle 8 tables
  ftADT: // Abstract Data Type field
    result := 'IMAGE'; {
    As required
    Zero to a maximum of 2.14 gigabytes. Used for OLE objects.
    }

  ftGuid: // globally unique identifier (GUID) values
    result := 'UNIQUEIDENTIFIER'; {
    128 bits
    A unique identification number used with remote procedure calls.
    }

  ftBCD, // Binary-Coded Decimal field that can be converted to Currency type without a loss of precision.
  ftFMTBcd: // Binary-Coded Decimal field that is too large for ftBCD.
    result := 'DECIMAL';  {
    17 bytes
    An exact numeric data type that holds
    values from 1028 - 1 through - 1028 - 1.
    You can define both precision (1 - 28) and
    scale (0 - defined precision). The default
    precision and scale are 18 and 0, respectively.
    }

  ftAutoInc: // Auto-incrementing 32-bit integer counter field
    result := 'COUNTER';

  ftLargeint, // Int64 large integer field
  ftFmtMemo, // Formatted text memo field
  ftTypedBinary, // Typed binary field
  ftCursor, // Output cursor from an Oracle stored procedure (TParam only)
  ftArray, // Array field
  ftReference,  // REF field
  ftDataSet, // DataSet field
  ftOraClob, // CLOB fields in Oracle 8 tables
  ftVariant,  // Data of unknown or undetermined type
  ftInterface, // References to interfaces (IUnknown)
  ftIDispatch: // References to IDispatch interfaces
    raise EDatabaseError.Create('Not supported');
  end;
end;


Это сообщение отредактировал(а) GePo - 3.8.2006, 21:44
--------------------
PM MAIL WWW   Вверх
Vit
Дата 2.8.2006, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



  ftFixedChar  - char

  ftWord - int 

  ftOraBlob - image  


Теоретичеки, всё что не влазит в описанные типы можно попробовать заткнуть в Image


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
GePo
Дата 3.8.2006, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: нет
Всего: 3



ok, код в соотвествии с этими замечаниями отредактировал. Спасибо. В этом коде, все нужные мне типы работают.
--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.