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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.10.2009, 17:44   #11
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
С одним DBComboBox'ом справилась. Вот так:

1. Здесь загружаем всех производителей из БД:
Код:
procedure TEquipForm.FormShow(Sender: TObject);
begin
DBComboBox1.Items.Clear;
DataModule1.NameQuery.Active:=False;
DataModule1.NameQuery.SQL.Clear;
DataModule1.NameQuery.SQL.Add('SELECT distinct Производитель FROM Cat_Table');
DataModule1.NameQuery.Active:=True;
DataModule1.NameQuery.First;
 while not DataModule1.NameQuery.Eof do
   begin
   DBComboBox1.Items.Add(DataModule1.NameQuery.FieldByName('Производитель').AsString);
   DataModule1.NameQuery.Next;
   end;
end;
этого не нужно делать, для dbcombobox1 и dbcombobox2 указываете dataset, а затем fieldname в его свойствах.
©Учиться, учиться и еще раз учиться!

Последний раз редактировалось quit; 22.10.2009 в 17:48.
quit вне форума
Старый 23.10.2009, 09:22   #12
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Цитата:
Сообщение от quit Посмотреть сообщение
этого не нужно делать, для dbcombobox1 и dbcombobox2 указываете dataset, а затем fieldname в его свойствах.
Если указывать просто Dataset и FieldName, то в итоге в DBComboBox'е только один из всех производителей, только первая строка. Проверяла...
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума
Старый 23.10.2009, 10:52   #13
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Ребята, подскажите, пожалуйста, как правильно организовать запрос, чтобы поиск происходил по двум параметрам. Вот мой код:

Код:
procedure TEquipForm.DBComboBox2Change(Sender: TObject);
begin
DBGrid1.Visible:=False;
DataModule1.ADOQuery1.Active:=False;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('SELECT *');
DataModule1.ADOQuery1.SQL.ADD('FROM Cat_Table');
DataModule1.ADOQuery1.SQL.Add('WHERE Производитель=''+DBComboBox1.Text+''AND Товар=''+DBComboBox2.Text+''');
DataModule1.ADOQuery1.Active:=True;
DBGrid2.Visible:=True;
end;
Но в итоге в таблице вообще ни одной позиции не остается! Помогите!
If you wanna make the world a better place take a look at yourself and then make a change!

Последний раз редактировалось monushka; 23.10.2009 в 11:41.
monushka вне форума
Старый 23.10.2009, 12:00   #14
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
Но в итоге в таблице вообще ни одной позиции не остается! Помогите!
Что во время вызова запроса находится в тексте, бесполезных для данного случая, комбобоксов?
©Учиться, учиться и еще раз учиться!
quit вне форума
Старый 23.10.2009, 12:08   #15
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

чота ощущение что не хватает где-то апострофа
для наглядности нужно вывести текст запроса куда-нить в мемо
soleil@mmc вне форума
Старый 23.10.2009, 14:33   #16
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
чота ощущение что не хватает где-то апострофа
для наглядности нужно вывести текст запроса куда-нить в мемо
Да, неправильно были одинарные кавычки расставлены... Спасибо!

А как можно копировать данные той строки, которая сейчас выделена в DBGrid'е? К примеру, я выбираю 5 позицию в DBGrid'е, т.е. 5 строку. И при нажатии на кнопку "Добавить" данные этой строки должны скопировать в другую таблицу. Я вот не знаю. Если использовать еще один DBGrid, то нужно создавать еще одну таблицу в Accesse или как? Или копировать лучше в StringGrid в таком случае? И как?
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума
Старый 23.10.2009, 15:09   #17
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
Сообщение от monushka Посмотреть сообщение
Да, неправильно были одинарные кавычки расставлены... Спасибо!

А как можно копировать данные той строки, которая сейчас выделена в DBGrid'е? К примеру, я выбираю 5 позицию в DBGrid'е, т.е. 5 строку. И при нажатии на кнопку "Добавить" данные этой строки должны скопировать в другую таблицу. Я вот не знаю. Если использовать еще один DBGrid, то нужно создавать еще одну таблицу в Accesse или как? Или копировать лучше в StringGrid в таком случае? И как?
Здесь способов очень много, смотря что Вы хотите делать в дальнейшем с теми данными которые добавляете в любом случае придется оперировать ADOQuery.FieldByName или Fields
©Учиться, учиться и еще раз учиться!
quit вне форума
Старый 23.10.2009, 15:18   #18
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Цитата:
Сообщение от quit Посмотреть сообщение
Здесь способов очень много, смотря что Вы хотите делать в дальнейшем с теми данными которые добавляете в любом случае придется оперировать ADOQuery.FieldByName или Fields
Меня интересует, есть ли у ADOQuery свойство на подобие OnFocus или что-то в этом роде, которое бы определяло выделенную в данный момент строку.
Вообще задумка такая:
- есть таблица со следующими данными: Производитель, Товар, Характеристики, Стоимость.
- по этой таблице осуществляется поиск по Производителю и Товару.
- по результатам поиска нужно организовать возможность выбора одного (или нескольких) варианта. Т.е. нашло мне, к примеру, 3 типа товара, мне подходит один и я выделяю эту строку. Потом по нажатию на кнопку "добавить" она должна добавиться в StringGrid (или куда-то в другое место). В этом СтрингГриде есть еще один столбец, в котором я ввожу необходимое количество данного товара. Потом хочется вывести все это в отчет в QuickReport или Excel с итоговой суммой денег по позициям. Вот...

Я сейчас пока разобралась, как выводить результаты поиска в СтрингГрид, но выводится вся таблица:

Код:
DataModule1.FindQuery.First;
 i:=1;
 while not DataModule1.FindQuery.Eof do begin
  for j:=1 to DataModule1.FindQuery.FieldCount-1 do
  SG1.Cells[j-1,i]:=DataModule1.FindQuery.Fields[j].AsString;
  i:=i+1;
  DataModule1.FindQuery.Next;
 end;
А мне нужно только определенную строку, но свойство, которое бы это определяло, я не знаю... Может есть мысли на сей счет?
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума
Старый 23.10.2009, 15:34   #19
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
А мне нужно только определенную строку, но свойство, которое бы это определяло, я не знаю... Может есть мысли на сей счет?
еще раз повторяю, если Вы используете DBGrid то тогда достаточно обратиться
Код:
DataModule1.FindQuery.FieldByName('имя поля').As[Нужный вам тип]
- здесь будет хранится значение поля на строке,где стоит фокус
©Учиться, учиться и еще раз учиться!
quit вне форума
Старый 23.10.2009, 15:39   #20
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

у ADOQuery, как и у любой квери, есть понятие текущей позиции
собсна к ней ты и обращаешься когда делаешь вызов
Код:
DataModule1.FindQuery.Fields[0].AsString
хочешь по номеру, хочешь по имени

про копирование значений:
если у тебя есть дбгрид, в котором ты листаешь датасет, то для переноса данных из текущей позиции нужно всего-то написать в обработчик нечто такое
Код:
SG1.Cells[1,1]:=DataModule1.FindQuery.Fields[3].AsString;
// или такое
SG1.Cells[1,1]:=DataModule1.FindQuery.FieldByName('field_3').AsString;
номера ячеек в стринггриде, номер и название поля из датасета подберешь исходя из своей задачи


З.Ы.: неделя норкомании продолжается...
soleil@mmc вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста сделать поиск по базе данных в форме! Access 2003 LilijaSt Microsoft Office Access 19 25.12.2010 10:13
Не могу организовать поиск! teenboy БД в Delphi 3 03.05.2010 17:17
База данных Access Xeon332 Помощь студентам 5 19.01.2009 03:13
База данных приделать поиск demon9999 Помощь студентам 0 03.06.2008 00:26
как организовать поиск по дате... Pitbull БД в Delphi 18 24.06.2007 22:28