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