![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Приветствую.
Прошу помочь по дельфи... Возникла такая проблема: Необходимо сделать программу-базу медикаментов с описаниями. Пользователь её открывает, вводит в поле название медикамента и получает его описание в отдельной форме. Версия дельфи у меня CodeGear Delphi 2007, поэтому с BDE очень геморно. Решил использовать связку ADO&MSACCESS. Написать за меня программу не прошу, только подкинуть пару советов ![]() Базу создал (База: Медикаменты. Поля: Название и Описание). На поле кинул: ADOConnection, ADOQuery, DataSource и DBText для отображения информации. Ну и естественно один TEdit и TButton. Обработчик кнопки сделал таким: Цитата:
Теперь сам вопрос: Как сделать так, чтобы если по базе ничего не нашлось выводилось сообщение? Нужно ли заморачиваться с программой, если придётся переносить её на другой компьютер, как это было с BDE? Или в случае с ADO нужно скопировать только программу и базу? Заранее благодарен всем отписавшим) |
|
#2
|
|||
|
|||
|
1. проверять свойство RecordCount у ADOQuery1
2. нет, надо будет только поменять строку подключения. |
|
#3
|
|||
|
|||
|
Цитата:
Поля в БЛ два: Название и Описание DataField у DBText выставил Описание. Запрос у ADOQuery такой: Цитата:
Если в Edit1 ввести Форте, то в DBText ничего не выводится. А если написать "Повышает" (т.е начало полного описания), то в DBText появляется полное значение поля Описание... Быть может я запрос неправильно составил или значения не правильно выставил? В дельфи опыта практически нет, поэтому прошу сильно не пинать Цитата:
![]() |
|
#4
|
|||
|
|||
|
Допёр самостоятельно, из-за чего собственно и рад
![]() Запрос должен быть таким: Цитата:
|
|
#5
|
|||
|
|||
|
C RecordCount тоже разобрался:
Цитата:
![]() |
|
#6
|
|||
|
|||
|
Следующая проблема появилась быстрее, чем я ожидал
![]() В общем нужно сделать список всех медикаментов, которые находятся в базе (как слева в chemax, т.е поле с списком и вертикальным скроллом. При клике на одну из записей выводится информация из поля БД "Описание" в DBMemo). Какой компонент лучше использовать для организации такого списка и можете привести примерчик функции, которая выведет все названия из поля "Название" в компонент? Последний раз редактировалось BlackEvil, 13.03.2009 в 19:38. |
|
#7
|
|||
|
|||
|
Немного продвинулся
![]() Для списка, насколько я понимаю, используют DbListBox. Сделал так: Цитата:
Что поставить в строке: Цитата:
|
|
#8
|
||||
|
||||
|
Я смотрю вы тихо сами с собой разговариваете, и находите ответы на ваши вопросы. Может вам лучше ничего не подсказывать, вы сами все найдете?
|
|
#9
|
|||
|
|||
|
Цитата:
Не получается...Да и информации как таковой не нашел.. Буду очень признателен, если подскажете ![]() |
|
#10
|
||||
|
||||
|
Добро.
Если вы хотите выводить все строки вашего запроса возвращаемые скажем для столбца 0, то идет обход записей возвращенных запросом: Вариант первый -через Form1.ADOQuery1.RecordCount получить количество записей. Код:
for i := 0 to Form1.ADOQuery1.RecordCount-1
do begin
dblistbox1.items.add(ADOQuery1.Fields[0].AsString);
Form1.ADOQuery1.Next;
end;
или же, что более правильно при работе с набором данных:
while not Form1.ADOQuery1.eof
do begin
dblistbox1.items.add(ADOQuery1.Fields[0].AsString);
Form1.ADOQuery1.Next;
end;А вообще, я бы рекомендовал использовать для этих целей TDbLookupListBox, для него ничего ручками заполнять не требуется. Последний раз редактировалось Admin, 14.03.2009 в 16:14. |
|
#11
|
|||
|
|||
|
Страдалецъ
Большое спасибо! Пашет ![]() Цитата:
Я честно говоря между ними разницу не усекаю( Мне нужно, чтобы при клике на один из пунктов ListBox в поле DBMemo выводилась информация из поля "Описание". Насчет щелчка и его обработки думаю разберусь... А вот что лучше использовать DBListBox или DBLookUpListBox? ![]() |
|
#12
|
||||
|
||||
|
Разница в том, что TDBListbox - предполагает внесение в БД значения выбранного из пользовательского списка. Т.е. обычно список не хранится в БД.
А вот DBLookupListBox как раз заполняется данными из БД и выбранное значение потом можно занести в БД. Вот и получается, что для вашего примера больше подходит DBLookupListBox |
|
#13
|
|||
|
|||
|
Ух ты
Насколько я понял он сразу согласовывает поля между друг другом (если указать параметры KeyField и ListField). С скроллом и прочим разберусь сам, ибо информации полно) Страдалецъ, большое спасибо за помощь! |