Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

после выполнения SQL запроса результат не отображается [D7, Paradox]


Страницы:   1 2 3 4

Алексей ©   (2004-08-09 13:35:00) 

Здравствуйте.
Собственно это и есть вопрос. После выполнения SQL запроса результат не отображается в DBGrid. Даже столбцов становится не видно, как будто нет подключения к базе данных. Тоесть когда программа запускается, то всё работает как задано в начале на этапе разработки, а потом, когда меняю SQL запрос програмно, в  DBGrid ничего не видно.
DataModule2.Query1.Close;
DataModule2.Query1.SQL.Clear;
DataModule2.Query1.SQL.Add('SELECT M.id');
DataModule2.Query1.SQL.Add('FROM "Main_FIO.db" As M, "Adress.db" As A, "Pasport.db" As P, "Rozisknoe_Delo.db" As RD');
DataModule2.Query1.SQL.Add('WHERE ' + s_GreatFilter + ';');
DataModule2.Query1.Open;
Здесь s_GreatFilter програмно созданное условие запроса типа M.DataRojdeniya = "31.12.2000".
Нужно отобрать ключевые поля M.id записей таблицы Main_FIO.db отвечающих заданному условию s_GreatFilter .
Что я делаю неправильно?


Алексей   (2004-08-09 18:23:00) [1]

В общем, в итоге понятен принцип (а причину определит время) как оживить мой грид. Большое спасибо всем кто откликнулся и помогал решать мою проблему. Было очень приятно с Вами общаться. Если в коде запроса что я привёл увидите ошибку, если не трудно, отпишите на мыло или здесь. До свидания.


Алексей   (2004-08-09 18:02:00) [2]

Для Соловьев ©
ну...
>Close;
а как редактировать SQL на открытой таблице?
>если ты накладываешь условие на таблицы, то накладывай и на список таблиц
это про какие условия?


Алексей   (2004-08-09 17:59:00) [3]

и если можно синтаксис для LIKE чтобы определять совпадения по части слова, как его в программе записать
поле LIKE "%слово%"
правильно?


Соловьев   (2004-08-09 17:54:00) [4]


> Close;

Зачем?


> SQL.Add('FROM "Main_FIO.db" As M, "Adress.db" As A, "Pasport.db"
> As P, "Rozisknoe_Delo.db" As RD');

если ты накладываешь условие на таблицы, то накладывай и на список таблиц


Алексей   (2004-08-09 17:50:00) [5]

Вот сам код запроса, у меня некоторые его части закоментированы, искал ошибку


procedure TForm6.Button1Click(Sender: TObject);
var
s_GreatFilter, s_Filter: String;
begin
s_GreatFilter := '';
Button1.Enabled := False;
//-------------------------------
//-------------------------------
//Работаем с таблицей Main_FIO
//
If Form6.Edit1.Text <> '' then if s_GreatFilter <> '' then s_GreatFilter :=
 s_GreatFilter + ' AND' + '(' + 'M.Familiya = ' + Form6.Edit1.Text + ')'
else s_GreatFilter := '(' + 'M.Familiya = ' + Form6.Edit1.Text + ')';

If Form6.Edit2.Text <> '' then if s_GreatFilter <> '' then s_GreatFilter :=
 s_GreatFilter + ' AND' + '(' + 'M.Imiya LIKE "%' + Form6.Edit2.Text + '%"' + ')'
else s_GreatFilter := '(' + 'M.Imiya LIKE "%' + Form6.Edit2.Text + '%"' + ')';

If Form6.Edit3.Text <> '' then if s_GreatFilter <> '' then s_GreatFilter :=
 s_GreatFilter + ' AND ' + '(' + 'M.Pol LIKE "' + Form6.Edit3.Text + '"' + ')'
else s_GreatFilter := '(' + 'M.Pol LIKE "' + Form6.Edit3.Text + '"' + ')';
If Form6.DateTimePicker1.Checked = true then If Form6.DateTimePicker2.Checked = false
then begin
  if s_GreatFilter <> '' then s_GreatFilter := s_GreatFilter + ' AND ' + '(' +
   'M.DataRojdeniya = ' + '"' + FormatDateTime('dd.mm.yyyy',Form6.DateTimePicker1.Date) +
    '"' + ')'
  else s_GreatFilter := '(' + 'M.DataRojdeniya = ' + '"' +
   FormatDateTime('dd.mm.yyyy',Form6.DateTimePicker1.Date) + '"' + ')'
 end else begin
  if s_GreatFilter <> '' then s_GreatFilter := s_GreatFilter + ' AND ' + '(' +
   'M.DataRojdeniya <=' + '"' + FormatDateTime('dd.mm.yyyy',Form6.DateTimePicker1.Date) + '"' +
    ' AND ' + 'M.DataRojdeniya >=' + '"' + FormatDateTime('dd.mm.yyyy',Form6.DateTimePicker2.Date)
     + '"' + ')'
  else s_GreatFilter := '(' + 'M.DataRojdeniya <=' + '"' +
   FormatDateTime('dd.mm.yyyy',Form6.DateTimePicker1.Date) + '"' + ' AND ' +
    'M.DataRojdeniya >=' + '"' + FormatDateTime('dd.mm.yyyy',Form6.DateTimePicker2.Date) +
     '"' + ')';
 end;

//-------------------------------
//Закончили работу с таблицей Main_FIO
//
//Начинаем работу с таблицей Adres
//
If Form6.Edit9.Text <> '' then if s_GreatFilter <> '' then s_GreatFilter :=
 s_GreatFilter + ' AND ' +  '(' + 'A.A_TipAdresa LIKE "' + Form6.Edit9.Text + '"' +
  ' AND ' + 'M.id = A.A_Main_id' + ')'
else s_GreatFilter := '(' + 'A.A_TipAdresa LIKE "' + Form6.Edit9.Text + '"' +
 ' AND ' + 'M.id = A.A_Main_id' + ')';
If Form6.Edit10.Text <> '' then if s_GreatFilter <> '' then s_GreatFilter :=
 s_GreatFilter + ' AND ' +  '(' + 'A.A_NasPunkt LIKE "' + Form6.Edit10.Text + '"' +
  ' AND ' + 'M.id = A.A_Main_id' + ')'
else s_GreatFilter := '(' + 'A.A_NasPunkt LIKE "' + Form6.Edit10.Text + '"' +
 ' AND ' + 'M.id = A.A_Main_id' + ')';
If Form6.Edit11.Text <> '' then if s_GreatFilter <> '' then s_GreatFilter :=
 s_GreatFilter + ' AND ' +  '(' + 'A.A_Adres LIKE "' + Form6.Edit11.Text + '"' +
  ' AND ' + 'M.id = A.A_Main_id' + ')'
else s_GreatFilter := '(' + 'A.A_Adres LIKE "' + Form6.Edit11.Text + '"' +
 ' AND ' + 'M.id = A.A_Main_id' + ')';
If Form6.Edit12.Text <> '' then if s_GreatFilter <> '' then s_GreatFilter :=
 s_GreatFilter + ' AND ' +  '(' + 'A.A_Dom LIKE "' + Form6.Edit12.Text + '"' +
  ' AND ' + 'M.id = A.A_Main_id' + ')'
else s_GreatFilter := '(' + 'A.A_Dom LIKE "' + Form6.Edit12.Text + '"' +
 ' AND ' + 'M.id = A.A_Main_id' + ')';
If Form6.Edit13.Text <> '' then if s_GreatFilter <> '' then s_GreatFilter :=
 s_GreatFilter + ' AND ' +  '(' + 'A.A_Kvartira LIKE "' + Form6.Edit13.Text + '"' +
  ' AND ' + 'M.id = A.A_Main_id' + ')'
else s_GreatFilter := '(' + 'A.A_Kvartira LIKE "' + Form6.Edit13.Text + '"' +
 ' AND ' + 'M.id = A.A_Main_id' + ')';
If Form6.Edit14.Text <> '' then if s_GreatFilter <> '' then s_GreatFilter :=
 s_GreatFilter + ' AND ' +  '(' + 'A.A_Telefon LIKE "' + Form6.Edit14.Text + '"' +
  ' AND ' + 'M.id = A.A_Main_id' + ')'
else s_GreatFilter := '(' + 'A.A_Telefon LIKE "' + Form6.Edit14.Text + '"' +
 ' AND ' + 'M.id = A.A_Main_id' + ')';
//Закончили работу с таблицей Adres
//
//Начинаем работу с таблицей Pasport
//
...
...
...

//Записываем полученное условие отбора в запрос Query1 и передаём в фильтр Main_FIO
//
If s_GreatFilter <> '' then
with DataModule2.Query1 do
  begin
      if active then Close;
      SQL.Clear;
      SQL.Add('SELECT M.id');
      SQL.Add('FROM "Main_FIO.db" As M, "Adress.db" As A, "Pasport.db" As P, "Rozisknoe_Delo.db" As RD');
      SQL.Add('WHERE ' + s_GreatFilter);
      Open;
  end;
 begin
end;
//смотрю текст SQL запроса
Form1.Memo2.Text := DataModule2.Query1.SQL.Text;
//------------------------------------------------------------------------------
Close;
end;


Примерно так


Алексей   (2004-08-09 17:40:00) [6]

Много лишних таблиц?


Алексей   (2004-08-09 17:37:00) [7]

И что там не так?


Алексей   (2004-08-09 17:35:00) [8]

Ой... В Первый раз "Формируем условия поиска и присваиваем результат переменной s_GreatFilter" этого там нет, этол дальше.
Сам запрос с Вашими кнопками работает корректно.


Соловьев   (2004-08-09 17:34:00) [9]


> DataModule2.Query1.SQL.Add('FROM "Main_FIO.db" As M, "Adress.db"
> As A, "Pasport.db" As P, "Rozisknoe_Delo.db" As RD');

DataModule2.Query1.SQL.Add('FROM "Main_FIO.db" As M');


Алексей   (2004-08-09 17:33:00) [10]

Соловьев ©
По Вашим кнопочкам всё заработало, а мой запрос раньше выглядел так
Формируем условия поиска и присваиваем результат переменной s_GreatFilter
DataModule2.Query1.Close;
DataModule2.Query1.SQL.Clear;
DataModule2.Query1.SQL.Add('SELECT M.id');
DataModule2.Query1.SQL.Add('FROM "Main_FIO.db" As M, "Adress.db" As A, "Pasport.db" As P, "Rozisknoe_Delo.db" As RD');

Формируем условия поиска и присваиваем результат переменной s_GreatFilter

DataModule2.Query1.SQL.Add('WHERE ' + s_GreatFilter + ';');
DataModule2.Query1.Open;
в таком порядке.


Соловьев   (2004-08-09 17:24:00) [11]

проги, ну и запросов


Алексей   (2004-08-09 17:21:00) [12]

Всего Запроса?


Соловьев   (2004-08-09 17:17:00) [13]

код приведи ввесь


Алексей   (2004-08-09 17:09:00) [14]

А... так там я уже убрал нафиг... всё равно убивает... киллер я наверное профессиональный... факт... чтото я намудрил с обращением к квери, может Соловьев © подскажет, а то я уже не врубаюсь сам...


Алексей   (2004-08-09 17:05:00) [15]

и что прикольно... эти кнопочки и мой грид оживляют (а старая по прежнему убивает)


Sergey13   (2004-08-09 17:02:00) [16]

2[49] Алексей   (09.08.04 16:58)
>А где там прописал? Нет вроде...
Двойной клик на квери


Алексей   (2004-08-09 16:58:00) [17]

Для Sergey13 ©
А где там прописал? Нет вроде...


Sergey13   (2004-08-09 16:52:00) [18]

2[46] Алексей   (09.08.04 16:48)
>так в гриде я дизайн и не прописывал
А в датасете?


Алексей   (2004-08-09 16:50:00) [19]

Для Соловьев ©
если можно, вчём точно моя ошибка, хотелось бы понять, а не тупо скопировать код кнопки.


Алексей   (2004-08-09 16:48:00) [20]

Для Sergey13 ©
так в гриде я дизайн и не прописывал. а в примере Уважаемого Соловьев © всё работает.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо