Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа ч/з ADO 2 [D6, ADO]


snake7 ©   (2004-02-06 16:33:00) 

Делаю такой запрос
бд октрыта в режиме Mode=Read;

ADODataSet1.CommandText:="SELECT "" AS N,* FROM tabl1";
ADODataSet1.Open;
при попытке редактирования:
ADODataSet1.Edit;
ADODataSet1.Fields[0].AsString:="1";
ADODataSet1.Post;
выдает ошибку, как это обойти чтобы поменять занчения первого столбца??????


VLAD-MAL   (2004-02-06 17:17:00) [1]

> В OnCalcFields - формируешь значение. Если знаешь как, конечно.

а как формировать????


procedure TForm1.ADODataSet1CalcFields(DataSet: TDataSet);
begin
DataSet.FieldByName("NPP").AsString := "Я самый крутой!";
end;


VLAD-MAL   (2004-02-06 17:13:00) [2]

Можно и в Run - time. Но только, когда CreateDataSet выполняется. Так что или переписываешь компонент, или юзаешь TClientDataSet. Там такое (CreateDataSet) доступно.

пример:

cdsTable := TClientDataSet.Create(Self);

try
ADODataSet.Open;

// Копируем структуру данных
cdsTable.FieldDefs.Assign(ADODataSet.FieldDefs);

// Добавляем поле NPP - для обработки cdsTable.FieldDefs.Add("NPP", ftInteger);

cdsTable.CreateDataSet;

Все - и никаких Calculated, если не хочешь!


snake7   (2004-02-06 17:06:00) [3]


> В OnCalcFields - формируешь значение. Если знаешь как, конечно.

а как формировать????


snake7   (2004-02-06 17:05:00) [4]


> В OnCalcFields - формируешь значение. Если знаешь как, конечно.

а как формировать????


Плохиш   (2004-02-06 17:03:00) [5]


> snake7 (06.02.04 16:59) [12]
> да все хорошо а как такое сделать когда программа запущена?

1. Останавливаешь программу
2. Делаешь как сказал VLAD-MAL
3. Компилируешь
4. Запускаешь программу

или думаешь над тем, что сказал АП


snake7   (2004-02-06 16:59:00) [6]

да все хорошо а как такое сделать когда программа запущена?


VLAD-MAL   (2004-02-06 16:57:00) [7]

Кидаешь в TADODataSet "SELECT * FROM tabl1",
потом открываешь Field Editor, > Add All Fields > New Field >
Name = "NPP", Type= "String", Field Type = Calculated, Syze = 5,
OK
В OnCalcFields - формируешь значение. Если знаешь как, конечно.


snake7   (2004-02-06 16:49:00) [8]

2 MV
как оно меня сапасет?


MV   (2004-02-06 16:46:00) [9]

Calculated поле тебя спасет.

Но, IMHO - ваш subj - ненужная блажь.


Anatoly Podgoretsky   (2004-02-06 16:46:00) [10]

Может тебе CLientDataset подойдет


snake7   (2004-02-06 16:44:00) [11]

блин
в этом и вопрос то мне нужен такой запрос что он выводил все поля
а первый столбик показывал порядковый номер записи!!!!!


Anatoly Podgoretsky   (2004-02-06 16:44:00) [12]

Значение первого столба константа, кроме того его физически не существует, нечего менять.


Dedushka_Mazai   (2004-02-06 16:43:00) [13]

может, бд открыть в режиме write, если конечно таковой существует?


MV   (2004-02-06 16:42:00) [14]

Потому что поле #0 у тебя - не настоящее.
Сделай "SELECT * FROM tabl1"


snake7   (2004-02-06 16:40:00) [15]

Если поможет ошибка такая "Field N cannot be modified"


snake7   (2004-02-06 16:37:00) [16]

provider=Microsoft.Jet.OLEDB.4.0


MV   (2004-02-06 16:35:00) [17]

Сервак какой?

---------
Может, вообще TADOQuery / TADOCommand использовать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо