Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2010, 21:37   #1
Andrey85
Пользователь
 
Регистрация: 29.07.2010
Сообщений: 79
По умолчанию Как выбрать нужную запись из DataSet

Здравствуйте!Помогите пожалуйста решить проблему.Есть 3 таблицы:Авторы,Альбомы и песни.Схема во вложении.При открытии формы фокус передается первому автору и соответственно видим все его альбомы и песни.Мне нужно,чтобы выбрав песню правильно определялся альбом,а так сейчас получается при выборе песни выбирается первый альбом,который находится в фокусе. Заранее спасибо.
Изображения
Тип файла: jpg схема.jpg (12.2 Кб, 171 просмотров)
Andrey85 вне форума Ответить с цитированием
Старый 24.10.2010, 21:56   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну, например, при выборе песни сделать
Код:
Sound_Album.Locate('Id_Album', Sound_Pesni.FieldByName('Id_Album').Value, []);
mihali4 вне форума Ответить с цитированием
Старый 24.10.2010, 22:07   #3
Andrey85
Пользователь
 
Регистрация: 29.07.2010
Сообщений: 79
По умолчанию

Я использую ADOQUERY. Можно поподробнее,пожалуйста.

Мне нужно вернуть не идентификатор альбома,а по идентификатору название альбома.

Последний раз редактировалось artemavd; 25.10.2010 в 03:18.
Andrey85 вне форума Ответить с цитированием
Старый 24.10.2010, 22:22   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
ADOQUERY.Locate('<имя_поля>', <значение>, [LocateOption]);
Что в переводе означает:
Перейти в ADOQUERY в поле <имя_поля> на значение <значение>.
Поле, как правило, должно быть уникальным.
LocateOption могут принимать значения:
loCaseInsensitive - не учитывать регистр
loPartialKey - частичные совпадения

PS. Имхо, странная у тебя структура БД...
1. Свяжи Автора с входящими в него альбомами
2. Свяжи альбом с входящими в него песнями. И все.

Последний раз редактировалось _SERGEYX_; 24.10.2010 в 22:32.
_SERGEYX_ вне форума Ответить с цитированием
Старый 24.10.2010, 22:34   #5
Andrey85
Пользователь
 
Регистрация: 29.07.2010
Сообщений: 79
По умолчанию

Написал так QueryAllPesni.Locate('Id_Album',Que ryAllPesni.DataSource.DataSet.Field ByName('Albom').asstring ,[]);
Не работает,пишет ошибку.
Andrey85 вне форума Ответить с цитированием
Старый 24.10.2010, 22:40   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Ну, Михалыч же правильно написал...
При выборе песни напиши
Код:
//Перейти на связанный альбом
Sound_Album.Locate('Id_Album', Sound_Pesni.FieldByName('Id_Album').Value, []);
//Перейти на связаного автора
Sound_Avtor.Locate('Id_Avtor', Sound_Album.FieldByName('Id_Avtor').Value, []);
_SERGEYX_ вне форума Ответить с цитированием
Старый 24.10.2010, 23:19   #7
Andrey85
Пользователь
 
Регистрация: 29.07.2010
Сообщений: 79
По умолчанию

У меня след. код
Код:
QueryAllPesni.Locate('ID_Albom',GridPesni.DataSource.DataSet.FieldByName('ID_Albom').AsInteger,[]);
Name_Albom:=QueryAllPesni.DataSource.DataSet.FieldByName('Albom').AsString;
где QueryAllPesni-запрос Select * from Sound_Albom;
Name_Albom-переменная в которой нужно получить название альбома;
GridPesni-это грид,где выбираю песню;

Ругается,выдает ошибку Access violation at address 005E498C in modul...

Помогите,что не так.

У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Модератор

Последний раз редактировалось mihali4; 24.10.2010 в 23:33.
Andrey85 вне форума Ответить с цитированием
Старый 24.10.2010, 23:35   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да что ж за дебилизм-то ?
Локейтить нужно не в песнях, а в альбомах !
Сто раз уже написали правильные варианты !
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBLookupComboboxEh: пустое значение, выбрать нужную запись new player Компоненты Delphi 2 15.10.2010 10:36
Как выбрать запись с последней датой? Какой это запрос? Bendebej SQL, базы данных 3 23.03.2010 12:17
Как прочесть нужную запись из таблицы Access? 0xy Microsoft Office Access 10 10.03.2010 20:21
Как выбрать последнюю запись в таблице? Yur@ БД в Delphi 11 30.12.2009 18:11
как удалить нужную запись из БД doncova1 БД в Delphi 4 20.12.2006 23:35