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

Вниз

Добавление поля в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
2-1134650804
fast2
2005-12-15 15:46
2006.01.01
Как создать директорию вместе с родительскими директориями?


1-1133546462
Gear
2005-12-02 21:01
2006.01.01
как сделать перенос по словам в элементе ListBox?


2-1134627406
highlander
2005-12-15 09:16
2006.01.01
Как правильно составить запрос для вычисления суммы отрицательных


1-1133515793
VID
2005-12-02 12:29
2006.01.01
Проблема отрисовки ProgressBar в XP !


4-1130654380
stenford
2005-10-30 09:39
2006.01.01
стандартное меню Windows





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