AleksP |
Отправлено: 23.01.2007, 13:02 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 34
|
1) Как получить доступ к элементам DBGrid с целью последующего вывода в текстовых полях (например, TEdit, TLable)? DBGrid заполняется из mdb файла через ADOTable.
2) Как сформировать DataSource для DBGrid, например, из таблицы, которая содержится в текстовом файле? |
|
Valdemar |
Отправлено: 23.01.2007, 14:42 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
1. Вы не путайте средства отображения данных (DBGrid) и источник данных (Table, Query и т.п.). Если нужно получить данные, то обращайтесь к соответствующим полям источника данных.
Для отображения и редактирования данных из БД есть специальные копоненты, например, на закладке Data Controls.
2. Считать данные из таблицы в текстовом файле по простому врядли удастся. Скорее всего все придется делать вручную. |
|
Tantos |
Отправлено: 23.01.2007, 15:28 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
2. Теоретически можно повозиться TADOCOnnection::ConnectionString. Помнится, кто-то XPortal'e делал БД на файлах Excel. Но, ИМХО, это конкретный гимор.
|
|
AleksP |
Отправлено: 23.01.2007, 17:19 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 34
|
Как можно сформировать из данных DataSource, если они уже считаны из файла и преобразованы, например, в массив? |
|
Tantos |
Отправлено: 24.01.2007, 04:28 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
Массив вариантный или обычный? Динамический или статический? Если обычный статический, то что-то вроде этого:
CODE |
int i = 0;
int array[10];
while( !DataSet->Eof || i<10 )
{
array[i] = DataSet->FieldByName("F1")->AsInteger;
i++;
DataSet->Next();
}
|
Кстати, попробуй посмотреть в сторону std::vector для этой цели.
|
|
AVC |
Отправлено: 24.01.2007, 09:12 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
2Tantos
Если я правильно понял, то вопрос был прямо противоположным. Есть массив и нужно из него сделать DataSet.
Этим умеет заниматься MemTableEh, но это уже хлеб olegenty . |
|
AleksP |
Отправлено: 24.01.2007, 11:53 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 34
|
To AVC: Да, именно так... из массива нужно сделать DataSource. |
|
Илшат |
Отправлено: 26.01.2007, 16:45 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 2
|
Как записать данные для не активной записи, или значение поля в DBGrid? |
|
Tantos |
Отправлено: 27.01.2007, 03:15 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
DBGrid — средство для отображения данных. В него ничего не записывают! Что касается внесения изменений в неактивную запись, то уточни, с чем ты работаешь. Обычно обновление происходит на основе первичного ключа таблицы:
CODE |
Update tbl1 set field1=:field1 where id=:id
|
Отредактировано Tantos — 30.01.2007, 09:01
|
|
nawok78 |
Отправлено: 29.01.2007, 15:23 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 115
|
Если Таблица уже создана то приблизительно так:
CODE |
void ClearDataSet (TDataSet *ds)
{
ds->First;
while(!ds->Eof)
{
ds->Delete();
}
}
void ArrayToDataSet (TRecord *ArrayOfRecrds, int Count, TDataSet *ds)
{
ClearDataSet (ds);//Если надо обнулить
for (i=0; i<Count; i++)
{
ds->Append();
ds->FieldByName('A')->AsInteger= ArrayOfRecrds[i].A;
ds->FieldByName('B')->AsFloat= ArrayOfRecrds[i].B;
ds->FieldByName('C')->AsString= ArrayOfRecrds[i].C;
}
}
| |
|