![]() |
|
|
![]()
|
|
| AKN |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.11.2005 Репутация: нет Всего: нет |
Подскажите, как обратится к ячейке DBGrida и получить ее текст? нужно сделать такую вот вставку:
спасибо! |
|||
|
||||
| bas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: 1 Всего: 2 |
Грид данных не содержит, а только отображает , но приэтом полностью синхронизирован с набором данных. Поэтому Можно смело обращаться к текущей записи грида через DBGrid.DataSource.DataSet. а дальше все тривиально. |
|||
|
||||
| AKN |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.11.2005 Репутация: нет Всего: нет |
дело вот в чем:
, теперь мне нужно заполнить данные на сотрудников (поля в таблице sotrudniki_data), я и пишу:
а он говорит типа поле не найдено. Просто то что мне нужно содержится в первом столбце текущей записи грида З.Ы. таблица парадоксовская, будет на фаерберде |
||||
|
|||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Как минимум так:
Но ошибок может быть и гораздо больше зависит от предыдущего кода и структуры таблиц -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| av78 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 21.12.2005 Где: Херсон Репутация: нет Всего: нет |
а можно так, например:
где DBGrid1.Fields[0].AsString и есть обращение |
|||
|
||||
| AKN |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.11.2005 Репутация: нет Всего: нет |
Vit, на
ругается, говорит что полей ID не найдено. Похоже проблема в том, что у меня в обоих таблицах поле одинаково называется... Можно как-то его идентифицировать конкретнее? На
Это сообщение отредактировал(а) AKN - 25.3.2006, 22:59 |
||||
|
|||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Нету там в запросе двух таблиц. Мой код выполняет один запрос к одной таблице 'sotrudniki_data', и вообще то что Вы делаете похоже на какую-то кашу... Приведите целиком код процедуры, скорее всего 1. Ошибки генерятся не моим кодом, а в следствии хаотичного использования компонентов 2. Сама постановка задачи "значение ячейки DBGrida" говорит о полном непонимании того как дельфи работает с базами данных. Вот тут статья: http://vingrad.ru/ART-DELPHI-000034 читать до полного просветления А можно по английски точное сообщение об ошибке? Я за 13 лет работы с Дельфи ни разу не видел ошибки "ввода в файл"! Боюсь что отвечая Вам на Ваши вопросы в той форме в которой они сформулированы - это борьба с ветряными мельницами. Скорее всего проблем в данных конкретных вопросах нет вовсе, проблемы гораздо проще (для меня) и гораздо сложнее (для Вас). Моя рекомендация будет: 1. Прочитать ту статью 2. Если понятнее не станет, опубликовать код а не кусочек, будем все вместе ставить его с головы на ноги -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| bas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: 1 Всего: 2 |
||||
|
||||
| AKN |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.11.2005 Репутация: нет Всего: нет |
постановка задачи:
есть таблица _____________________________ 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 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 29.4.2005 Где: Кишинёв Репутация: нет Всего: 4 |
ну во первых ID (сотрудника из первой таблицы) во второй таблице это
никак не ИВАНОВ, СИДОРОВ, ПЕТРОВ, а 1, 2, 3, ИВАНОВ, СИДОРОВ, ПЕТРОВ -- это name из первой таблицы если честно, то я тоже занимаюсь базами данных недавно но насколько я понял в твоей базе между первой и второй таблицами связь 1-1, тогда зачем их разделять? Это сообщение отредактировал(а) Tror - 28.3.2006, 13:45 --------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;) |
|||
|
||||
| sexton |
|
|||
![]() sexton=Пономарь (eng) ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 5.5.2004 Где: Ульяновск Репутация: нет Всего: 9 |
Если я правильно понял - читай материалы по отношениям master-detail между таблицами.
|
|||
|
||||
| AKN |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.11.2005 Репутация: нет Всего: нет |
Tror,
потому что эти имена сотрудников еще будут использоваться в нескольких больших таблицах, а введение ID должно значительно уменьшить размер базы данных
ну ошибся- там будет типа
Это сообщение отредактировал(а) AKN - 28.3.2006, 14:07 |
||||||
|
|||||||
| Vit |
|
||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Так, ответить точно не могу, потому как не знаю синтаксиса SQL Firebird, но в большинстве баз данных возможны запросы типа:
Т.е. одним запросом заполняется вся таблица. Более конкретно - см. синтаксис SQL запроса Update в документации по Firebird. Мороки будет очень много по переводу, там и синтаксис SQL разный и архитектура и логика работы.
Это проблема архитектуры. Первая и вторая из приведенных вами таблиц должны быть сопоставлены по полям ID. Т.е. Иванов если он под номером 3 в первой таблице он должен идти и под номером 3 во второй таблицы. Вы не должны предоставлять пользователю возможность редактировать что угодно где угодно, и не должны давать редактировать поле ID, чтобы реализовать это вы должны: 1. Отказаться от DBGrid как метода ввода данных пользователем 2. ПОказывать пользователю форму с обычными или DB компонентами типа TEdit или TDBEdit - пусть вводит свои данные. Если использовать DB компоненты, то надо сначала позиционировать запись именно на конкретного человека и пусть заполняет, а если обычные компоненты, то по нажатию кнопки Save сохранить введенные данные под его номером. PS. Ваши проблемы начались с того самого момента как вы поставили DBGrid на форму. Удалите его, и вы сможете наконец начать работать с базой данных по нормальному. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||
|
|||||
| AKN |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.11.2005 Репутация: нет Всего: нет |
Vit, огромное спасибо за качественный и полный ответ. Тема закрыта. Всем спасибо.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |