Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.01;
Скачать: CL | DM;

Вниз

Добавление поля в ADOTable   Найти похожие ветки 

 
db_noob   (2005-11-10 09:17) [0]

Мастера, помогите новичку в БД! Надо в определенной таблице MDB добавить поле типа ftString.

Пробовал вот так:    

   NewField:=TField.Create(ADOTable1);
    NewField.SetFieldType(ftString);
    NewField.FieldKind:=fkData;
    NewField.FieldName:=edHashColumn.Text;
   ADOTable1.Fields.Add(NewField);


поле вроде создается, но тип определяется как ftUnknown :(
и поэтому на ентом коде просто вываливается:

ADOTable1.FieldByName(edHashColumn.Text).AsString:=Hash;

с ошибкой "Cannot access field "DBControl" as type String"


 
db_noob   (2005-11-10 09:54) [1]

Удалено модератором
Примечание: Создание пустых сообщений


 
Dioman ©   (2005-11-10 12:34) [2]

Поле то создается. Но не привязывается к данным. Если переоткрыть датасет то получится что он не сможет найти это поле в физической таблице, и выдаст ошибку.
тип fkData к данным привязывается.. то есть поле без физ. поля в таблице не может быть. А вот Calculated какой-нибдуь можно.

SetFieldType в классе TField это пустая заглушка, она ничего не делает и используется в классах потомках.

Если нужно физически модифицировать структуру данных то можно воспользоваться DDL. В TADOCommand. (если для мдб это поддерживается).

Если нужно создать динамическое поле... не автовычисляемое и не лукап, то честно не в курсе как это делать. Может для этого есть какие-то левые компоненты. Хотя можно создать поле в гриде, не привязывать его к данным и модифицировать просто перерисовывая его посе каких-то событий. (я так делал когда нужно было сделать поле Номер по порядку.

Надеюсь помог


 
Desdechado ©   (2005-11-10 13:07) [3]

ALTER TABLE xxx ADD ...


 
db_noob   (2005-11-10 17:46) [4]

Desdechado ©   (10.11.05 13:07) [3]
ALTER TABLE xxx ADD ...

первым делом попробовал! =( ругается на синтаксис. я думал что тоже самое, что и в MS SQL проканает:

ADOQuery1.SQL.Text:=Format("ALTER TABLE %s ADD %s VARCHAR(100) NULL",[ATableName,AColumnName]);
ADOQuery1.Open;
...


ругается на ALTER TABLE :(

Dioman ©   (10.11.05 12:34) [2]
спасибо, немного раскрыли глаза... не могли бы подсказать как с помощью DDL модифицировать сию таблицу, видел примеры создания новой таблицы, но не нашел примеров модификации. мне всего то 1 поле добавить надо, а такие проблемы возникают =( заранее, спасибо


 
Desdechado ©   (2005-11-10 17:56) [5]

какой Open для ALTER TABLE?
может, где скобки нужны


 
Dioman ©   (2005-11-10 18:02) [6]

DDL это как раз и есть alter table, только рекомендуют использовать TAdoCommand .. как раз для этих целей. Попробуй.

а на создание полей в новой таблице примеров действительно дофига, а вот как создать новое поле ... ???


 
db_noob   (2005-11-10 19:43) [7]

Desdechado ©   (10.11.05 17:56) [5]
я в ентом деле немного нуб ) направление другое.
т.е. юзать ExecSQL? Open вообще тут не нужен? достаточно чтобы ADOQuery1 был завязан через ConnectionString / Connection с базой?

ADOQuery1.SQL.Text:=Format("ALTER TABLE %s ADD %s VARCHAR(100) NULL",[ATableName,AColumnName]);
ADOQuery1.ExecSQL;


вот так? (прошу прощение что переспрашиваю, просто проверить смогу только утром, в общем, на всякий случай :))

з.ы. по поводу скобок: вы что имели в виду?
"ALTER TABLE (...)" ? раз DDL, то наверное аналогично "CREATE TABLE (...)" ? или вы что другое имели в виду...

Dioman ©   (10.11.05 18:02) [6]
"DDL это как раз и есть alter table, только рекомендуют использовать TAdoCommand .. как раз для этих целей. Попробуй."

спасибо, нашел пару примеров использования DDL + TADOCommand. Спасибо!

"а на создание полей в новой таблице примеров действительно дофига, а вот как создать новое поле ... ???"

угу =(


 
Desdechado ©   (2005-11-10 20:57) [8]

скобки, например, в оракле могут понадобиться
ALTER TABLE xxx ADD ( ... )
синтаксис везде немного разный, смотри в акцессе в справке


 
sniknik ©   (2005-11-10 21:01) [9]

... ADD COLUMN ...

насчет NULL еще не уверен, NOT NULL есть а вот NULL... вообше лучше убери.


 
db_noob   (2005-11-11 04:30) [10]

sniknik ©   (10.11.05 21:01) [9]
... ADD COLUMN <имя_колонки> <тип> <default> ?



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

Текущий архив: 2006.01.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
1-1133532952
Igor_thief
2005-12-02 17:15
2006.01.01
Работа с IE History


5-1118905491
flake
2005-06-16 11:04
2006.01.01
TTrackBar - ползунки


2-1134556725
Centory
2005-12-14 13:38
2006.01.01
Функции в DLL, которые берутся из другой DLL


14-1133866955
WondeRu
2005-12-06 14:02
2006.01.01
Добавьте анекдот :)


3-1131542234
RDA
2005-11-09 16:17
2006.01.01
Firebird - Защиты нет?