Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Delphi 7 вывести в DBGrid те записи,которые соответствуют условию из StringGrid  (Прочитано 18398 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ягодка
Читатель

ru
Offline Offline

« : 26-02-2013 15:33 » 

Добрый вечер, уважаемые программисты!  Прошу любить и жаловать
Имеется: результат выполнения процедуры, который выводится в StringGrid



А также DBGrid, который содержит все данные о поставщиках



А также имеется кнопка "Получить данные о надёжных поставщиках". При нажатии на эту кнопку в новом, "чистом" DBGrid должны появиться данные только о тех поставщиках, которые в StringGrid выделены зелёным цветом и являются надёжными. Делается это через запрос, но каково условие отбора... Нет идей  А черт его знает... Ведь "ненадёжные" поставщики должны отсекаться...

Код: (Delphi)
procedure TForm1.BitBtn127Click(Sender: TObject); {кнопка Получить данные надёжных поставщиков}
begin
ADOQuery24.Active:=False;
ADOQuery24.Close;
ADOQuery24.SQL.Clear;
ADOQuery24.SQL.Add('SELECT * FROM Поставщик');
ADOQuery24.SQL.Add('WHERE [Наименование поставщика]='+ '"'+StringGrid8[2,i]+'"');
ADOQuery24.ExecSQL;
ADOQuery24.Open;
end;
Понятное дело, что код неверный и Дельфи ругается матом "Class does not have a default property" на строчку
Код: (Delphi)
ADOQuery24.SQL.Add('WHERE [Наименование поставщика]='+ '"'+StringGrid8[2,i]+'"');
Но я честно не знаю, как построить запрос и получить нужный результат Жаль

* 1.png (18.9 Кб - загружено 4256 раз.)
* 2.png (26.73 Кб - загружено 4297 раз.)
« Последнее редактирование: 26-02-2013 16:17 от Джон » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 26-02-2013 16:49 » 

Код: (SQL)
SELECT t1.id, t1.name, t1.address
FROM table1 AS t1, table2 AS t2
WHERE t1.some_id = t2.some_id
ORDER BY t1.name

Учи теорию.
https://club.shelek.ru/view.php?id=15
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Гость
« Ответ #2 : 26-02-2013 17:38 » 

В таблицу Поставщик надо ввести дополнительное поле, обозначающее надежность поставщика. Как я понимаю, оператор вручную в таблицу StringGrid вносит надежность поставщика, вот тут имеет смысл в событии OnSetEditText заполнять поле Надежность в таблице Поставщик.
Записан
Ягодка
Читатель

ru
Offline Offline

« Ответ #3 : 27-02-2013 08:17 » 

Код: (SQL)
SELECT t1.id, t1.name, t1.address
FROM table1 AS t1, table2 AS t2
WHERE t1.some_id = t2.some_id
ORDER BY t1.name

Учи теорию.
https://club.shelek.ru/view.php?id=15

Такую "теорию" я знаю получше вас, и с такой фигнёй сюда бы не обращалась. В STRINGGRID (STRING!!!) попадают записи из DBGRID (DB!!!), эти записи предварительно обработаны алгоритмом кластеризации k-means и именно по результатам этого алгоритма им присваивается "надёжный" или "ненадёжный". Так вот теперь из STRINGGRID нужно запомнить только НАДЁЖНЫХ поставщиков, и из DBGRID вытащить данные об этих НАДЁЖНЫХ поставщиках и занести их в новый DBGRID. А выборкой данных из разных таблиц БД я занималась на 1м курсе. Учись внимательно читать - http://otvety.google.ru/otvety/thread?tid=4d0fca4f2c0208b6

Добавлено через 3 минуты и 24 секунды:
В таблицу Поставщик надо ввести дополнительное поле, обозначающее надежность поставщика. Как я понимаю, оператор вручную в таблицу StringGrid вносит надежность поставщика, вот тут имеет смысл в событии OnSetEditText заполнять поле Надежность в таблице Поставщик.
Спасибо за отклик и неравнодушие, но оператор не вручную вносит надёжность. У меня в программе задействован алгоритм кластеризации k-means и именно после обработки этим алгоритмом в StringGrid'e появляется "вердикт"-надёжный поставщик или нет
« Последнее редактирование: 27-02-2013 08:20 от Ягодка » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 27-02-2013 08:34 » 

Самоуверенность нынешних студентов не знает границ. Тенденция, однако!

Попробуй TDataSet источник+фильтр.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Ягодка
Читатель

ru
Offline Offline

« Ответ #5 : 27-02-2013 08:46 » 

Это вы про Filter - Filtered - Accept и иже с ними? Думали, я упаду в обморок от страшного и неизвестного мне слова "фильтрация"?  Отлично Если бы я сама присваивала этим поставщикам свойство "надёжный"/"ненадежный" - было бы ноу проблем. А тут свойство это им присваивает алгоритм, и всех ненадёжных нужно отсечь. Что-то вроде того:
Код:
if Stringgrid8.Cells[2, i] = 'Надежный' then
запоминаем их и вытаскиваем из таблицы БД "Поставщики" нужную нам информацию о них.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 27-02-2013 08:52 » 

Я в Дельфях не силён, но чисто по-человечески:

Понятное дело, что код неверный и Дельфи ругается матом "Class does not have a default property" на строчку
Код: (Delphi)
ADOQuery24.SQL.Add('WHERE [Наименование поставщика]='+ '"'+StringGrid8[2,i]+'"');

Что есть i? Или она определена за пределами процедуры TForm1.BitBtn127Click? Если так, то нет ли выхода за границы массива? "Дельфи ругается" - кто конкретно? Компилятор? Линковщик?
А что вобще содержится в Stringgrid8? На это можно посмотреть, должно же быть в Дельфях что-то типа TRACE.

Опять же (помним, что я в Дельфях не силён): Stringgrid8.Cells[2, i] не есть StringGrid8[2,i]. Может в строчке надо

Код: (Delphi)
ADOQuery24.SQL.Add('WHERE [Наименование поставщика]='+ '"'+StringGrid8.Cells[2,i]+'"');

Второй вариант с Cells нравится мне больше, есть в нём какая-то логика.

Нууу как-то так.
« Последнее редактирование: 27-02-2013 08:58 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 27-02-2013 09:40 » 

Ягодка, да! Да! Я на это надеялся! Еще что-нибудь скажи! Жжешь

Посерьезней, пожалуйста.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Гость
« Ответ #8 : 27-02-2013 11:12 » 

Цитата
Спасибо за отклик и неравнодушие, но оператор не вручную вносит надёжность. У меня в программе задействован алгоритм кластеризации k-means и именно после обработки этим алгоритмом в StringGrid'e появляется "вердикт"-надёжный поставщик или нет
Ну так и в этот момент, когда в StringGrid'e появляется "вердикт"-надёжный поставщик или нет и надо вносить изменения в таблицу Поставщик в новое поле Надежность.
А по другому имхо, никак.
Записан
Ягодка
Читатель

ru
Offline Offline

« Ответ #9 : 27-02-2013 12:11 » 

Спасибо, буду пробовать Да-да
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines