| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > значение ячейки DBGrida |
| Автор: AKN 25.3.2006, 12:34 | ||
Подскажите, как обратится к ячейке DBGrida и получить ее текст? нужно сделать такую вот вставку:
спасибо! |
| Автор: bas 25.3.2006, 14:25 |
| Грид данных не содержит, а только отображает , но приэтом полностью синхронизирован с набором данных. Поэтому Можно смело обращаться к текущей записи грида через DBGrid.DataSource.DataSet. а дальше все тривиально. |
| Автор: AKN 25.3.2006, 15:51 | ||||
дело вот в чем:
, теперь мне нужно заполнить данные на сотрудников (поля в таблице sotrudniki_data), я и пишу:
а он говорит типа поле не найдено. Просто то что мне нужно содержится в первом столбце текущей записи грида З.Ы. таблица парадоксовская, будет на фаерберде |
| Автор: Vit 25.3.2006, 16:14 | ||
Как минимум так:
Но ошибок может быть и гораздо больше зависит от предыдущего кода и структуры таблиц |
| Автор: av78 25.3.2006, 16:39 | ||
а можно так, например:
где DBGrid1.Fields[0].AsString и есть обращение |
| Автор: AKN 25.3.2006, 22:58 | ||||
Vit, на
ругается, говорит что полей ID не найдено. Похоже проблема в том, что у меня в обоих таблицах поле одинаково называется... Можно как-то его идентифицировать конкретнее? На
|
| Автор: bas 27.3.2006, 16:42 | ||
Согласен. Куда смотрит грид и куда вставляем данные и как эти поля (ID) называються в этих источниках данных? |
| Автор: AKN 28.3.2006, 13:12 |
| постановка задачи: есть таблица _____________________________ ID | name _________|___________________ 1 | ИВАНОВ 2 | СИДОРОВ 3 | ПЕТРОВ есть вторая таблица (данные о сотрудниках) _________________________________________|___________________________ ID (сотрудника из первой таблицы) | номер телефона и т.д. | _________________________________________|___________________________ 1 | Null (эти поля еще пустые) 2 | Null 3 | Null 4 | Null Задача: заполнить (наглядно) вторую таблицу, то есть пользователю будет предоставлена таблица, в которой в первом поле будут фамилии сотрудников, а остальные поля будут пустыми. Он заполнит нужные поля напротив сотрудника, нажмет кнопку и информация будет зафиксирована в базе данных. Проблема в том, что пользователь может заполнить поля напротив любого сотрудника, т.е. нужно узнать, какому же сотруднику будет принадлежать данная информация например: _________________________________________|___________________________ ID (сотрудника из первой таблицы) | номер телефона и т.д. | _________________________________________|___________________________ ИВАНОВ | Null (эти поля еще пустые) СИДОРОВ | Null ПЕТРОВ | г. Харьков Мне нужно узать, куда же вставлять вот этот "г. Харьков", напротив какого же сотрудника? Т. е. в результате выполнонной вставки таблица 2 стала _________________________________________|___________________________ ID (сотрудника из первой таблицы) | номер телефона и т.д. | _________________________________________|___________________________ 1 | Null (эти поля еще пустые) 2 | Null 3 | г. Харьков 4 | Null Надеюсь разписанов более-менне понятно... |
| Автор: Tror 28.3.2006, 13:45 |
| ну во первых ID (сотрудника из первой таблицы) во второй таблице это никак не ИВАНОВ, СИДОРОВ, ПЕТРОВ, а 1, 2, 3, ИВАНОВ, СИДОРОВ, ПЕТРОВ -- это name из первой таблицы если честно, то я тоже занимаюсь базами данных недавно но насколько я понял в твоей базе между первой и второй таблицами связь 1-1, тогда зачем их разделять? |
| Автор: sexton 28.3.2006, 13:46 |
| Если я правильно понял - читай материалы по отношениям master-detail между таблицами. |
| Автор: AKN 28.3.2006, 13:52 | ||||||
Tror,
потому что эти имена сотрудников еще будут использоваться в нескольких больших таблицах, а введение ID должно значительно уменьшить размер базы данных
ну ошибся- там будет типа
|
| Автор: Vit 28.3.2006, 16:38 | ||||||
Так, ответить точно не могу, потому как не знаю синтаксиса SQL Firebird, но в большинстве баз данных возможны запросы типа:
Т.е. одним запросом заполняется вся таблица. Более конкретно - см. синтаксис SQL запроса Update в документации по Firebird. Мороки будет очень много по переводу, там и синтаксис SQL разный и архитектура и логика работы.
Это проблема архитектуры. Первая и вторая из приведенных вами таблиц должны быть сопоставлены по полям ID. Т.е. Иванов если он под номером 3 в первой таблице он должен идти и под номером 3 во второй таблицы. Вы не должны предоставлять пользователю возможность редактировать что угодно где угодно, и не должны давать редактировать поле ID, чтобы реализовать это вы должны: 1. Отказаться от DBGrid как метода ввода данных пользователем 2. ПОказывать пользователю форму с обычными или DB компонентами типа TEdit или TDBEdit - пусть вводит свои данные. Если использовать DB компоненты, то надо сначала позиционировать запись именно на конкретного человека и пусть заполняет, а если обычные компоненты, то по нажатию кнопки Save сохранить введенные данные под его номером. PS. Ваши проблемы начались с того самого момента как вы поставили DBGrid на форму. Удалите его, и вы сможете наконец начать работать с базой данных по нормальному. |
| Автор: AKN 29.3.2006, 09:55 |
| Vit, огромное спасибо за качественный и полный ответ. Тема закрыта. Всем спасибо. |