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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2009, 01:03   #1
Arizonec
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 17
По умолчанию ADO. Поиск по БД. Запросы. Спасайте, курсовая.

Код:
procedure TForm6.PageControl1Change(Sender: TObject);
begin
 case PageControl1.ActivePageIndex of  
  0:       
     begin
      DBGrid2.DataSource:=DataModule1.DataSource1; 
      end;
  1: begin 
      DBGrid1.DataSource:=nil;
      ComboBox1.Items:=Form3.ComboBox1.Items;
      ComboBox2.Items:=Form5.ComboBox1.Items; 
      ComboBox1.Text:='Выберите состояние';
      ComboBox2.Text:='Выберите отделение';
      Label3.Caption:='';  
     end;
  end;
end;

procedure TForm6.Button1Click(Sender: TObject);
begin
 DataModule1.Table1.IndexFieldNames:='ФИО';     
end;


procedure TForm6.Button2Click(Sender: TObject);
begin
if ((ComboBox1.Text='') or (ComboBox2.Text=''))then
case MessageDlg('Введите все данные ',mtError,[mbAbort],0) of
idAbort:abort;
end;
DataModule1.ADOQuery1.Active:=false;
DataModule1.ADOQuery1.SQL.Clear;
with DataModule1.ADOQuery1 do
 begin
  SQL.Add('SELECT *');
  SQL.Add('From Таблица1,Таблица2');
  SQL.Add('WHERE Отеделение ="'+ComboBox1.Text+'" and Состояние="'+ComboBox2.Text+'"');
  SQL.Add('ORDER BY ФИО');
 end;
DataModule1.DataSource3.DataSet:=DataModule1.ADOQuery1;
DBGrid1.DataSource:=DataModule1.DataSource3;
DataModule1.ADOQuery1.Active:=true;
PageControl1.ActivePage:=TabSheet2;
end;

procedure TForm6.FormCreate(Sender: TObject);
begin
PageControl1.ActivePage:=TabSheet1;
end;
Выкидывает ошибку, что параметр состояние не имеет начального значения. К сведению: DataSource3 - пустой, не привязан ни к какой таблице.
Arizonec вне форума Ответить с цитированием
Старый 29.12.2009, 02:02   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Несколько странный запрос. Выборка с использованием двух таблиц, но без алиасов этих таблиц. Интересно, откуда SQL серверу знать в какой таблице находятся поля "Отеделение" и "Состояние". Здесь даже по тексту неясно что к чему относится.
Код:
'... from Таблица1 Т1, Таблица2 Т2 where T1.Отделение='+QuotedStr(ComboBox1.Text)+
' and T2.Состояние='+QuotedStr(ComboBox2.Text)
Хотя бы так счастья попытать.
И еще, т.к. связи между таблицами в предложении where не наблюдается, то запрос вернет данные из двух таблиц с количеством строк = (Кол.строк в Таблица1)*(Кол.строк в Таблица2). И кому такой результат запроса нужен?
Скандербег вне форума Ответить с цитированием
Старый 29.12.2009, 07:46   #3
Arizonec
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 17
По умолчанию

Код:
'... from Таблица1 Т1, Таблица2 Т2 where T1.Отделение='+QuotedStr(ComboBox1.Text)+
' and T2.Состояние='+QuotedStr(ComboBox2.Text)
Тоже не прошло))

"И еще, т.к. связи между таблицами в предложении where не наблюдается, то запрос вернет данные из двух таблиц с количеством строк = (Кол.строк в Таблица1)*(Кол.строк в Таблица2). И кому такой результат запроса нужен?"
- Есть такая беда, когда не ставишь условия - выводит каждую запись по 10 раз. Собсно в этом и вопрос: как осуществить правильно?))
Arizonec вне форума Ответить с цитированием
Старый 29.12.2009, 09:06   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Цитата:
Сообщение от Arizonec Посмотреть сообщение
Тоже не прошло))
- Есть такая беда, когда не ставишь условия - выводит каждую запись по 10 раз. Собсно в этом и вопрос: как осуществить правильно?))
При такой скудной информации можно ли чего-то сказать.
Что значит "не прошло"?
И нельзя ли дать структуру таблиц?
Иначе остается только теоритезировать. А теории полно и в инете, и в книгах. Не пересказывать же здесь все о там, как составлять SQL запросы.

Последний раз редактировалось Скандербег; 29.12.2009 в 09:11.
Скандербег вне форума Ответить с цитированием
Старый 29.12.2009, 15:31   #5
Arizonec
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 17
По умолчанию

Разобрался. Работал и мой изначальный запрос, поле в таблице было названо неправильно. Ну и пришлось добавить связку двух таблиц в запросе, к where прикрутил сравнение айдишников из двух таблиц. Хотя, все же, работает не совсем корректно, зато работает))
Arizonec вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Народ спасайте С++ Jlexa Помощь студентам 0 21.06.2009 10:00
Поиск в Ado Table dani92 БД в Delphi 5 16.04.2009 16:21
"Поиск решений" Excel Спасайте Maxton Microsoft Office Excel 6 18.02.2009 07:54
Access + ADO + Delphi = Поиск по базе vicvtor БД в Delphi 35 10.02.2009 11:00
Спасайте,проггеры,нуба GitaRist123 Операционные системы общие вопросы 2 09.10.2008 15:26