Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение номера ключевого поля 
V
    Опции темы
igorz89
Дата 5.5.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2008

Репутация: нет
Всего: нет



Допустим,  у нас на форме отображена таблица (sql) с использованием DBGrid (ключевые поля не выведены). Можно в Дельфи получить значение ключевого поля, просто выделив любую ячейку, не используя запрсы SQL? 
PM MAIL   Вверх
vovk
Дата 5.5.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 28.2.2008

Репутация: 6
Всего: 6



Если поля есть в датасете (какой там у вас не знаю TQuery, TIBQuey, Tdataset в общем не важно) , а в гриде просто скрыты то конечно да. Если же вы не запрашивали данные по этим полям то нет. Хотя если написать допустим хранимую процедуру которая вернёт вам эти данные.... А вообще без обращения к базе никак..

Это сообщение отредактировал(а) vovk - 5.5.2009, 15:22
PM MAIL   Вверх
insoft
Дата 5.5.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 14.2.2007
Где: Тюменская область , г.Тобольск

Репутация: 3
Всего: 3



Код

id := DataSet.FieldByName('id').asInteger

как ты отображаешь НД в гриде? через TTable или через TQuery?
PM MAIL WWW   Вверх
igorz89
Дата 5.5.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2008

Репутация: нет
Всего: нет



У меня 3 компонента: query1, datasource1 и dbgrid1. Сам запрос находится в query1, у datasource1 в свойстве dataset указан этот самый query1, а у dbgrid1 в свойстве datasource указан  datasource1. 
Вот, допустим, таблица "sotrudniki", в ней 2 поля: id(первичный ключ) и name:
id name
1   Вася
2   Федя
3   Паша
4   Саша
Я пишу запрос select name from sotrudniki, мне все выводит как надо без id. Теперь я выделяю, допустим имя Паша, и хочу узнать его id, но при этом не используя запроса типа select id from sotrudniki where name='Паша'. Вот собственно в этом вопрос.

Это сообщение отредактировал(а) igorz89 - 5.5.2009, 15:42
PM MAIL   Вверх
vovk
Дата 5.5.2009, 15:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 28.2.2008

Репутация: 6
Всего: 6



Особо не напрягайтесь если в запросе не указывали поле ID то и данных соответственно нет.
PM MAIL   Вверх
igorz89
Дата 5.5.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2008

Репутация: нет
Всего: нет



Так, а если в самом запросе сделать выборку всех полей, но при этом в DBgrid выводить опять же только имя, то тогда как можно получить соответсвующий id выделенному полю?
PM MAIL   Вверх
vovk
Дата 5.5.2009, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 28.2.2008

Репутация: 6
Всего: 6



Если данные в датасете есть, то так как сказал 
insoft, 
в 3 посте самое оно, то есть для вас будет выглядет так
Код

var
id:Integer;
......
.....
....
....

id := query1.FieldByName('id').asInteger

Так на всякий. Мы получим значение поля ID текущей записи Query1. 

Это сообщение отредактировал(а) vovk - 5.5.2009, 16:01
PM MAIL   Вверх
igorz89
Дата 5.5.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2008

Репутация: нет
Всего: нет



vovk, 
insoft, спасибо вам за помощь! 
PM MAIL   Вверх
Akella
Дата 5.5.2009, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(igorz89 @  5.5.2009,  15:49 Найти цитируемый пост)
Так, а если в самом запросе сделать выборку всех полей, но при этом в DBgrid выводить опять же только имя, то тогда как можно получить соответсвующий id выделенному полю? 


неужели нужно повторять?
Цитата(insoft @  5.5.2009,  15:21 Найти цитируемый пост)
id := DataSet.FieldByName('id').asInteger


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0612 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.